@@ -39,6 +39,7 @@ define i16 @test_extract_0(<2 x i16> %a) #0 {
39
39
; COMMON-EMPTY:
40
40
; COMMON-NEXT: // %bb.0:
41
41
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_extract_0_param_0];
42
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
42
43
; COMMON-NEXT: cvt.u32.u16 %r2, %rs1;
43
44
; COMMON-NEXT: st.param.b32 [func_retval0], %r2;
44
45
; COMMON-NEXT: ret;
@@ -54,6 +55,7 @@ define i16 @test_extract_1(<2 x i16> %a) #0 {
54
55
; COMMON-EMPTY:
55
56
; COMMON-NEXT: // %bb.0:
56
57
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_extract_1_param_0];
58
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
57
59
; COMMON-NEXT: cvt.u32.u16 %r2, %rs2;
58
60
; COMMON-NEXT: st.param.b32 [func_retval0], %r2;
59
61
; COMMON-NEXT: ret;
@@ -70,8 +72,9 @@ define i16 @test_extract_i(<2 x i16> %a, i64 %idx) #0 {
70
72
; COMMON-NEXT: .reg .b64 %rd<2>;
71
73
; COMMON-EMPTY:
72
74
; COMMON-NEXT: // %bb.0:
73
- ; COMMON-NEXT: ld.param.b64 %rd1, [test_extract_i_param_1];
74
75
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_extract_i_param_0];
76
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
77
+ ; COMMON-NEXT: ld.param.b64 %rd1, [test_extract_i_param_1];
75
78
; COMMON-NEXT: setp.eq.b64 %p1, %rd1, 0;
76
79
; COMMON-NEXT: selp.b16 %rs3, %rs1, %rs2, %p1;
77
80
; COMMON-NEXT: cvt.u32.u16 %r2, %rs3;
@@ -100,7 +103,9 @@ define <2 x i16> @test_add(<2 x i16> %a, <2 x i16> %b) #0 {
100
103
; NO-I16x2-EMPTY:
101
104
; NO-I16x2-NEXT: // %bb.0:
102
105
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_add_param_0];
106
+ ; NO-I16x2-NEXT: mov.b32 %r1, {%rs1, %rs2};
103
107
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_add_param_1];
108
+ ; NO-I16x2-NEXT: mov.b32 %r2, {%rs3, %rs4};
104
109
; NO-I16x2-NEXT: add.s16 %rs5, %rs2, %rs4;
105
110
; NO-I16x2-NEXT: add.s16 %rs6, %rs1, %rs3;
106
111
; NO-I16x2-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -129,6 +134,7 @@ define <2 x i16> @test_add_imm_0(<2 x i16> %a) #0 {
129
134
; NO-I16x2-EMPTY:
130
135
; NO-I16x2-NEXT: // %bb.0:
131
136
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_add_imm_0_param_0];
137
+ ; NO-I16x2-NEXT: mov.b32 %r1, {%rs1, %rs2};
132
138
; NO-I16x2-NEXT: add.s16 %rs3, %rs2, 2;
133
139
; NO-I16x2-NEXT: add.s16 %rs4, %rs1, 1;
134
140
; NO-I16x2-NEXT: st.param.v2.b16 [func_retval0], {%rs4, %rs3};
@@ -156,6 +162,7 @@ define <2 x i16> @test_add_imm_1(<2 x i16> %a) #0 {
156
162
; NO-I16x2-EMPTY:
157
163
; NO-I16x2-NEXT: // %bb.0:
158
164
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_add_imm_1_param_0];
165
+ ; NO-I16x2-NEXT: mov.b32 %r1, {%rs1, %rs2};
159
166
; NO-I16x2-NEXT: add.s16 %rs3, %rs2, 2;
160
167
; NO-I16x2-NEXT: add.s16 %rs4, %rs1, 1;
161
168
; NO-I16x2-NEXT: st.param.v2.b16 [func_retval0], {%rs4, %rs3};
@@ -172,7 +179,9 @@ define <2 x i16> @test_sub(<2 x i16> %a, <2 x i16> %b) #0 {
172
179
; COMMON-EMPTY:
173
180
; COMMON-NEXT: // %bb.0:
174
181
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_sub_param_0];
182
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
175
183
; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_sub_param_1];
184
+ ; COMMON-NEXT: mov.b32 %r2, {%rs3, %rs4};
176
185
; COMMON-NEXT: sub.s16 %rs5, %rs2, %rs4;
177
186
; COMMON-NEXT: sub.s16 %rs6, %rs1, %rs3;
178
187
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -200,7 +209,9 @@ define <2 x i16> @test_smax(<2 x i16> %a, <2 x i16> %b) #0 {
200
209
; NO-I16x2-EMPTY:
201
210
; NO-I16x2-NEXT: // %bb.0:
202
211
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_smax_param_0];
212
+ ; NO-I16x2-NEXT: mov.b32 %r1, {%rs1, %rs2};
203
213
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_smax_param_1];
214
+ ; NO-I16x2-NEXT: mov.b32 %r2, {%rs3, %rs4};
204
215
; NO-I16x2-NEXT: max.s16 %rs5, %rs2, %rs4;
205
216
; NO-I16x2-NEXT: max.s16 %rs6, %rs1, %rs3;
206
217
; NO-I16x2-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -229,7 +240,9 @@ define <2 x i16> @test_umax(<2 x i16> %a, <2 x i16> %b) #0 {
229
240
; NO-I16x2-EMPTY:
230
241
; NO-I16x2-NEXT: // %bb.0:
231
242
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_umax_param_0];
243
+ ; NO-I16x2-NEXT: mov.b32 %r1, {%rs1, %rs2};
232
244
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_umax_param_1];
245
+ ; NO-I16x2-NEXT: mov.b32 %r2, {%rs3, %rs4};
233
246
; NO-I16x2-NEXT: max.u16 %rs5, %rs2, %rs4;
234
247
; NO-I16x2-NEXT: max.u16 %rs6, %rs1, %rs3;
235
248
; NO-I16x2-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -258,7 +271,9 @@ define <2 x i16> @test_smin(<2 x i16> %a, <2 x i16> %b) #0 {
258
271
; NO-I16x2-EMPTY:
259
272
; NO-I16x2-NEXT: // %bb.0:
260
273
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_smin_param_0];
274
+ ; NO-I16x2-NEXT: mov.b32 %r1, {%rs1, %rs2};
261
275
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_smin_param_1];
276
+ ; NO-I16x2-NEXT: mov.b32 %r2, {%rs3, %rs4};
262
277
; NO-I16x2-NEXT: min.s16 %rs5, %rs2, %rs4;
263
278
; NO-I16x2-NEXT: min.s16 %rs6, %rs1, %rs3;
264
279
; NO-I16x2-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -287,7 +302,9 @@ define <2 x i16> @test_umin(<2 x i16> %a, <2 x i16> %b) #0 {
287
302
; NO-I16x2-EMPTY:
288
303
; NO-I16x2-NEXT: // %bb.0:
289
304
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_umin_param_0];
305
+ ; NO-I16x2-NEXT: mov.b32 %r1, {%rs1, %rs2};
290
306
; NO-I16x2-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_umin_param_1];
307
+ ; NO-I16x2-NEXT: mov.b32 %r2, {%rs3, %rs4};
291
308
; NO-I16x2-NEXT: min.u16 %rs5, %rs2, %rs4;
292
309
; NO-I16x2-NEXT: min.u16 %rs6, %rs1, %rs3;
293
310
; NO-I16x2-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -305,7 +322,9 @@ define <2 x i16> @test_mul(<2 x i16> %a, <2 x i16> %b) #0 {
305
322
; COMMON-EMPTY:
306
323
; COMMON-NEXT: // %bb.0:
307
324
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_mul_param_0];
325
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
308
326
; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_mul_param_1];
327
+ ; COMMON-NEXT: mov.b32 %r2, {%rs3, %rs4};
309
328
; COMMON-NEXT: mul.lo.s16 %rs5, %rs2, %rs4;
310
329
; COMMON-NEXT: mul.lo.s16 %rs6, %rs1, %rs3;
311
330
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -687,11 +706,15 @@ define <2 x i16> @test_select_cc(<2 x i16> %a, <2 x i16> %b, <2 x i16> %c, <2 x
687
706
; COMMON-EMPTY:
688
707
; COMMON-NEXT: // %bb.0:
689
708
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_select_cc_param_0];
690
- ; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_select_cc_param_2];
691
- ; COMMON-NEXT: ld.param.v2.b16 {%rs5, %rs6}, [test_select_cc_param_3];
692
- ; COMMON-NEXT: setp.ne.b16 %p1, %rs3, %rs5;
693
- ; COMMON-NEXT: setp.ne.b16 %p2, %rs4, %rs6;
709
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
710
+ ; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_select_cc_param_3];
711
+ ; COMMON-NEXT: mov.b32 %r4, {%rs3, %rs4};
712
+ ; COMMON-NEXT: ld.param.v2.b16 {%rs5, %rs6}, [test_select_cc_param_2];
713
+ ; COMMON-NEXT: mov.b32 %r3, {%rs5, %rs6};
694
714
; COMMON-NEXT: ld.param.v2.b16 {%rs7, %rs8}, [test_select_cc_param_1];
715
+ ; COMMON-NEXT: mov.b32 %r2, {%rs7, %rs8};
716
+ ; COMMON-NEXT: setp.ne.b16 %p1, %rs5, %rs3;
717
+ ; COMMON-NEXT: setp.ne.b16 %p2, %rs6, %rs4;
695
718
; COMMON-NEXT: selp.b16 %rs9, %rs2, %rs8, %p2;
696
719
; COMMON-NEXT: selp.b16 %rs10, %rs1, %rs7, %p1;
697
720
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs10, %rs9};
@@ -711,10 +734,12 @@ define <2 x i32> @test_select_cc_i32_i16(<2 x i32> %a, <2 x i32> %b,
711
734
; COMMON-NEXT: // %bb.0:
712
735
; COMMON-NEXT: ld.param.v2.b32 {%r3, %r4}, [test_select_cc_i32_i16_param_1];
713
736
; COMMON-NEXT: ld.param.v2.b32 {%r1, %r2}, [test_select_cc_i32_i16_param_0];
714
- ; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_select_cc_i32_i16_param_2];
715
- ; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_select_cc_i32_i16_param_3];
716
- ; COMMON-NEXT: setp.ne.b16 %p1, %rs1, %rs3;
717
- ; COMMON-NEXT: setp.ne.b16 %p2, %rs2, %rs4;
737
+ ; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_select_cc_i32_i16_param_3];
738
+ ; COMMON-NEXT: mov.b32 %r6, {%rs1, %rs2};
739
+ ; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_select_cc_i32_i16_param_2];
740
+ ; COMMON-NEXT: mov.b32 %r5, {%rs3, %rs4};
741
+ ; COMMON-NEXT: setp.ne.b16 %p1, %rs3, %rs1;
742
+ ; COMMON-NEXT: setp.ne.b16 %p2, %rs4, %rs2;
718
743
; COMMON-NEXT: selp.b32 %r7, %r2, %r4, %p2;
719
744
; COMMON-NEXT: selp.b32 %r8, %r1, %r3, %p1;
720
745
; COMMON-NEXT: st.param.v2.b32 [func_retval0], {%r8, %r7};
@@ -733,12 +758,14 @@ define <2 x i16> @test_select_cc_i16_i32(<2 x i16> %a, <2 x i16> %b,
733
758
; COMMON-NEXT: .reg .b32 %r<7>;
734
759
; COMMON-EMPTY:
735
760
; COMMON-NEXT: // %bb.0:
761
+ ; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_select_cc_i16_i32_param_0];
762
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
736
763
; COMMON-NEXT: ld.param.v2.b32 {%r5, %r6}, [test_select_cc_i16_i32_param_3];
737
764
; COMMON-NEXT: ld.param.v2.b32 {%r3, %r4}, [test_select_cc_i16_i32_param_2];
738
- ; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_select_cc_i16_i32_param_0];
765
+ ; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_select_cc_i16_i32_param_1];
766
+ ; COMMON-NEXT: mov.b32 %r2, {%rs3, %rs4};
739
767
; COMMON-NEXT: setp.ne.b32 %p1, %r3, %r5;
740
768
; COMMON-NEXT: setp.ne.b32 %p2, %r4, %r6;
741
- ; COMMON-NEXT: ld.param.v2.b16 {%rs3, %rs4}, [test_select_cc_i16_i32_param_1];
742
769
; COMMON-NEXT: selp.b16 %rs5, %rs2, %rs4, %p2;
743
770
; COMMON-NEXT: selp.b16 %rs6, %rs1, %rs3, %p1;
744
771
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs6, %rs5};
@@ -852,6 +879,7 @@ define <2 x i32> @test_zext_2xi32(<2 x i16> %a) #0 {
852
879
; COMMON-EMPTY:
853
880
; COMMON-NEXT: // %bb.0:
854
881
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_zext_2xi32_param_0];
882
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
855
883
; COMMON-NEXT: cvt.u32.u16 %r2, %rs2;
856
884
; COMMON-NEXT: cvt.u32.u16 %r3, %rs1;
857
885
; COMMON-NEXT: st.param.v2.b32 [func_retval0], {%r3, %r2};
@@ -869,6 +897,7 @@ define <2 x i64> @test_zext_2xi64(<2 x i16> %a) #0 {
869
897
; COMMON-EMPTY:
870
898
; COMMON-NEXT: // %bb.0:
871
899
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_zext_2xi64_param_0];
900
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
872
901
; COMMON-NEXT: cvt.u64.u16 %rd1, %rs2;
873
902
; COMMON-NEXT: cvt.u64.u16 %rd2, %rs1;
874
903
; COMMON-NEXT: st.param.v2.b64 [func_retval0], {%rd2, %rd1};
@@ -927,6 +956,7 @@ define <2 x i16> @test_shufflevector(<2 x i16> %a) #0 {
927
956
; COMMON-EMPTY:
928
957
; COMMON-NEXT: // %bb.0:
929
958
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_shufflevector_param_0];
959
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
930
960
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs2, %rs1};
931
961
; COMMON-NEXT: ret;
932
962
%s = shufflevector <2 x i16 > %a , <2 x i16 > undef , <2 x i32 > <i32 1 , i32 0 >
@@ -940,8 +970,9 @@ define <2 x i16> @test_insertelement(<2 x i16> %a, i16 %x) #0 {
940
970
; COMMON-NEXT: .reg .b32 %r<2>;
941
971
; COMMON-EMPTY:
942
972
; COMMON-NEXT: // %bb.0:
943
- ; COMMON-NEXT: ld.param.b16 %rs1, [test_insertelement_param_1];
944
973
; COMMON-NEXT: ld.param.v2.b16 {%rs2, %rs3}, [test_insertelement_param_0];
974
+ ; COMMON-NEXT: mov.b32 %r1, {%rs2, %rs3};
975
+ ; COMMON-NEXT: ld.param.b16 %rs1, [test_insertelement_param_1];
945
976
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs2, %rs1};
946
977
; COMMON-NEXT: ret;
947
978
%i = insertelement <2 x i16 > %a , i16 %x , i64 1
@@ -956,6 +987,7 @@ define <2 x i16> @test_fptosi_2xhalf_to_2xi16(<2 x half> %a) #0 {
956
987
; COMMON-EMPTY:
957
988
; COMMON-NEXT: // %bb.0:
958
989
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_fptosi_2xhalf_to_2xi16_param_0];
990
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
959
991
; COMMON-NEXT: cvt.rzi.s16.f16 %rs3, %rs2;
960
992
; COMMON-NEXT: cvt.rzi.s16.f16 %rs4, %rs1;
961
993
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs4, %rs3};
@@ -972,6 +1004,7 @@ define <2 x i16> @test_fptoui_2xhalf_to_2xi16(<2 x half> %a) #0 {
972
1004
; COMMON-EMPTY:
973
1005
; COMMON-NEXT: // %bb.0:
974
1006
; COMMON-NEXT: ld.param.v2.b16 {%rs1, %rs2}, [test_fptoui_2xhalf_to_2xi16_param_0];
1007
+ ; COMMON-NEXT: mov.b32 %r1, {%rs1, %rs2};
975
1008
; COMMON-NEXT: cvt.rzi.u16.f16 %rs3, %rs2;
976
1009
; COMMON-NEXT: cvt.rzi.u16.f16 %rs4, %rs1;
977
1010
; COMMON-NEXT: st.param.v2.b16 [func_retval0], {%rs4, %rs3};
0 commit comments