@@ -54,6 +54,18 @@ define i32 @extract_v16i8_s(<16 x i8> %v) {
54
54
ret i32 %a
55
55
}
56
56
57
+ ; CHECK-LABEL: extract_undef_v16i8_s:
58
+ ; NO-SIMD128-NOT: i8x16
59
+ ; SIMD128-NEXT: .param v128{{$}}
60
+ ; SIMD128-NEXT: .result i32{{$}}
61
+ ; SIMD128-NEXT: i8x16.extract_lane_s $push[[R:[0-9]+]]=, $0, 0{{$}}
62
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
63
+ define i32 @extract_undef_v16i8_s (<16 x i8 > %v ) {
64
+ %elem = extractelement <16 x i8 > %v , i8 undef
65
+ %a = sext i8 %elem to i32
66
+ ret i32 %a
67
+ }
68
+
57
69
; CHECK-LABEL: extract_v16i8_u:
58
70
; NO-SIMD128-NOT: i8x16
59
71
; SIMD128-NEXT: .param v128{{$}}
@@ -66,6 +78,18 @@ define i32 @extract_v16i8_u(<16 x i8> %v) {
66
78
ret i32 %a
67
79
}
68
80
81
+ ; CHECK-LABEL: extract_undef_v16i8_u:
82
+ ; NO-SIMD128-NOT: i8x16
83
+ ; SIMD128-NEXT: .param v128{{$}}
84
+ ; SIMD128-NEXT: .result i32{{$}}
85
+ ; SIMD128-NEXT: i8x16.extract_lane_u $push[[R:[0-9]+]]=, $0, 0{{$}}
86
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
87
+ define i32 @extract_undef_v16i8_u (<16 x i8 > %v ) {
88
+ %elem = extractelement <16 x i8 > %v , i8 undef
89
+ %a = zext i8 %elem to i32
90
+ ret i32 %a
91
+ }
92
+
69
93
; CHECK-LABEL: extract_v16i8:
70
94
; NO-SIMD128-NOT: i8x16
71
95
; SIMD128-NEXT: .param v128{{$}}
@@ -77,6 +101,17 @@ define i8 @extract_v16i8(<16 x i8> %v) {
77
101
ret i8 %elem
78
102
}
79
103
104
+ ; CHECK-LABEL: extract_undef_v16i8:
105
+ ; NO-SIMD128-NOT: i8x16
106
+ ; SIMD128-NEXT: .param v128{{$}}
107
+ ; SIMD128-NEXT: .result i32{{$}}
108
+ ; SIMD128-NEXT: i8x16.extract_lane_u $push[[R:[0-9]+]]=, $0, 0{{$}}
109
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
110
+ define i8 @extract_undef_v16i8 (<16 x i8 > %v ) {
111
+ %elem = extractelement <16 x i8 > %v , i8 undef
112
+ ret i8 %elem
113
+ }
114
+
80
115
; CHECK-LABEL: replace_v16i8:
81
116
; NO-SIMD128-NOT: i8x16
82
117
; SIMD128-NEXT: .param v128, i32{{$}}
@@ -88,6 +123,17 @@ define <16 x i8> @replace_v16i8(<16 x i8> %v, i8 %x) {
88
123
ret <16 x i8 > %res
89
124
}
90
125
126
+ ; CHECK-LABEL: replace_undef_v16i8:
127
+ ; NO-SIMD128-NOT: i8x16
128
+ ; SIMD128-NEXT: .param v128, i32{{$}}
129
+ ; SIMD128-NEXT: .result v128{{$}}
130
+ ; SIMD128-NEXT: i8x16.replace_lane $push[[R:[0-9]+]]=, $0, 0, $1{{$}}
131
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
132
+ define <16 x i8 > @replace_undef_v16i8 (<16 x i8 > %v , i8 %x ) {
133
+ %res = insertelement <16 x i8 > %v , i8 %x , i32 undef
134
+ ret <16 x i8 > %res
135
+ }
136
+
91
137
; CHECK-LABEL: shuffle_v16i8:
92
138
; NO-SIMD128-NOT: v8x16
93
139
; SIMD128-NEXT: .param v128, v128{{$}}
@@ -102,6 +148,22 @@ define <16 x i8> @shuffle_v16i8(<16 x i8> %x, <16 x i8> %y) {
102
148
ret <16 x i8 > %res
103
149
}
104
150
151
+ ; CHECK-LABEL: shuffle_undef_v16i8:
152
+ ; NO-SIMD128-NOT: v8x16
153
+ ; SIMD128-NEXT: .param v128, v128{{$}}
154
+ ; SIMD128-NEXT: .result v128{{$}}
155
+ ; SIMD128-NEXT: v8x16.shuffle $push[[R:[0-9]+]]=, $0, $0,
156
+ ; SIMD128-SAME: 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0{{$}}
157
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
158
+ define <16 x i8 > @shuffle_undef_v16i8 (<16 x i8 > %x , <16 x i8 > %y ) {
159
+ %res = shufflevector <16 x i8 > %x , <16 x i8 > %y ,
160
+ <16 x i32 > <i32 1 , i32 undef , i32 undef , i32 undef ,
161
+ i32 undef , i32 undef , i32 undef , i32 undef ,
162
+ i32 undef , i32 undef , i32 undef , i32 undef ,
163
+ i32 undef , i32 undef , i32 undef , i32 undef >
164
+ ret <16 x i8 > %res
165
+ }
166
+
105
167
; CHECK-LABEL: build_v16i8:
106
168
; NO-SIMD128-NOT: i8x16
107
169
; SIMD128-NEXT: .param i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32{{$}}
@@ -190,6 +252,18 @@ define i32 @extract_v8i16_s(<8 x i16> %v) {
190
252
ret i32 %a
191
253
}
192
254
255
+ ; CHECK-LABEL: extract_undef_v8i16_s:
256
+ ; NO-SIMD128-NOT: i16x8
257
+ ; SIMD128-NEXT: .param v128{{$}}
258
+ ; SIMD128-NEXT: .result i32{{$}}
259
+ ; SIMD128-NEXT: i16x8.extract_lane_s $push[[R:[0-9]+]]=, $0, 0{{$}}
260
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
261
+ define i32 @extract_undef_v8i16_s (<8 x i16 > %v ) {
262
+ %elem = extractelement <8 x i16 > %v , i16 undef
263
+ %a = sext i16 %elem to i32
264
+ ret i32 %a
265
+ }
266
+
193
267
; CHECK-LABEL: extract_v8i16_u:
194
268
; NO-SIMD128-NOT: i16x8
195
269
; SIMD128-NEXT: .param v128{{$}}
@@ -202,6 +276,18 @@ define i32 @extract_v8i16_u(<8 x i16> %v) {
202
276
ret i32 %a
203
277
}
204
278
279
+ ; CHECK-LABEL: extract_undef_v8i16_u:
280
+ ; NO-SIMD128-NOT: i16x8
281
+ ; SIMD128-NEXT: .param v128{{$}}
282
+ ; SIMD128-NEXT: .result i32{{$}}
283
+ ; SIMD128-NEXT: i16x8.extract_lane_u $push[[R:[0-9]+]]=, $0, 0{{$}}
284
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
285
+ define i32 @extract_undef_v8i16_u (<8 x i16 > %v ) {
286
+ %elem = extractelement <8 x i16 > %v , i16 undef
287
+ %a = zext i16 %elem to i32
288
+ ret i32 %a
289
+ }
290
+
205
291
; CHECK-LABEL: extract_v8i16:
206
292
; NO-SIMD128-NOT: i16x8
207
293
; SIMD128-NEXT: .param v128{{$}}
@@ -213,6 +299,17 @@ define i16 @extract_v8i16(<8 x i16> %v) {
213
299
ret i16 %elem
214
300
}
215
301
302
+ ; CHECK-LABEL: extract_undef_v8i16:
303
+ ; NO-SIMD128-NOT: i16x8
304
+ ; SIMD128-NEXT: .param v128{{$}}
305
+ ; SIMD128-NEXT: .result i32{{$}}
306
+ ; SIMD128-NEXT: i16x8.extract_lane_u $push[[R:[0-9]+]]=, $0, 0{{$}}
307
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
308
+ define i16 @extract_undef_v8i16 (<8 x i16 > %v ) {
309
+ %elem = extractelement <8 x i16 > %v , i16 undef
310
+ ret i16 %elem
311
+ }
312
+
216
313
; CHECK-LABEL: replace_v8i16:
217
314
; NO-SIMD128-NOT: i16x8
218
315
; SIMD128-NEXT: .param v128, i32{{$}}
@@ -224,6 +321,17 @@ define <8 x i16> @replace_v8i16(<8 x i16> %v, i16 %x) {
224
321
ret <8 x i16 > %res
225
322
}
226
323
324
+ ; CHECK-LABEL: replace_undef_v8i16:
325
+ ; NO-SIMD128-NOT: i16x8
326
+ ; SIMD128-NEXT: .param v128, i32{{$}}
327
+ ; SIMD128-NEXT: .result v128{{$}}
328
+ ; SIMD128-NEXT: i16x8.replace_lane $push[[R:[0-9]+]]=, $0, 0, $1{{$}}
329
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
330
+ define <8 x i16 > @replace_undef_v8i16 (<8 x i16 > %v , i16 %x ) {
331
+ %res = insertelement <8 x i16 > %v , i16 %x , i32 undef
332
+ ret <8 x i16 > %res
333
+ }
334
+
227
335
; CHECK-LABEL: shuffle_v8i16:
228
336
; NO-SIMD128-NOT: v8x16
229
337
; SIMD128-NEXT: .param v128, v128{{$}}
@@ -237,6 +345,20 @@ define <8 x i16> @shuffle_v8i16(<8 x i16> %x, <8 x i16> %y) {
237
345
ret <8 x i16 > %res
238
346
}
239
347
348
+ ; CHECK-LABEL: shuffle_undef_v8i16:
349
+ ; NO-SIMD128-NOT: v8x16
350
+ ; SIMD128-NEXT: .param v128, v128{{$}}
351
+ ; SIMD128-NEXT: .result v128{{$}}
352
+ ; SIMD128-NEXT: v8x16.shuffle $push[[R:[0-9]+]]=, $0, $0,
353
+ ; SIMD128-SAME: 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0{{$}}
354
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
355
+ define <8 x i16 > @shuffle_undef_v8i16 (<8 x i16 > %x , <8 x i16 > %y ) {
356
+ %res = shufflevector <8 x i16 > %x , <8 x i16 > %y ,
357
+ <8 x i32 > <i32 1 , i32 undef , i32 undef , i32 undef ,
358
+ i32 undef , i32 undef , i32 undef , i32 undef >
359
+ ret <8 x i16 > %res
360
+ }
361
+
240
362
; CHECK-LABEL: build_v8i16:
241
363
; NO-SIMD128-NOT: i16x8
242
364
; SIMD128-NEXT: .param i32, i32, i32, i32, i32, i32, i32, i32{{$}}
@@ -305,6 +427,17 @@ define i32 @extract_v4i32(<4 x i32> %v) {
305
427
ret i32 %elem
306
428
}
307
429
430
+ ; CHECK-LABEL: extract_undef_v4i32:
431
+ ; NO-SIMD128-NOT: i32x4
432
+ ; SIMD128-NEXT: .param v128{{$}}
433
+ ; SIMD128-NEXT: .result i32{{$}}
434
+ ; SIMD128-NEXT: i32x4.extract_lane $push[[R:[0-9]+]]=, $0, 0{{$}}
435
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
436
+ define i32 @extract_undef_v4i32 (<4 x i32 > %v ) {
437
+ %elem = extractelement <4 x i32 > %v , i32 undef
438
+ ret i32 %elem
439
+ }
440
+
308
441
; CHECK-LABEL: replace_v4i32:
309
442
; NO-SIMD128-NOT: i32x4
310
443
; SIMD128-NEXT: .param v128, i32{{$}}
@@ -316,6 +449,17 @@ define <4 x i32> @replace_v4i32(<4 x i32> %v, i32 %x) {
316
449
ret <4 x i32 > %res
317
450
}
318
451
452
+ ; CHECK-LABEL: replace_undef_v4i32:
453
+ ; NO-SIMD128-NOT: i32x4
454
+ ; SIMD128-NEXT: .param v128, i32{{$}}
455
+ ; SIMD128-NEXT: .result v128{{$}}
456
+ ; SIMD128-NEXT: i32x4.replace_lane $push[[R:[0-9]+]]=, $0, 0, $1{{$}}
457
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
458
+ define <4 x i32 > @replace_undef_v4i32 (<4 x i32 > %v , i32 %x ) {
459
+ %res = insertelement <4 x i32 > %v , i32 %x , i32 undef
460
+ ret <4 x i32 > %res
461
+ }
462
+
319
463
; CHECK-LABEL: shuffle_v4i32:
320
464
; NO-SIMD128-NOT: v8x16
321
465
; SIMD128-NEXT: .param v128, v128{{$}}
@@ -329,6 +473,19 @@ define <4 x i32> @shuffle_v4i32(<4 x i32> %x, <4 x i32> %y) {
329
473
ret <4 x i32 > %res
330
474
}
331
475
476
+ ; CHECK-LABEL: shuffle_undef_v4i32:
477
+ ; NO-SIMD128-NOT: v8x16
478
+ ; SIMD128-NEXT: .param v128, v128{{$}}
479
+ ; SIMD128-NEXT: .result v128{{$}}
480
+ ; SIMD128-NEXT: v8x16.shuffle $push[[R:[0-9]+]]=, $0, $0,
481
+ ; SIMD128-SAME: 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0{{$}}
482
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
483
+ define <4 x i32 > @shuffle_undef_v4i32 (<4 x i32 > %x , <4 x i32 > %y ) {
484
+ %res = shufflevector <4 x i32 > %x , <4 x i32 > %y ,
485
+ <4 x i32 > <i32 1 , i32 undef , i32 undef , i32 undef >
486
+ ret <4 x i32 > %res
487
+ }
488
+
332
489
; CHECK-LABEL: build_v4i32:
333
490
; NO-SIMD128-NOT: i32x4
334
491
; SIMD128-NEXT: .param i32, i32, i32, i32{{$}}
@@ -390,6 +547,18 @@ define i64 @extract_v2i64(<2 x i64> %v) {
390
547
ret i64 %elem
391
548
}
392
549
550
+ ; CHECK-LABEL: extract_undef_v2i64:
551
+ ; NO-SIMD128-NOT: i64x2
552
+ ; SIMD128-VM-NOT: i64x2
553
+ ; SIMD128-NEXT: .param v128{{$}}
554
+ ; SIMD128-NEXT: .result i64{{$}}
555
+ ; SIMD128-NEXT: i64x2.extract_lane $push[[R:[0-9]+]]=, $0, 0{{$}}
556
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
557
+ define i64 @extract_undef_v2i64 (<2 x i64 > %v ) {
558
+ %elem = extractelement <2 x i64 > %v , i64 undef
559
+ ret i64 %elem
560
+ }
561
+
393
562
; CHECK-LABEL: replace_v2i64:
394
563
; NO-SIMD128-NOT: i64x2
395
564
; SIMD128-VM-NOT: i64x2
@@ -402,6 +571,18 @@ define <2 x i64> @replace_v2i64(<2 x i64> %v, i64 %x) {
402
571
ret <2 x i64 > %res
403
572
}
404
573
574
+ ; CHECK-LABEL: replace_undef_v2i64:
575
+ ; NO-SIMD128-NOT: i64x2
576
+ ; SIMD128-VM-NOT: i64x2
577
+ ; SIMD128-NEXT: .param v128, i64{{$}}
578
+ ; SIMD128-NEXT: .result v128{{$}}
579
+ ; SIMD128-NEXT: i64x2.replace_lane $push[[R:[0-9]+]]=, $0, 0, $1{{$}}
580
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
581
+ define <2 x i64 > @replace_undef_v2i64 (<2 x i64 > %v , i64 %x ) {
582
+ %res = insertelement <2 x i64 > %v , i64 %x , i32 undef
583
+ ret <2 x i64 > %res
584
+ }
585
+
405
586
; CHECK-LABEL: shuffle_v2i64:
406
587
; NO-SIMD128-NOT: v8x16
407
588
; SIMD128-NEXT: .param v128, v128{{$}}
@@ -414,6 +595,19 @@ define <2 x i64> @shuffle_v2i64(<2 x i64> %x, <2 x i64> %y) {
414
595
ret <2 x i64 > %res
415
596
}
416
597
598
+ ; CHECK-LABEL: shuffle_undef_v2i64:
599
+ ; NO-SIMD128-NOT: v8x16
600
+ ; SIMD128-NEXT: .param v128, v128{{$}}
601
+ ; SIMD128-NEXT: .result v128{{$}}
602
+ ; SIMD128-NEXT: v8x16.shuffle $push[[R:[0-9]+]]=, $0, $0,
603
+ ; SIMD128-SAME: 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0{{$}}
604
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
605
+ define <2 x i64 > @shuffle_undef_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
606
+ %res = shufflevector <2 x i64 > %x , <2 x i64 > %y ,
607
+ <2 x i32 > <i32 1 , i32 undef >
608
+ ret <2 x i64 > %res
609
+ }
610
+
417
611
; CHECK-LABEL: build_v2i64:
418
612
; NO-SIMD128-NOT: i64x2
419
613
; SIMD128-VM-NOT: i64x2
@@ -472,6 +666,17 @@ define float @extract_v4f32(<4 x float> %v) {
472
666
ret float %elem
473
667
}
474
668
669
+ ; CHECK-LABEL: extract_undef_v4f32:
670
+ ; NO-SIMD128-NOT: f32x4
671
+ ; SIMD128-NEXT: .param v128{{$}}
672
+ ; SIMD128-NEXT: .result f32{{$}}
673
+ ; SIMD128-NEXT: f32x4.extract_lane $push[[R:[0-9]+]]=, $0, 0{{$}}
674
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
675
+ define float @extract_undef_v4f32 (<4 x float > %v ) {
676
+ %elem = extractelement <4 x float > %v , i32 undef
677
+ ret float %elem
678
+ }
679
+
475
680
; CHECK-LABEL: replace_v4f32:
476
681
; NO-SIMD128-NOT: f32x4
477
682
; SIMD128-NEXT: .param v128, f32{{$}}
@@ -483,6 +688,17 @@ define <4 x float> @replace_v4f32(<4 x float> %v, float %x) {
483
688
ret <4 x float > %res
484
689
}
485
690
691
+ ; CHECK-LABEL: replace_undef_v4f32:
692
+ ; NO-SIMD128-NOT: f32x4
693
+ ; SIMD128-NEXT: .param v128, f32{{$}}
694
+ ; SIMD128-NEXT: .result v128{{$}}
695
+ ; SIMD128-NEXT: f32x4.replace_lane $push[[R:[0-9]+]]=, $0, 0, $1{{$}}
696
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
697
+ define <4 x float > @replace_undef_v4f32 (<4 x float > %v , float %x ) {
698
+ %res = insertelement <4 x float > %v , float %x , i32 undef
699
+ ret <4 x float > %res
700
+ }
701
+
486
702
; CHECK-LABEL: shuffle_v4f32:
487
703
; NO-SIMD128-NOT: v8x16
488
704
; SIMD128-NEXT: .param v128, v128{{$}}
@@ -496,6 +712,19 @@ define <4 x float> @shuffle_v4f32(<4 x float> %x, <4 x float> %y) {
496
712
ret <4 x float > %res
497
713
}
498
714
715
+ ; CHECK-LABEL: shuffle_undef_v4f32:
716
+ ; NO-SIMD128-NOT: v8x16
717
+ ; SIMD128-NEXT: .param v128, v128{{$}}
718
+ ; SIMD128-NEXT: .result v128{{$}}
719
+ ; SIMD128-NEXT: v8x16.shuffle $push[[R:[0-9]+]]=, $0, $0,
720
+ ; SIMD128-SAME: 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0{{$}}
721
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
722
+ define <4 x float > @shuffle_undef_v4f32 (<4 x float > %x , <4 x float > %y ) {
723
+ %res = shufflevector <4 x float > %x , <4 x float > %y ,
724
+ <4 x i32 > <i32 1 , i32 undef , i32 undef , i32 undef >
725
+ ret <4 x float > %res
726
+ }
727
+
499
728
; CHECK-LABEL: build_v4f32:
500
729
; NO-SIMD128-NOT: f32x4
501
730
; SIMD128-NEXT: .param f32, f32, f32, f32{{$}}
@@ -556,6 +785,18 @@ define double @extract_v2f64(<2 x double> %v) {
556
785
ret double %elem
557
786
}
558
787
788
+ ; CHECK-LABEL: extract_undef_v2f64:
789
+ ; NO-SIMD128-NOT: f64x2
790
+ ; SIMD128-VM-NOT: f64x2
791
+ ; SIMD128-NEXT: .param v128{{$}}
792
+ ; SIMD128-NEXT: .result f64{{$}}
793
+ ; SIMD128-NEXT: f64x2.extract_lane $push[[R:[0-9]+]]=, $0, 0{{$}}
794
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
795
+ define double @extract_undef_v2f64 (<2 x double > %v ) {
796
+ %elem = extractelement <2 x double > %v , i32 undef
797
+ ret double %elem
798
+ }
799
+
559
800
; CHECK-LABEL: replace_v2f64:
560
801
; NO-SIMD128-NOT: f64x2
561
802
; SIMD128-VM-NOT: f64x2
@@ -568,6 +809,18 @@ define <2 x double> @replace_v2f64(<2 x double> %v, double %x) {
568
809
ret <2 x double > %res
569
810
}
570
811
812
+ ; CHECK-LABEL: replace_undef_v2f64:
813
+ ; NO-SIMD128-NOT: f64x2
814
+ ; SIMD128-VM-NOT: f64x2
815
+ ; SIMD128-NEXT: .param v128, f64{{$}}
816
+ ; SIMD128-NEXT: .result v128{{$}}
817
+ ; SIMD128-NEXT: f64x2.replace_lane $push[[R:[0-9]+]]=, $0, 0, $1{{$}}
818
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
819
+ define <2 x double > @replace_undef_v2f64 (<2 x double > %v , double %x ) {
820
+ %res = insertelement <2 x double > %v , double %x , i32 undef
821
+ ret <2 x double > %res
822
+ }
823
+
571
824
; CHECK-LABEL: shuffle_v2f64:
572
825
; NO-SIMD128-NOT: v8x16
573
826
; SIMD128-NEXT: .param v128, v128{{$}}
@@ -581,6 +834,19 @@ define <2 x double> @shuffle_v2f64(<2 x double> %x, <2 x double> %y) {
581
834
ret <2 x double > %res
582
835
}
583
836
837
+ ; CHECK-LABEL: shuffle_undef_v2f64:
838
+ ; NO-SIMD128-NOT: v8x16
839
+ ; SIMD128-NEXT: .param v128, v128{{$}}
840
+ ; SIMD128-NEXT: .result v128{{$}}
841
+ ; SIMD128-NEXT: v8x16.shuffle $push[[R:[0-9]+]]=, $0, $0,
842
+ ; SIMD128-SAME: 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0{{$}}
843
+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
844
+ define <2 x double > @shuffle_undef_v2f64 (<2 x double > %x , <2 x double > %y ) {
845
+ %res = shufflevector <2 x double > %x , <2 x double > %y ,
846
+ <2 x i32 > <i32 1 , i32 undef >
847
+ ret <2 x double > %res
848
+ }
849
+
584
850
; CHECK-LABEL: build_v2f64:
585
851
; NO-SIMD128-NOT: f64x2
586
852
; SIMD128-VM-NOT: f64x2
0 commit comments