Skip to content

Commit c33d36e

Browse files
committed
[X86][AVX] canonicalizeLaneShuffleWithRepeatedOps - handle unary vperm2x128(permute/shift(x,c),undef) cases
Fold vperm2x128(permute/shift(x,c),undef) -> permute/shift(vperm2x128(x,undef),c)
1 parent 4846f6a commit c33d36e

File tree

8 files changed

+49
-48
lines changed

8 files changed

+49
-48
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36918,19 +36918,21 @@ static SDValue canonicalizeLaneShuffleWithRepeatedOps(SDValue V,
3691836918
EVT SrcVT0 = Src0.getValueType();
3691936919
EVT SrcVT1 = Src1.getValueType();
3692036920

36921-
// TODO: Under what circumstances should we push perm2f128 up when we have one
36922-
// active src?
36923-
if (SrcOpc0 != SrcOpc1 || SrcVT0 != SrcVT1)
36921+
if (!Src1.isUndef() && (SrcVT0 != SrcVT1 || SrcOpc0 != SrcOpc1))
3692436922
return SDValue();
3692536923

3692636924
switch (SrcOpc0) {
3692736925
case X86ISD::VSHLI:
3692836926
case X86ISD::VSRLI:
3692936927
case X86ISD::VSRAI:
36930-
if (Src0.getOperand(1) == Src1.getOperand(1)) {
36931-
SDValue Res = DAG.getNode(
36932-
X86ISD::VPERM2X128, DL, VT, DAG.getBitcast(VT, Src0.getOperand(0)),
36933-
DAG.getBitcast(VT, Src1.getOperand(0)), V.getOperand(2));
36928+
case X86ISD::PSHUFD:
36929+
case X86ISD::VPERMILPI:
36930+
if (Src1.isUndef() || Src0.getOperand(1) == Src1.getOperand(1)) {
36931+
SDValue LHS = DAG.getBitcast(VT, Src0.getOperand(0));
36932+
SDValue RHS =
36933+
DAG.getBitcast(VT, Src1.isUndef() ? Src1 : Src1.getOperand(0));
36934+
SDValue Res =
36935+
DAG.getNode(X86ISD::VPERM2X128, DL, VT, LHS, RHS, V.getOperand(2));
3693436936
Res = DAG.getNode(SrcOpc0, DL, SrcVT0, DAG.getBitcast(SrcVT0, Res),
3693536937
Src0.getOperand(1));
3693636938
return DAG.getBitcast(VT, Res);

llvm/test/CodeGen/X86/avx-splat.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ entry:
157157
define <8 x float> @funcH(<8 x float> %a) nounwind uwtable readnone ssp {
158158
; CHECK-LABEL: funcH:
159159
; CHECK: # %bb.0: # %entry
160-
; CHECK-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[1,1,1,1,5,5,5,5]
161160
; CHECK-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
161+
; CHECK-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[1,1,1,1,5,5,5,5]
162162
; CHECK-NEXT: ret{{[l|q]}}
163163
entry:
164164
%shuffle = shufflevector <8 x float> %a, <8 x float> undef, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>

llvm/test/CodeGen/X86/extract-concat.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,12 @@ define <16 x i64> @catcat(<4 x i64> %x) {
7070
; AVX1: # %bb.0:
7171
; AVX1-NEXT: vmovddup {{.*#+}} ymm1 = ymm0[0,0,2,2]
7272
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3,2,3]
73-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm1 = ymm0[1,1,3,3]
74-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm3 = ymm1[2,3,2,3]
7573
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[0,1,0,1]
7674
; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm4
77-
; AVX1-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[2,3,2,3]
78-
; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm1
75+
; AVX1-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[2,3,2,3]
76+
; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
77+
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
78+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm3 = ymm0[1,1,3,3]
7979
; AVX1-NEXT: vmovaps %ymm4, %ymm0
8080
; AVX1-NEXT: retq
8181
;

llvm/test/CodeGen/X86/haddsub-4.ll

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ define <8 x float> @hadd_reverse_v8f32(<8 x float> %a0, <8 x float> %a1) {
6565
; AVX1-LABEL: hadd_reverse_v8f32:
6666
; AVX1: # %bb.0:
6767
; AVX1-NEXT: vhaddps %ymm1, %ymm0, %ymm0
68-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[1,0,3,2,5,4,7,6]
6968
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
69+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[1,0,3,2,5,4,7,6]
7070
; AVX1-NEXT: retq
7171
;
7272
; AVX2-LABEL: hadd_reverse_v8f32:
@@ -97,10 +97,10 @@ define <8 x float> @hadd_reverse2_v8f32(<8 x float> %a0, <8 x float> %a1) {
9797
;
9898
; AVX1-LABEL: hadd_reverse2_v8f32:
9999
; AVX1: # %bb.0:
100-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
101100
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
102-
; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[3,2,1,0,7,6,5,4]
101+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
103102
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3,0,1]
103+
; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[3,2,1,0,7,6,5,4]
104104
; AVX1-NEXT: vhaddps %ymm1, %ymm0, %ymm0
105105
; AVX1-NEXT: retq
106106
;
@@ -135,8 +135,8 @@ define <8 x float> @hadd_reverse3_v8f32(<8 x float> %a0, <8 x float> %a1) {
135135
; AVX1-LABEL: hadd_reverse3_v8f32:
136136
; AVX1: # %bb.0:
137137
; AVX1-NEXT: vhaddps %ymm1, %ymm0, %ymm0
138-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
139138
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
139+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
140140
; AVX1-NEXT: retq
141141
;
142142
; AVX2-LABEL: hadd_reverse3_v8f32:
@@ -299,15 +299,15 @@ define <8 x double> @hadd_reverse2_v8f64(<8 x double> %a0, <8 x double> %a1) nou
299299
;
300300
; AVX1-LABEL: hadd_reverse2_v8f64:
301301
; AVX1: # %bb.0:
302-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
303302
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
304-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm1 = ymm1[1,0,3,2]
305-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm1[2,3,0,1]
306-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm1 = ymm2[1,0,3,2]
303+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
307304
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3,0,1]
305+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm4 = ymm1[1,0,3,2]
306+
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
307+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm1 = ymm1[1,0,3,2]
308308
; AVX1-NEXT: vhaddpd %ymm1, %ymm0, %ymm1
309-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm3[1,0,3,2]
310-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
309+
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm3[2,3,0,1]
310+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
311311
; AVX1-NEXT: vhaddpd %ymm0, %ymm4, %ymm0
312312
; AVX1-NEXT: retq
313313
;
@@ -400,15 +400,15 @@ define <16 x float> @hadd_reverse2_v16f32(<16 x float> %a0, <16 x float> %a1) no
400400
;
401401
; AVX1-LABEL: hadd_reverse2_v16f32:
402402
; AVX1: # %bb.0:
403-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
404403
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
405-
; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[3,2,1,0,7,6,5,4]
406-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm1[2,3,0,1]
407-
; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm2[3,2,1,0,7,6,5,4]
404+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
408405
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3,0,1]
406+
; AVX1-NEXT: vpermilps {{.*#+}} ymm4 = ymm1[3,2,1,0,7,6,5,4]
407+
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm2[2,3,0,1]
408+
; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[3,2,1,0,7,6,5,4]
409409
; AVX1-NEXT: vhaddps %ymm1, %ymm0, %ymm1
410-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm3[3,2,1,0,7,6,5,4]
411-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
410+
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm3[2,3,0,1]
411+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
412412
; AVX1-NEXT: vhaddps %ymm0, %ymm4, %ymm0
413413
; AVX1-NEXT: retq
414414
;

llvm/test/CodeGen/X86/known-signbits-vector.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,21 +253,21 @@ define <4 x double> @signbits_sext_shuffle_sitofp(<4 x i32> %a0, <4 x i64> %a1)
253253
; X86: # %bb.0:
254254
; X86-NEXT: vpmovzxdq {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero
255255
; X86-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
256-
; X86-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
256+
; X86-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
257257
; X86-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
258258
; X86-NEXT: vextractf128 $1, %ymm0, %xmm1
259-
; X86-NEXT: vshufps {{.*#+}} xmm0 = xmm1[0,2],xmm0[0,2]
259+
; X86-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2]
260260
; X86-NEXT: vcvtdq2pd %xmm0, %ymm0
261261
; X86-NEXT: retl
262262
;
263263
; X64-AVX1-LABEL: signbits_sext_shuffle_sitofp:
264264
; X64-AVX1: # %bb.0:
265265
; X64-AVX1-NEXT: vpmovzxdq {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero
266266
; X64-AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
267-
; X64-AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
267+
; X64-AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
268268
; X64-AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
269269
; X64-AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
270-
; X64-AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm1[0,2],xmm0[0,2]
270+
; X64-AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2]
271271
; X64-AVX1-NEXT: vcvtdq2pd %xmm0, %ymm0
272272
; X64-AVX1-NEXT: retq
273273
;

llvm/test/CodeGen/X86/vector-shuffle-256-v4.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,8 @@ define <4 x double> @shuffle_v4f64_3330(<4 x double> %a, <4 x double> %b) {
212212
define <4 x double> @shuffle_v4f64_3210(<4 x double> %a, <4 x double> %b) {
213213
; AVX1-LABEL: shuffle_v4f64_3210:
214214
; AVX1: # %bb.0:
215-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
216215
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
216+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
217217
; AVX1-NEXT: retq
218218
;
219219
; AVX2-LABEL: shuffle_v4f64_3210:
@@ -606,8 +606,8 @@ define <4 x double> @shuffle_v4f64_22uu(<4 x double> %a, <4 x double> %b) {
606606
define <4 x double> @shuffle_v4f64_3333(<4 x double> %a, <4 x double> %b) {
607607
; AVX1-LABEL: shuffle_v4f64_3333:
608608
; AVX1: # %bb.0:
609-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,1,3,3]
610609
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
610+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,1,3,3]
611611
; AVX1-NEXT: retq
612612
;
613613
; AVX2-LABEL: shuffle_v4f64_3333:
@@ -897,8 +897,8 @@ define <4 x i64> @shuffle_v4i64_3330(<4 x i64> %a, <4 x i64> %b) {
897897
define <4 x i64> @shuffle_v4i64_3210(<4 x i64> %a, <4 x i64> %b) {
898898
; AVX1-LABEL: shuffle_v4i64_3210:
899899
; AVX1: # %bb.0:
900-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
901900
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
901+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
902902
; AVX1-NEXT: retq
903903
;
904904
; AVX2-LABEL: shuffle_v4i64_3210:
@@ -1383,8 +1383,8 @@ define <4 x i64> @shuffle_v4i64_22uu(<4 x i64> %a, <4 x i64> %b) {
13831383
define <4 x i64> @shuffle_v4i64_3333(<4 x i64> %a, <4 x i64> %b) {
13841384
; AVX1-LABEL: shuffle_v4i64_3333:
13851385
; AVX1: # %bb.0:
1386-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,1,3,3]
13871386
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
1387+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,1,3,3]
13881388
; AVX1-NEXT: retq
13891389
;
13901390
; AVX2-LABEL: shuffle_v4i64_3333:

llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -804,11 +804,11 @@ define <8 x float> @shuffle_v8f32_c348cda0(<8 x float> %a, <8 x float> %b) {
804804
define <8 x float> @shuffle_v8f32_f511235a(<8 x float> %a, <8 x float> %b) {
805805
; AVX1-LABEL: shuffle_v8f32_f511235a:
806806
; AVX1: # %bb.0:
807-
; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[3,1,2,2,7,5,6,6]
808-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3,0,1]
809807
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm0[2,3,0,1]
810808
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[1,1,1,1,5,5,5,5]
811809
; AVX1-NEXT: vshufpd {{.*#+}} ymm0 = ymm2[0],ymm0[1],ymm2[3],ymm0[3]
810+
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm1 = ymm1[2,3,0,1]
811+
; AVX1-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[3,1,2,2,7,5,6,6]
812812
; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3,4,5,6],ymm1[7]
813813
; AVX1-NEXT: retq
814814
;
@@ -878,8 +878,8 @@ define <8 x float> @shuffle_v8f32_32103210(<8 x float> %a, <8 x float> %b) {
878878
define <8 x float> @shuffle_v8f32_76547654(<8 x float> %a, <8 x float> %b) {
879879
; AVX1-LABEL: shuffle_v8f32_76547654:
880880
; AVX1: # %bb.0:
881-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
882881
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
882+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
883883
; AVX1-NEXT: retq
884884
;
885885
; AVX2-SLOW-LABEL: shuffle_v8f32_76547654:
@@ -914,8 +914,8 @@ define <8 x float> @shuffle_v8f32_76547654(<8 x float> %a, <8 x float> %b) {
914914
define <8 x float> @shuffle_v8f32_76543210(<8 x float> %a, <8 x float> %b) {
915915
; AVX1-LABEL: shuffle_v8f32_76543210:
916916
; AVX1: # %bb.0:
917-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
918917
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
918+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
919919
; AVX1-NEXT: retq
920920
;
921921
; AVX2-SLOW-LABEL: shuffle_v8f32_76543210:
@@ -1242,8 +1242,8 @@ define <8 x float> @shuffle_v8f32_uuuu1111(<8 x float> %a, <8 x float> %b) {
12421242
define <8 x float> @shuffle_v8f32_44444444(<8 x float> %a, <8 x float> %b) {
12431243
; AVX1-LABEL: shuffle_v8f32_44444444:
12441244
; AVX1: # %bb.0:
1245-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]
12461245
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
1246+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]
12471247
; AVX1-NEXT: retq
12481248
;
12491249
; AVX2OR512VL-LABEL: shuffle_v8f32_44444444:
@@ -2255,10 +2255,10 @@ define <8 x i32> @shuffle_v8i32_uuu3uu66(<8 x i32> %a, <8 x i32> %b) {
22552255
define <8 x i32> @shuffle_v8i32_6caa87e5(<8 x i32> %a, <8 x i32> %b) {
22562256
; AVX1-LABEL: shuffle_v8i32_6caa87e5:
22572257
; AVX1: # %bb.0:
2258-
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
2259-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
22602258
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm1[2,3,0,1]
22612259
; AVX1-NEXT: vshufps {{.*#+}} ymm1 = ymm2[0,0],ymm1[2,2],ymm2[4,4],ymm1[6,6]
2260+
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
2261+
; AVX1-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
22622262
; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3,4],ymm0[5],ymm1[6],ymm0[7]
22632263
; AVX1-NEXT: retq
22642264
;
@@ -2327,8 +2327,8 @@ define <8 x i32> @shuffle_v8i32_32103210(<8 x i32> %a, <8 x i32> %b) {
23272327
define <8 x i32> @shuffle_v8i32_76547654(<8 x i32> %a, <8 x i32> %b) {
23282328
; AVX1-LABEL: shuffle_v8i32_76547654:
23292329
; AVX1: # %bb.0:
2330-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
23312330
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
2331+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
23322332
; AVX1-NEXT: retq
23332333
;
23342334
; AVX2-SLOW-LABEL: shuffle_v8i32_76547654:
@@ -2363,8 +2363,8 @@ define <8 x i32> @shuffle_v8i32_76547654(<8 x i32> %a, <8 x i32> %b) {
23632363
define <8 x i32> @shuffle_v8i32_76543210(<8 x i32> %a, <8 x i32> %b) {
23642364
; AVX1-LABEL: shuffle_v8i32_76543210:
23652365
; AVX1: # %bb.0:
2366-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
23672366
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1]
2367+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
23682368
; AVX1-NEXT: retq
23692369
;
23702370
; AVX2-SLOW-LABEL: shuffle_v8i32_76543210:
@@ -2662,8 +2662,8 @@ define <8 x i32> @shuffle_v8i32_2A3Buuuu(<8 x i32> %a, <8 x i32> %b) {
26622662
define <8 x i32> @shuffle_v8i32_44444444(<8 x i32> %a, <8 x i32> %b) {
26632663
; AVX1-LABEL: shuffle_v8i32_44444444:
26642664
; AVX1: # %bb.0:
2665-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]
26662665
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
2666+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]
26672667
; AVX1-NEXT: retq
26682668
;
26692669
; AVX2OR512VL-LABEL: shuffle_v8i32_44444444:
@@ -2678,8 +2678,8 @@ define <8 x i32> @shuffle_v8i32_44444444(<8 x i32> %a, <8 x i32> %b) {
26782678
define <8 x i32> @shuffle_v8i32_44444444_bc(<8 x float> %a, <8 x float> %b) {
26792679
; AVX1-LABEL: shuffle_v8i32_44444444_bc:
26802680
; AVX1: # %bb.0:
2681-
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]
26822681
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
2682+
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,0,0,0,4,4,4,4]
26832683
; AVX1-NEXT: retq
26842684
;
26852685
; AVX2OR512VL-LABEL: shuffle_v8i32_44444444_bc:

llvm/test/CodeGen/X86/vector-shuffle-combining.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2392,7 +2392,6 @@ define <8 x i32> @combine_unneeded_subvector1(<8 x i32> %a) {
23922392
; AVX1-NEXT: vpaddd {{.*}}(%rip), %xmm0, %xmm0
23932393
; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
23942394
; AVX1-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
2395-
; AVX1-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,2,3]
23962395
; AVX1-NEXT: retq
23972396
;
23982397
; AVX2-SLOW-LABEL: combine_unneeded_subvector1:

0 commit comments

Comments
 (0)