@@ -31,15 +31,10 @@ define <2 x i64> @test1(<2 x i64> %a, <2 x i64> %b) {
31
31
32
32
33
33
define <4 x i32 > @test2 (<4 x i32 > %a , <4 x i32 > %b ) {
34
- ; SSE2-LABEL: test2:
35
- ; SSE2: # %bb.0:
36
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
37
- ; SSE2-NEXT: retq
38
- ;
39
- ; SSE4-LABEL: test2:
40
- ; SSE4: # %bb.0:
41
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
42
- ; SSE4-NEXT: retq
34
+ ; SSE-LABEL: test2:
35
+ ; SSE: # %bb.0:
36
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
37
+ ; SSE-NEXT: retq
43
38
;
44
39
; AVX-LABEL: test2:
45
40
; AVX: # %bb.0:
@@ -53,15 +48,10 @@ define <4 x i32> @test2(<4 x i32> %a, <4 x i32> %b) {
53
48
54
49
55
50
define <2 x i64 > @test3 (<2 x i64 > %a , <2 x i64 > %b ) {
56
- ; SSE2-LABEL: test3:
57
- ; SSE2: # %bb.0:
58
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
59
- ; SSE2-NEXT: retq
60
- ;
61
- ; SSE4-LABEL: test3:
62
- ; SSE4: # %bb.0:
63
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
64
- ; SSE4-NEXT: retq
51
+ ; SSE-LABEL: test3:
52
+ ; SSE: # %bb.0:
53
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
54
+ ; SSE-NEXT: retq
65
55
;
66
56
; AVX-LABEL: test3:
67
57
; AVX: # %bb.0:
@@ -201,15 +191,10 @@ define <2 x i64> @test8(<2 x i64> %a, <2 x i64> %b) {
201
191
202
192
203
193
define <4 x i32 > @test9 (<4 x i32 > %a , <4 x i32 > %b ) {
204
- ; SSE2-LABEL: test9:
205
- ; SSE2: # %bb.0:
206
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
207
- ; SSE2-NEXT: retq
208
- ;
209
- ; SSE4-LABEL: test9:
210
- ; SSE4: # %bb.0:
211
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
212
- ; SSE4-NEXT: retq
194
+ ; SSE-LABEL: test9:
195
+ ; SSE: # %bb.0:
196
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
197
+ ; SSE-NEXT: retq
213
198
;
214
199
; AVX-LABEL: test9:
215
200
; AVX: # %bb.0:
@@ -223,15 +208,10 @@ define <4 x i32> @test9(<4 x i32> %a, <4 x i32> %b) {
223
208
224
209
225
210
define <2 x i64 > @test10 (<2 x i64 > %a , <2 x i64 > %b ) {
226
- ; SSE2-LABEL: test10:
227
- ; SSE2: # %bb.0:
228
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
229
- ; SSE2-NEXT: retq
230
- ;
231
- ; SSE4-LABEL: test10:
232
- ; SSE4: # %bb.0:
233
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
234
- ; SSE4-NEXT: retq
211
+ ; SSE-LABEL: test10:
212
+ ; SSE: # %bb.0:
213
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
214
+ ; SSE-NEXT: retq
235
215
;
236
216
; AVX-LABEL: test10:
237
217
; AVX: # %bb.0:
@@ -563,20 +543,25 @@ define <2 x i64> @test21(<2 x i64> %a, <2 x i64> %b) {
563
543
; bitcast to use the mask-or blend combine.
564
544
565
545
define <2 x double > @test22 (<2 x double > %a0 , <2 x double > %a1 ) {
566
- ; SSE2 -LABEL: test22:
567
- ; SSE2 : # %bb.0:
568
- ; SSE2 -NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
569
- ; SSE2 -NEXT: retq
546
+ ; SSE -LABEL: test22:
547
+ ; SSE : # %bb.0:
548
+ ; SSE -NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
549
+ ; SSE -NEXT: retq
570
550
;
571
- ; SSE4 -LABEL: test22:
572
- ; SSE4 : # %bb.0:
573
- ; SSE4 -NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1 ],xmm0[2,3 ]
574
- ; SSE4 -NEXT: retq
551
+ ; AVX1 -LABEL: test22:
552
+ ; AVX1 : # %bb.0:
553
+ ; AVX1 -NEXT: vmovsd {{.*#+}} xmm0 = xmm1[0],xmm0[1 ]
554
+ ; AVX1 -NEXT: retq
575
555
;
576
- ; AVX-LABEL: test22:
577
- ; AVX: # %bb.0:
578
- ; AVX-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
579
- ; AVX-NEXT: retq
556
+ ; AVX2-LABEL: test22:
557
+ ; AVX2: # %bb.0:
558
+ ; AVX2-NEXT: vmovsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
559
+ ; AVX2-NEXT: retq
560
+ ;
561
+ ; AVX512-LABEL: test22:
562
+ ; AVX512: # %bb.0:
563
+ ; AVX512-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
564
+ ; AVX512-NEXT: retq
580
565
%bc1 = bitcast <2 x double > %a0 to <2 x i64 >
581
566
%bc2 = bitcast <2 x double > %a1 to <2 x i64 >
582
567
%and1 = and <2 x i64 > %bc1 , <i64 0 , i64 -1 >
@@ -614,20 +599,25 @@ define <4 x float> @test23(<4 x float> %a0, <4 x float> %a1) {
614
599
615
600
616
601
define <4 x float > @test24 (<4 x float > %a0 , <4 x float > %a1 ) {
617
- ; SSE2 -LABEL: test24:
618
- ; SSE2 : # %bb.0:
619
- ; SSE2 -NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
620
- ; SSE2 -NEXT: retq
602
+ ; SSE -LABEL: test24:
603
+ ; SSE : # %bb.0:
604
+ ; SSE -NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
605
+ ; SSE -NEXT: retq
621
606
;
622
- ; SSE4 -LABEL: test24:
623
- ; SSE4 : # %bb.0:
624
- ; SSE4 -NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1 ],xmm0[2,3 ]
625
- ; SSE4 -NEXT: retq
607
+ ; AVX1 -LABEL: test24:
608
+ ; AVX1 : # %bb.0:
609
+ ; AVX1 -NEXT: vmovsd {{.*#+}} xmm0 = xmm1[0],xmm0[1 ]
610
+ ; AVX1 -NEXT: retq
626
611
;
627
- ; AVX-LABEL: test24:
628
- ; AVX: # %bb.0:
629
- ; AVX-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
630
- ; AVX-NEXT: retq
612
+ ; AVX2-LABEL: test24:
613
+ ; AVX2: # %bb.0:
614
+ ; AVX2-NEXT: vmovsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
615
+ ; AVX2-NEXT: retq
616
+ ;
617
+ ; AVX512-LABEL: test24:
618
+ ; AVX512: # %bb.0:
619
+ ; AVX512-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
620
+ ; AVX512-NEXT: retq
631
621
%bc1 = bitcast <4 x float > %a0 to <2 x i64 >
632
622
%bc2 = bitcast <4 x float > %a1 to <2 x i64 >
633
623
%and1 = and <2 x i64 > %bc1 , <i64 0 , i64 -1 >
@@ -707,15 +697,10 @@ define <4 x i8> @test_crash(<4 x i8> %a, <4 x i8> %b) {
707
697
; Verify that we can fold regardless of which operand is the zeroinitializer
708
698
709
699
define <4 x i32 > @test2b (<4 x i32 > %a , <4 x i32 > %b ) {
710
- ; SSE2-LABEL: test2b:
711
- ; SSE2: # %bb.0:
712
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
713
- ; SSE2-NEXT: retq
714
- ;
715
- ; SSE4-LABEL: test2b:
716
- ; SSE4: # %bb.0:
717
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
718
- ; SSE4-NEXT: retq
700
+ ; SSE-LABEL: test2b:
701
+ ; SSE: # %bb.0:
702
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
703
+ ; SSE-NEXT: retq
719
704
;
720
705
; AVX-LABEL: test2b:
721
706
; AVX: # %bb.0:
@@ -728,15 +713,10 @@ define <4 x i32> @test2b(<4 x i32> %a, <4 x i32> %b) {
728
713
}
729
714
730
715
define <4 x i32 > @test2c (<4 x i32 > %a , <4 x i32 > %b ) {
731
- ; SSE2-LABEL: test2c:
732
- ; SSE2: # %bb.0:
733
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
734
- ; SSE2-NEXT: retq
735
- ;
736
- ; SSE4-LABEL: test2c:
737
- ; SSE4: # %bb.0:
738
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
739
- ; SSE4-NEXT: retq
716
+ ; SSE-LABEL: test2c:
717
+ ; SSE: # %bb.0:
718
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
719
+ ; SSE-NEXT: retq
740
720
;
741
721
; AVX-LABEL: test2c:
742
722
; AVX: # %bb.0:
@@ -750,15 +730,10 @@ define <4 x i32> @test2c(<4 x i32> %a, <4 x i32> %b) {
750
730
751
731
752
732
define <4 x i32 > @test2d (<4 x i32 > %a , <4 x i32 > %b ) {
753
- ; SSE2-LABEL: test2d:
754
- ; SSE2: # %bb.0:
755
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
756
- ; SSE2-NEXT: retq
757
- ;
758
- ; SSE4-LABEL: test2d:
759
- ; SSE4: # %bb.0:
760
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
761
- ; SSE4-NEXT: retq
733
+ ; SSE-LABEL: test2d:
734
+ ; SSE: # %bb.0:
735
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
736
+ ; SSE-NEXT: retq
762
737
;
763
738
; AVX-LABEL: test2d:
764
739
; AVX: # %bb.0:
@@ -773,15 +748,10 @@ define <4 x i32> @test2d(<4 x i32> %a, <4 x i32> %b) {
773
748
; Make sure we can have an undef where an index pointing to the zero vector should be
774
749
775
750
define <4 x i32 > @test2e (<4 x i32 > %a , <4 x i32 > %b ) {
776
- ; SSE2-LABEL: test2e:
777
- ; SSE2: # %bb.0:
778
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
779
- ; SSE2-NEXT: retq
780
- ;
781
- ; SSE4-LABEL: test2e:
782
- ; SSE4: # %bb.0:
783
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
784
- ; SSE4-NEXT: retq
751
+ ; SSE-LABEL: test2e:
752
+ ; SSE: # %bb.0:
753
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
754
+ ; SSE-NEXT: retq
785
755
;
786
756
; AVX-LABEL: test2e:
787
757
; AVX: # %bb.0:
@@ -794,15 +764,10 @@ define <4 x i32> @test2e(<4 x i32> %a, <4 x i32> %b) {
794
764
}
795
765
796
766
define <4 x i32 > @test2f (<4 x i32 > %a , <4 x i32 > %b ) {
797
- ; SSE2-LABEL: test2f:
798
- ; SSE2: # %bb.0:
799
- ; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
800
- ; SSE2-NEXT: retq
801
- ;
802
- ; SSE4-LABEL: test2f:
803
- ; SSE4: # %bb.0:
804
- ; SSE4-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
805
- ; SSE4-NEXT: retq
767
+ ; SSE-LABEL: test2f:
768
+ ; SSE: # %bb.0:
769
+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
770
+ ; SSE-NEXT: retq
806
771
;
807
772
; AVX-LABEL: test2f:
808
773
; AVX: # %bb.0:
0 commit comments