Skip to content

Commit a71ad6a

Browse files
committed
[DAG] visitINSERT_VECTOR_ELT - fold insert_vector_elt(scalar_to_vector(x),v,i) -> build_vector()
Allow scalar_to_vector nodes to be used for the start of a build_vector creation
1 parent ee39772 commit a71ad6a

File tree

9 files changed

+142
-162
lines changed

9 files changed

+142
-162
lines changed

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19406,6 +19406,12 @@ SDValue DAGCombiner::visitINSERT_VECTOR_ELT(SDNode *N) {
1940619406
return UpdateBuildVector(Ops);
1940719407
}
1940819408

19409+
if (InVec.getOpcode() == ISD::SCALAR_TO_VECTOR && InVec.hasOneUse()) {
19410+
Ops.push_back(InVec.getOperand(0));
19411+
Ops.append(NumElts - 1, DAG.getUNDEF(InVec.getOperand(0).getValueType()));
19412+
return UpdateBuildVector(Ops);
19413+
}
19414+
1940919415
if (InVec.isUndef()) {
1941019416
Ops.append(NumElts, DAG.getUNDEF(InVal.getValueType()));
1941119417
return UpdateBuildVector(Ops);

llvm/test/CodeGen/PowerPC/aix_scalar_vector_permuted.ll

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,13 @@ define void @test_f2(%f2* %P, %f2* %Q, %f2* %S) {
3030
;
3131
; AIX-P8-32-LABEL: test_f2:
3232
; AIX-P8-32: # %bb.0:
33-
; AIX-P8-32-NEXT: lwz r6, L..C0(r2) # %const.0
34-
; AIX-P8-32-NEXT: li r7, 4
33+
; AIX-P8-32-NEXT: li r6, 4
3534
; AIX-P8-32-NEXT: lxsiwzx v3, 0, r3
36-
; AIX-P8-32-NEXT: lxsiwzx v0, 0, r4
37-
; AIX-P8-32-NEXT: lxsiwzx v2, r3, r7
38-
; AIX-P8-32-NEXT: lxsiwzx v5, r4, r7
39-
; AIX-P8-32-NEXT: lxvw4x v4, 0, r6
40-
; AIX-P8-32-NEXT: vperm v2, v3, v2, v4
41-
; AIX-P8-32-NEXT: vperm v3, v0, v5, v4
35+
; AIX-P8-32-NEXT: lxsiwzx v5, 0, r4
36+
; AIX-P8-32-NEXT: lxsiwzx v2, r3, r6
37+
; AIX-P8-32-NEXT: lxsiwzx v4, r4, r6
38+
; AIX-P8-32-NEXT: vmrgow v2, v3, v2
39+
; AIX-P8-32-NEXT: vmrgow v3, v5, v4
4240
; AIX-P8-32-NEXT: xvaddsp vs0, v2, v3
4341
; AIX-P8-32-NEXT: xxsldwi vs1, vs0, vs0, 1
4442
; AIX-P8-32-NEXT: xscvspdpn f0, vs0
@@ -57,17 +55,14 @@ define void @test_f2(%f2* %P, %f2* %Q, %f2* %S) {
5755
;
5856
; AIX-P9-32-LABEL: test_f2:
5957
; AIX-P9-32: # %bb.0:
60-
; AIX-P9-32-NEXT: lfiwzx f0, 0, r3
61-
; AIX-P9-32-NEXT: lwz r3, 4(r3)
62-
; AIX-P9-32-NEXT: xxsldwi vs0, f0, f0, 1
63-
; AIX-P9-32-NEXT: mtfprwz f1, r3
64-
; AIX-P9-32-NEXT: lwz r3, 4(r4)
65-
; AIX-P9-32-NEXT: xxinsertw vs0, vs1, 4
66-
; AIX-P9-32-NEXT: lfiwzx f1, 0, r4
67-
; AIX-P9-32-NEXT: mtfprwz f2, r3
68-
; AIX-P9-32-NEXT: xxsldwi vs1, f1, f1, 1
69-
; AIX-P9-32-NEXT: xxinsertw vs1, vs2, 4
70-
; AIX-P9-32-NEXT: xvaddsp vs0, vs0, vs1
58+
; AIX-P9-32-NEXT: li r6, 4
59+
; AIX-P9-32-NEXT: lxsiwzx v3, 0, r3
60+
; AIX-P9-32-NEXT: lxsiwzx v4, 0, r4
61+
; AIX-P9-32-NEXT: lxsiwzx v2, r3, r6
62+
; AIX-P9-32-NEXT: vmrgow v2, v3, v2
63+
; AIX-P9-32-NEXT: lxsiwzx v3, r4, r6
64+
; AIX-P9-32-NEXT: vmrgow v3, v4, v3
65+
; AIX-P9-32-NEXT: xvaddsp vs0, v2, v3
7166
; AIX-P9-32-NEXT: xscvspdpn f1, vs0
7267
; AIX-P9-32-NEXT: xxsldwi vs0, vs0, vs0, 1
7368
; AIX-P9-32-NEXT: xscvspdpn f0, vs0

llvm/test/CodeGen/PowerPC/canonical-merge-shuffles.ll

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -529,18 +529,16 @@ define dso_local <8 x i16> @testmrglb3(<8 x i8>* nocapture readonly %a) local_un
529529
;
530530
; P8-AIX-32-LABEL: testmrglb3:
531531
; P8-AIX-32: # %bb.0: # %entry
532-
; P8-AIX-32-NEXT: lwz r5, 4(r3)
533-
; P8-AIX-32-NEXT: lwz r4, L..C0(r2) # %const.0
534-
; P8-AIX-32-NEXT: stw r5, -32(r1)
535-
; P8-AIX-32-NEXT: lwz r3, 0(r3)
536-
; P8-AIX-32-NEXT: lxvw4x v2, 0, r4
537-
; P8-AIX-32-NEXT: addi r4, r1, -16
538-
; P8-AIX-32-NEXT: stw r3, -16(r1)
539-
; P8-AIX-32-NEXT: addi r3, r1, -32
540-
; P8-AIX-32-NEXT: lxvw4x v3, 0, r3
541-
; P8-AIX-32-NEXT: lxvw4x v4, 0, r4
542-
; P8-AIX-32-NEXT: vperm v2, v4, v3, v2
532+
; P8-AIX-32-NEXT: lwz r4, 4(r3)
543533
; P8-AIX-32-NEXT: xxlxor v3, v3, v3
534+
; P8-AIX-32-NEXT: stw r4, -16(r1)
535+
; P8-AIX-32-NEXT: addi r4, r1, -32
536+
; P8-AIX-32-NEXT: lwz r3, 0(r3)
537+
; P8-AIX-32-NEXT: stw r3, -32(r1)
538+
; P8-AIX-32-NEXT: addi r3, r1, -16
539+
; P8-AIX-32-NEXT: lxvw4x vs0, 0, r3
540+
; P8-AIX-32-NEXT: lxvw4x vs1, 0, r4
541+
; P8-AIX-32-NEXT: xxmrghw v2, vs1, vs0
544542
; P8-AIX-32-NEXT: vmrghb v2, v3, v2
545543
; P8-AIX-32-NEXT: blr
546544
entry:
@@ -706,7 +704,7 @@ define dso_local <16 x i8> @no_crash_bitcast(i32 %a) {
706704
;
707705
; P8-AIX-32-LABEL: no_crash_bitcast:
708706
; P8-AIX-32: # %bb.0: # %entry
709-
; P8-AIX-32-NEXT: lwz r4, L..C1(r2) # %const.0
707+
; P8-AIX-32-NEXT: lwz r4, L..C0(r2) # %const.0
710708
; P8-AIX-32-NEXT: stw r3, -16(r1)
711709
; P8-AIX-32-NEXT: addi r3, r1, -16
712710
; P8-AIX-32-NEXT: lxvw4x v3, 0, r3
@@ -780,8 +778,8 @@ define dso_local <4 x i32> @replace_undefs_in_splat(<4 x i32> %a) local_unnamed_
780778
;
781779
; P8-AIX-32-LABEL: replace_undefs_in_splat:
782780
; P8-AIX-32: # %bb.0: # %entry
783-
; P8-AIX-32-NEXT: lwz r3, L..C2(r2) # %const.0
784-
; P8-AIX-32-NEXT: lwz r4, L..C3(r2) # %const.1
781+
; P8-AIX-32-NEXT: lwz r3, L..C1(r2) # %const.0
782+
; P8-AIX-32-NEXT: lwz r4, L..C2(r2) # %const.1
785783
; P8-AIX-32-NEXT: lxvw4x v3, 0, r3
786784
; P8-AIX-32-NEXT: lxvw4x v4, 0, r4
787785
; P8-AIX-32-NEXT: vperm v2, v2, v4, v3
@@ -1025,18 +1023,16 @@ define dso_local <2 x i64> @testSplat8(<8 x i8>* nocapture readonly %ptr) local_
10251023
;
10261024
; P8-AIX-32-LABEL: testSplat8:
10271025
; P8-AIX-32: # %bb.0: # %entry
1028-
; P8-AIX-32-NEXT: lwz r5, 4(r3)
1029-
; P8-AIX-32-NEXT: lwz r4, L..C4(r2) # %const.0
1030-
; P8-AIX-32-NEXT: stw r5, -32(r1)
1026+
; P8-AIX-32-NEXT: lwz r4, 4(r3)
1027+
; P8-AIX-32-NEXT: stw r4, -16(r1)
1028+
; P8-AIX-32-NEXT: addi r4, r1, -32
10311029
; P8-AIX-32-NEXT: lwz r3, 0(r3)
1032-
; P8-AIX-32-NEXT: lxvw4x v2, 0, r4
1033-
; P8-AIX-32-NEXT: addi r4, r1, -16
1034-
; P8-AIX-32-NEXT: stw r3, -16(r1)
1035-
; P8-AIX-32-NEXT: addi r3, r1, -32
1036-
; P8-AIX-32-NEXT: lxvw4x v3, 0, r3
1037-
; P8-AIX-32-NEXT: lxvw4x v4, 0, r4
1038-
; P8-AIX-32-NEXT: vperm v2, v4, v3, v2
1039-
; P8-AIX-32-NEXT: xxmrghd v2, v2, v2
1030+
; P8-AIX-32-NEXT: stw r3, -32(r1)
1031+
; P8-AIX-32-NEXT: addi r3, r1, -16
1032+
; P8-AIX-32-NEXT: lxvw4x vs0, 0, r3
1033+
; P8-AIX-32-NEXT: lxvw4x vs1, 0, r4
1034+
; P8-AIX-32-NEXT: xxmrghw vs0, vs1, vs0
1035+
; P8-AIX-32-NEXT: xxmrghd v2, vs0, vs0
10401036
; P8-AIX-32-NEXT: blr
10411037
entry:
10421038
%0 = load <8 x i8>, <8 x i8>* %ptr, align 8
@@ -1082,7 +1078,7 @@ define <2 x i64> @testSplati64_0(<1 x i64>* nocapture readonly %ptr) #0 {
10821078
;
10831079
; P8-AIX-32-LABEL: testSplati64_0:
10841080
; P8-AIX-32: # %bb.0: # %entry
1085-
; P8-AIX-32-NEXT: lwz r4, L..C5(r2) # %const.0
1081+
; P8-AIX-32-NEXT: lwz r4, L..C3(r2) # %const.0
10861082
; P8-AIX-32-NEXT: lwz r5, 4(r3)
10871083
; P8-AIX-32-NEXT: lwz r3, 0(r3)
10881084
; P8-AIX-32-NEXT: stw r5, -16(r1)

llvm/test/CodeGen/PowerPC/load-and-splat.ll

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -811,45 +811,42 @@ define <16 x i8> @unadjusted_lxvdsx(i64* %s, i64* %t) {
811811
;
812812
; P9-AIX32-LABEL: unadjusted_lxvdsx:
813813
; P9-AIX32: # %bb.0: # %entry
814-
; P9-AIX32-NEXT: lwz r4, 0(r3)
814+
; P9-AIX32-NEXT: lwz r4, 4(r3)
815815
; P9-AIX32-NEXT: stw r4, -16(r1)
816-
; P9-AIX32-NEXT: lwz r3, 4(r3)
817-
; P9-AIX32-NEXT: lxv vs1, -16(r1)
818-
; P9-AIX32-NEXT: mtfprwz f0, r3
819-
; P9-AIX32-NEXT: xxinsertw vs1, vs0, 4
820-
; P9-AIX32-NEXT: xxmrghd v2, vs1, vs1
816+
; P9-AIX32-NEXT: lwz r3, 0(r3)
817+
; P9-AIX32-NEXT: lxv vs0, -16(r1)
818+
; P9-AIX32-NEXT: stw r3, -32(r1)
819+
; P9-AIX32-NEXT: lxv vs1, -32(r1)
820+
; P9-AIX32-NEXT: xxmrghw vs0, vs1, vs0
821+
; P9-AIX32-NEXT: xxmrghd v2, vs0, vs0
821822
; P9-AIX32-NEXT: blr
822823
;
823824
; P8-AIX32-LABEL: unadjusted_lxvdsx:
824825
; P8-AIX32: # %bb.0: # %entry
825-
; P8-AIX32-NEXT: lwz r5, 4(r3)
826-
; P8-AIX32-NEXT: lwz r4, L..C3(r2) # %const.0
827-
; P8-AIX32-NEXT: stw r5, -32(r1)
826+
; P8-AIX32-NEXT: lwz r4, 4(r3)
827+
; P8-AIX32-NEXT: stw r4, -16(r1)
828+
; P8-AIX32-NEXT: addi r4, r1, -32
828829
; P8-AIX32-NEXT: lwz r3, 0(r3)
829-
; P8-AIX32-NEXT: lxvw4x v2, 0, r4
830-
; P8-AIX32-NEXT: addi r4, r1, -16
831-
; P8-AIX32-NEXT: stw r3, -16(r1)
832-
; P8-AIX32-NEXT: addi r3, r1, -32
833-
; P8-AIX32-NEXT: lxvw4x v3, 0, r3
834-
; P8-AIX32-NEXT: lxvw4x v4, 0, r4
835-
; P8-AIX32-NEXT: vperm v2, v4, v3, v2
836-
; P8-AIX32-NEXT: xxmrghd v2, v2, v2
830+
; P8-AIX32-NEXT: stw r3, -32(r1)
831+
; P8-AIX32-NEXT: addi r3, r1, -16
832+
; P8-AIX32-NEXT: lxvw4x vs0, 0, r3
833+
; P8-AIX32-NEXT: lxvw4x vs1, 0, r4
834+
; P8-AIX32-NEXT: xxmrghw vs0, vs1, vs0
835+
; P8-AIX32-NEXT: xxmrghd v2, vs0, vs0
837836
; P8-AIX32-NEXT: blr
838837
;
839838
; P7-AIX32-LABEL: unadjusted_lxvdsx:
840839
; P7-AIX32: # %bb.0: # %entry
841840
; P7-AIX32-NEXT: lwz r5, 4(r3)
842-
; P7-AIX32-NEXT: lwz r4, L..C3(r2) # %const.0
843-
; P7-AIX32-NEXT: stw r5, -32(r1)
844-
; P7-AIX32-NEXT: lwz r3, 0(r3)
845-
; P7-AIX32-NEXT: lxvw4x v2, 0, r4
846841
; P7-AIX32-NEXT: addi r4, r1, -16
847-
; P7-AIX32-NEXT: stw r3, -16(r1)
842+
; P7-AIX32-NEXT: stw r5, -16(r1)
843+
; P7-AIX32-NEXT: lwz r3, 0(r3)
844+
; P7-AIX32-NEXT: stw r3, -32(r1)
848845
; P7-AIX32-NEXT: addi r3, r1, -32
849-
; P7-AIX32-NEXT: lxvw4x v3, 0, r3
850-
; P7-AIX32-NEXT: lxvw4x v4, 0, r4
851-
; P7-AIX32-NEXT: vperm v2, v4, v3, v2
852-
; P7-AIX32-NEXT: xxmrghd v2, v2, v2
846+
; P7-AIX32-NEXT: lxvw4x vs0, 0, r4
847+
; P7-AIX32-NEXT: lxvw4x vs1, 0, r3
848+
; P7-AIX32-NEXT: xxmrghw vs0, vs1, vs0
849+
; P7-AIX32-NEXT: xxmrghd v2, vs0, vs0
853850
; P7-AIX32-NEXT: blr
854851
entry:
855852
%0 = bitcast i64* %s to <8 x i8>*

llvm/test/CodeGen/PowerPC/pre-inc-disable.ll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,22 +86,22 @@ define void @test64(i8* nocapture readonly %pix2, i32 signext %i_pix2) {
8686
; P9BE-AIX32-LABEL: test64:
8787
; P9BE-AIX32: # %bb.0: # %entry
8888
; P9BE-AIX32-NEXT: lwzux 4, 3, 4
89-
; P9BE-AIX32-NEXT: lwz 5, L..C0(2) # %const.0
9089
; P9BE-AIX32-NEXT: xxlxor 4, 4, 4
91-
; P9BE-AIX32-NEXT: lxv 3, 0(5)
92-
; P9BE-AIX32-NEXT: stw 4, -32(1)
90+
; P9BE-AIX32-NEXT: stw 4, -48(1)
9391
; P9BE-AIX32-NEXT: lwz 4, 4(3)
94-
; P9BE-AIX32-NEXT: lxv 2, -32(1)
95-
; P9BE-AIX32-NEXT: stw 4, -16(1)
96-
; P9BE-AIX32-NEXT: mtfprwz 0, 4
92+
; P9BE-AIX32-NEXT: lxv 0, -48(1)
93+
; P9BE-AIX32-NEXT: stw 4, -32(1)
94+
; P9BE-AIX32-NEXT: lwz 4, L..C0(2) # %const.0
9795
; P9BE-AIX32-NEXT: lwz 3, 8(3)
98-
; P9BE-AIX32-NEXT: xxinsertw 2, 0, 4
99-
; P9BE-AIX32-NEXT: mtfprwz 0, 3
96+
; P9BE-AIX32-NEXT: lxv 1, -32(1)
97+
; P9BE-AIX32-NEXT: lxv 3, 0(4)
98+
; P9BE-AIX32-NEXT: stw 3, -16(1)
10099
; P9BE-AIX32-NEXT: lwz 3, L..C1(2) # %const.1
100+
; P9BE-AIX32-NEXT: xxmrghw 2, 0, 1
101+
; P9BE-AIX32-NEXT: lxv 0, -16(1)
101102
; P9BE-AIX32-NEXT: vperm 2, 4, 2, 3
102-
; P9BE-AIX32-NEXT: lxv 3, -16(1)
103103
; P9BE-AIX32-NEXT: lxv 4, 0(3)
104-
; P9BE-AIX32-NEXT: xxinsertw 3, 0, 4
104+
; P9BE-AIX32-NEXT: xxmrghw 3, 1, 0
105105
; P9BE-AIX32-NEXT: vperm 3, 3, 3, 4
106106
; P9BE-AIX32-NEXT: vspltisw 4, 8
107107
; P9BE-AIX32-NEXT: vnegw 3, 3

llvm/test/CodeGen/PowerPC/reduce_scalarization.ll

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,13 @@ define dso_local <2 x double> @test2(<2 x float>* nocapture readonly %a, <2 x fl
6868
;
6969
; AIX-32-LABEL: test2:
7070
; AIX-32: # %bb.0: # %entry
71-
; AIX-32-NEXT: lwz r5, L..C0(r2) # %const.0
72-
; AIX-32-NEXT: li r6, 4
71+
; AIX-32-NEXT: li r5, 4
7372
; AIX-32-NEXT: lxsiwzx v3, 0, r3
74-
; AIX-32-NEXT: lxsiwzx v0, 0, r4
75-
; AIX-32-NEXT: lxsiwzx v2, r3, r6
76-
; AIX-32-NEXT: lxsiwzx v5, r4, r6
77-
; AIX-32-NEXT: lxvw4x v4, 0, r5
78-
; AIX-32-NEXT: vperm v2, v3, v2, v4
79-
; AIX-32-NEXT: vperm v3, v0, v5, v4
73+
; AIX-32-NEXT: lxsiwzx v5, 0, r4
74+
; AIX-32-NEXT: lxsiwzx v2, r3, r5
75+
; AIX-32-NEXT: lxsiwzx v4, r4, r5
76+
; AIX-32-NEXT: vmrgow v2, v3, v2
77+
; AIX-32-NEXT: vmrgow v3, v5, v4
8078
; AIX-32-NEXT: xvsubsp vs0, v2, v3
8179
; AIX-32-NEXT: xxsldwi vs1, vs0, vs0, 1
8280
; AIX-32-NEXT: xscvspdpn f0, vs0
@@ -114,15 +112,13 @@ define dso_local <2 x double> @test3(<2 x float>* nocapture readonly %a, <2 x fl
114112
;
115113
; AIX-32-LABEL: test3:
116114
; AIX-32: # %bb.0: # %entry
117-
; AIX-32-NEXT: lwz r5, L..C1(r2) # %const.0
118-
; AIX-32-NEXT: li r6, 4
115+
; AIX-32-NEXT: li r5, 4
119116
; AIX-32-NEXT: lxsiwzx v3, 0, r3
120-
; AIX-32-NEXT: lxsiwzx v0, 0, r4
121-
; AIX-32-NEXT: lxsiwzx v2, r3, r6
122-
; AIX-32-NEXT: lxsiwzx v5, r4, r6
123-
; AIX-32-NEXT: lxvw4x v4, 0, r5
124-
; AIX-32-NEXT: vperm v2, v3, v2, v4
125-
; AIX-32-NEXT: vperm v3, v0, v5, v4
117+
; AIX-32-NEXT: lxsiwzx v5, 0, r4
118+
; AIX-32-NEXT: lxsiwzx v2, r3, r5
119+
; AIX-32-NEXT: lxsiwzx v4, r4, r5
120+
; AIX-32-NEXT: vmrgow v2, v3, v2
121+
; AIX-32-NEXT: vmrgow v3, v5, v4
126122
; AIX-32-NEXT: xvaddsp vs0, v2, v3
127123
; AIX-32-NEXT: xxsldwi vs1, vs0, vs0, 1
128124
; AIX-32-NEXT: xscvspdpn f0, vs0
@@ -160,15 +156,13 @@ define dso_local <2 x double> @test4(<2 x float>* nocapture readonly %a, <2 x fl
160156
;
161157
; AIX-32-LABEL: test4:
162158
; AIX-32: # %bb.0: # %entry
163-
; AIX-32-NEXT: lwz r5, L..C2(r2) # %const.0
164-
; AIX-32-NEXT: li r6, 4
159+
; AIX-32-NEXT: li r5, 4
165160
; AIX-32-NEXT: lxsiwzx v3, 0, r3
166-
; AIX-32-NEXT: lxsiwzx v0, 0, r4
167-
; AIX-32-NEXT: lxsiwzx v2, r3, r6
168-
; AIX-32-NEXT: lxsiwzx v5, r4, r6
169-
; AIX-32-NEXT: lxvw4x v4, 0, r5
170-
; AIX-32-NEXT: vperm v2, v3, v2, v4
171-
; AIX-32-NEXT: vperm v3, v0, v5, v4
161+
; AIX-32-NEXT: lxsiwzx v5, 0, r4
162+
; AIX-32-NEXT: lxsiwzx v2, r3, r5
163+
; AIX-32-NEXT: lxsiwzx v4, r4, r5
164+
; AIX-32-NEXT: vmrgow v2, v3, v2
165+
; AIX-32-NEXT: vmrgow v3, v5, v4
172166
; AIX-32-NEXT: xvmulsp vs0, v2, v3
173167
; AIX-32-NEXT: xxsldwi vs1, vs0, vs0, 1
174168
; AIX-32-NEXT: xscvspdpn f0, vs0
@@ -215,7 +209,7 @@ define dso_local <2 x double> @test5(<2 x double> %a) {
215209
;
216210
; AIX-32-LABEL: test5:
217211
; AIX-32: # %bb.0: # %entry
218-
; AIX-32-NEXT: lwz r3, L..C3(r2) # @G
212+
; AIX-32-NEXT: lwz r3, L..C0(r2) # @G
219213
; AIX-32-NEXT: lfs f0, 4(r3)
220214
; AIX-32-NEXT: lfs f1, 0(r3)
221215
; AIX-32-NEXT: xxmrghd vs0, vs1, vs0
@@ -284,7 +278,7 @@ define dso_local i32 @test6() #0 {
284278
;
285279
; AIX-32-LABEL: test6:
286280
; AIX-32: # %bb.0: # %bb
287-
; AIX-32-NEXT: lwz r3, L..C4(r2) # @Glob1
281+
; AIX-32-NEXT: lwz r3, L..C1(r2) # @Glob1
288282
; AIX-32-NEXT: lis r4, 8
289283
; AIX-32-NEXT: ori r4, r4, 38248
290284
; AIX-32-NEXT: lfsux f0, r3, r4

llvm/test/CodeGen/Thumb2/mve-vld3.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,9 +1025,8 @@ define void @vld3_v2f16(<6 x half> *%src, <2 x half> *%dst) {
10251025
; CHECK: @ %bb.0: @ %entry
10261026
; CHECK-NEXT: ldrd r2, r3, [r0]
10271027
; CHECK-NEXT: ldr r0, [r0, #8]
1028-
; CHECK-NEXT: vmov.32 q0[0], r2
10291028
; CHECK-NEXT: vmov.32 q0[1], r3
1030-
; CHECK-NEXT: vmov.32 q0[2], r0
1029+
; CHECK-NEXT: vmov q0[2], q0[0], r2, r0
10311030
; CHECK-NEXT: vmovx.f16 s8, s0
10321031
; CHECK-NEXT: vmovx.f16 s4, s2
10331032
; CHECK-NEXT: vins.f16 s8, s2

0 commit comments

Comments
 (0)