Skip to content

Commit 032014e

Browse files
authored
[PowerPC] Add SDNPMemOperand to some nodes (#115580)
Nodes created with `getMemIntrinsicNode` have memory operands. In order for operands to be propagated to machine instructions, the nodes should have `SDNPMemOperand` property. Similar to 3c8c385.
1 parent e9e8f59 commit 032014e

30 files changed

+448
-273
lines changed

llvm/lib/Target/PowerPC/PPCInstrInfo.td

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,17 +166,17 @@ def PPCany_fcfidus : PatFrags<(ops node:$op),
166166

167167
def PPCstore_scal_int_from_vsr:
168168
SDNode<"PPCISD::ST_VSR_SCAL_INT", SDT_PPCstore_scal_int_from_vsr,
169-
[SDNPHasChain, SDNPMayStore]>;
169+
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
170170
def PPCstfiwx : SDNode<"PPCISD::STFIWX", SDT_PPCstfiwx,
171-
[SDNPHasChain, SDNPMayStore]>;
171+
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
172172
def PPClfiwax : SDNode<"PPCISD::LFIWAX", SDT_PPClfiwx,
173173
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
174174
def PPClfiwzx : SDNode<"PPCISD::LFIWZX", SDT_PPClfiwx,
175175
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
176176
def PPClxsizx : SDNode<"PPCISD::LXSIZX", SDT_PPCLxsizx,
177-
[SDNPHasChain, SDNPMayLoad]>;
177+
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
178178
def PPCstxsix : SDNode<"PPCISD::STXSIX", SDT_PPCstxsix,
179-
[SDNPHasChain, SDNPMayStore]>;
179+
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
180180
def PPCVexts : SDNode<"PPCISD::VEXTS", SDT_PPCVexts, []>;
181181

182182
// Extract FPSCR (not modeled at the DAG level).
@@ -376,7 +376,7 @@ def PPCatomicCmpSwap_16 :
376376
def PPClbrx : SDNode<"PPCISD::LBRX", SDT_PPClbrx,
377377
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
378378
def PPCstbrx : SDNode<"PPCISD::STBRX", SDT_PPCstbrx,
379-
[SDNPHasChain, SDNPMayStore]>;
379+
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
380380
def PPCStoreCond : SDNode<"PPCISD::STORE_COND", SDT_StoreCond,
381381
[SDNPHasChain, SDNPMayStore,
382382
SDNPMemOperand, SDNPOutGlue]>;

llvm/lib/Target/PowerPC/PPCInstrP10.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def SDT_PPCLXVRZX : SDTypeProfile<1, 2, [
105105

106106
// PPC Specific DAG Nodes.
107107
def PPClxvrzx : SDNode<"PPCISD::LXVRZX", SDT_PPCLXVRZX,
108-
[SDNPHasChain, SDNPMayLoad]>;
108+
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
109109

110110
// Top-level class for prefixed instructions.
111111
class PI<bits<6> pref, bits<6> opcode, dag OOL, dag IOL, string asmstr,

llvm/lib/Target/PowerPC/PPCInstrVSX.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ def SDT_PPCxxperm : SDTypeProfile<1, 3, [
9090
def PPClxvd2x : SDNode<"PPCISD::LXVD2X", SDT_PPClxvd2x,
9191
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
9292
def PPCstxvd2x : SDNode<"PPCISD::STXVD2X", SDT_PPCstxvd2x,
93-
[SDNPHasChain, SDNPMayStore]>;
93+
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
9494
def PPCld_vec_be : SDNode<"PPCISD::LOAD_VEC_BE", SDT_PPCld_vec_be,
9595
[SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
9696
def PPCst_vec_be : SDNode<"PPCISD::STORE_VEC_BE", SDT_PPCst_vec_be,
97-
[SDNPHasChain, SDNPMayStore]>;
97+
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
9898
def PPCxxswapd : SDNode<"PPCISD::XXSWAPD", SDT_PPCxxswapd, [SDNPHasChain]>;
9999
def PPCmfvsr : SDNode<"PPCISD::MFVSR", SDTUnaryOp, []>;
100100
def PPCmtvsra : SDNode<"PPCISD::MTVSRA", SDTUnaryOp, []>;

llvm/test/CodeGen/PowerPC/const-nonsplat-array-init.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ define dso_local void @foo1_int_be_reuse4B(ptr nocapture noundef writeonly %a) l
5555
; P8-LE-NEXT: lxvd2x 0, 0, 4
5656
; P8-LE-NEXT: lis 4, 1798
5757
; P8-LE-NEXT: ori 4, 4, 1284
58-
; P8-LE-NEXT: stxvd2x 0, 0, 3
5958
; P8-LE-NEXT: stw 4, 16(3)
6059
; P8-LE-NEXT: li 4, 2312
60+
; P8-LE-NEXT: stxvd2x 0, 0, 3
6161
; P8-LE-NEXT: sth 4, 20(3)
6262
; P8-LE-NEXT: blr
6363
;
@@ -143,9 +143,9 @@ define dso_local void @foo2_int_le_reuse4B(ptr nocapture noundef writeonly %a) l
143143
; P8-LE-NEXT: lxvd2x 0, 0, 4
144144
; P8-LE-NEXT: lis 4, 2826
145145
; P8-LE-NEXT: ori 4, 4, 2312
146-
; P8-LE-NEXT: stxvd2x 0, 0, 3
147146
; P8-LE-NEXT: stw 4, 16(3)
148147
; P8-LE-NEXT: li 4, 3340
148+
; P8-LE-NEXT: stxvd2x 0, 0, 3
149149
; P8-LE-NEXT: sth 4, 20(3)
150150
; P8-LE-NEXT: blr
151151
;
@@ -231,9 +231,9 @@ define dso_local void @foo3_int_be_reuse4B(ptr nocapture noundef writeonly %a) l
231231
; P8-LE-NEXT: lxvd2x 0, 0, 4
232232
; P8-LE-NEXT: lis 4, 1543
233233
; P8-LE-NEXT: ori 4, 4, 1029
234-
; P8-LE-NEXT: stxvd2x 0, 0, 3
235234
; P8-LE-NEXT: stw 4, 16(3)
236235
; P8-LE-NEXT: li 4, 2057
236+
; P8-LE-NEXT: stxvd2x 0, 0, 3
237237
; P8-LE-NEXT: sth 4, 20(3)
238238
; P8-LE-NEXT: blr
239239
;
@@ -313,9 +313,9 @@ define dso_local void @foo4_int_le_reuse4B(ptr nocapture noundef writeonly %a) l
313313
; P8-LE-NEXT: lxvd2x 0, 0, 4
314314
; P8-LE-NEXT: lis 4, 2571
315315
; P8-LE-NEXT: ori 4, 4, 2057
316-
; P8-LE-NEXT: stxvd2x 0, 0, 3
317316
; P8-LE-NEXT: stw 4, 16(3)
318317
; P8-LE-NEXT: li 4, 3085
318+
; P8-LE-NEXT: stxvd2x 0, 0, 3
319319
; P8-LE-NEXT: sth 4, 20(3)
320320
; P8-LE-NEXT: blr
321321
;
@@ -389,8 +389,8 @@ define dso_local void @foo5_int_be_reuse4B(ptr nocapture noundef writeonly %a) l
389389
; P8-LE-NEXT: lxvd2x 0, 0, 4
390390
; P8-LE-NEXT: lis 4, 1029
391391
; P8-LE-NEXT: ori 4, 4, 1543
392-
; P8-LE-NEXT: stxvd2x 0, 0, 3
393392
; P8-LE-NEXT: stw 4, 16(3)
393+
; P8-LE-NEXT: stxvd2x 0, 0, 3
394394
; P8-LE-NEXT: blr
395395
;
396396
; P9-LE-LABEL: foo5_int_be_reuse4B:
@@ -455,8 +455,8 @@ define dso_local void @foo6_int_le_reuse4B(ptr nocapture noundef writeonly %a) l
455455
; P8-LE-NEXT: lxvd2x 0, 0, 4
456456
; P8-LE-NEXT: lis 4, 2057
457457
; P8-LE-NEXT: ori 4, 4, 2571
458-
; P8-LE-NEXT: stxvd2x 0, 0, 3
459458
; P8-LE-NEXT: stw 4, 16(3)
459+
; P8-LE-NEXT: stxvd2x 0, 0, 3
460460
; P8-LE-NEXT: blr
461461
;
462462
; P9-LE-LABEL: foo6_int_le_reuse4B:
@@ -1221,8 +1221,8 @@ define dso_local void @foo15_int_noreuse4B(ptr nocapture noundef writeonly %a) l
12211221
; P8-LE-NEXT: lxvd2x 0, 0, 4
12221222
; P8-LE-NEXT: lis 4, 1029
12231223
; P8-LE-NEXT: ori 4, 4, 1544
1224-
; P8-LE-NEXT: stxvd2x 0, 0, 3
12251224
; P8-LE-NEXT: stw 4, 16(3)
1225+
; P8-LE-NEXT: stxvd2x 0, 0, 3
12261226
; P8-LE-NEXT: blr
12271227
;
12281228
; P9-LE-LABEL: foo15_int_noreuse4B:
@@ -1371,8 +1371,8 @@ define dso_local void @foo17_fp_be_reuse4B(ptr nocapture noundef writeonly %a) l
13711371
; P8-LE-NEXT: lxvd2x 0, 0, 4
13721372
; P8-LE-NEXT: lis 4, 16673
13731373
; P8-LE-NEXT: ori 4, 4, 39322
1374-
; P8-LE-NEXT: stxvd2x 0, 0, 3
13751374
; P8-LE-NEXT: stw 4, 16(3)
1375+
; P8-LE-NEXT: stxvd2x 0, 0, 3
13761376
; P8-LE-NEXT: blr
13771377
;
13781378
; P9-LE-LABEL: foo17_fp_be_reuse4B:
@@ -1437,8 +1437,8 @@ define dso_local void @foo18_fp_le_reuse4B(ptr nocapture noundef writeonly %a) l
14371437
; P8-LE-NEXT: lxvd2x 0, 0, 4
14381438
; P8-LE-NEXT: lis 4, 16675
14391439
; P8-LE-NEXT: ori 4, 4, 13107
1440-
; P8-LE-NEXT: stxvd2x 0, 0, 3
14411440
; P8-LE-NEXT: stw 4, 16(3)
1441+
; P8-LE-NEXT: stxvd2x 0, 0, 3
14421442
; P8-LE-NEXT: blr
14431443
;
14441444
; P9-LE-LABEL: foo18_fp_le_reuse4B:
@@ -1504,8 +1504,8 @@ define dso_local void @foo19_fp_be_reuse8B(ptr nocapture noundef writeonly %a) l
15041504
; P8-LE-NEXT: lxvd2x 0, 0, 4
15051505
; P8-LE-NEXT: li 4, 4105
15061506
; P8-LE-NEXT: rldic 4, 4, 50, 1
1507-
; P8-LE-NEXT: stxvd2x 0, 0, 3
15081507
; P8-LE-NEXT: std 4, 16(3)
1508+
; P8-LE-NEXT: stxvd2x 0, 0, 3
15091509
; P8-LE-NEXT: blr
15101510
;
15111511
; P9-LE-LABEL: foo19_fp_be_reuse8B:
@@ -1649,8 +1649,8 @@ define dso_local void @foo21_fp_noreuse4B(ptr nocapture noundef writeonly %a) lo
16491649
; P8-LE-NEXT: lxvd2x 0, 0, 4
16501650
; P8-LE-NEXT: lis 4, 16268
16511651
; P8-LE-NEXT: ori 4, 4, 52430
1652-
; P8-LE-NEXT: stxvd2x 0, 0, 3
16531652
; P8-LE-NEXT: stw 4, 16(3)
1653+
; P8-LE-NEXT: stxvd2x 0, 0, 3
16541654
; P8-LE-NEXT: blr
16551655
;
16561656
; P9-LE-LABEL: foo21_fp_noreuse4B:
@@ -1716,8 +1716,8 @@ define dso_local void @foo22_fp_noreuse8B(ptr nocapture noundef writeonly %a) lo
17161716
; P8-LE-NEXT: lxvd2x 0, 0, 4
17171717
; P8-LE-NEXT: li 4, 21503
17181718
; P8-LE-NEXT: rotldi 4, 4, 52
1719-
; P8-LE-NEXT: stxvd2x 0, 0, 3
17201719
; P8-LE-NEXT: std 4, 16(3)
1720+
; P8-LE-NEXT: stxvd2x 0, 0, 3
17211721
; P8-LE-NEXT: blr
17221722
;
17231723
; P9-LE-LABEL: foo22_fp_noreuse8B:

llvm/test/CodeGen/PowerPC/const-splat-array-init.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ define dso_local void @foo1(ptr nocapture noundef writeonly %a) local_unnamed_ad
4545
; P8-LE-NEXT: addi 4, 4, .LCPI0_0@toc@l
4646
; P8-LE-NEXT: lxvd2x 0, 0, 4
4747
; P8-LE-NEXT: li 4, 3333
48-
; P8-LE-NEXT: stxvd2x 0, 0, 3
4948
; P8-LE-NEXT: sth 4, 16(3)
49+
; P8-LE-NEXT: stxvd2x 0, 0, 3
5050
; P8-LE-NEXT: blr
5151
;
5252
; P9-LE-LABEL: foo1:
@@ -109,8 +109,8 @@ define dso_local void @foo2(ptr nocapture noundef writeonly %a) local_unnamed_ad
109109
; P8-LE-NEXT: lxvd2x 0, 0, 4
110110
; P8-LE-NEXT: lis 4, 3333
111111
; P8-LE-NEXT: ori 4, 4, 3333
112-
; P8-LE-NEXT: stxvd2x 0, 0, 3
113112
; P8-LE-NEXT: stw 4, 16(3)
113+
; P8-LE-NEXT: stxvd2x 0, 0, 3
114114
; P8-LE-NEXT: blr
115115
;
116116
; P9-LE-LABEL: foo2:
@@ -182,9 +182,9 @@ define dso_local void @foo3(ptr nocapture noundef writeonly %a) local_unnamed_ad
182182
; P8-LE-NEXT: lxvd2x 0, 0, 4
183183
; P8-LE-NEXT: lis 4, 3333
184184
; P8-LE-NEXT: ori 4, 4, 3333
185-
; P8-LE-NEXT: stxvd2x 0, 0, 3
186185
; P8-LE-NEXT: stw 4, 16(3)
187186
; P8-LE-NEXT: li 4, 3333
187+
; P8-LE-NEXT: stxvd2x 0, 0, 3
188188
; P8-LE-NEXT: sth 4, 20(3)
189189
; P8-LE-NEXT: blr
190190
;
@@ -334,8 +334,8 @@ define dso_local void @foo5(ptr nocapture noundef writeonly %a) local_unnamed_ad
334334
; P8-LE-NEXT: lxvd2x 0, 0, 4
335335
; P8-LE-NEXT: lis 4, 5
336336
; P8-LE-NEXT: ori 4, 4, 5653
337-
; P8-LE-NEXT: stxvd2x 0, 0, 3
338337
; P8-LE-NEXT: stw 4, 16(3)
338+
; P8-LE-NEXT: stxvd2x 0, 0, 3
339339
; P8-LE-NEXT: blr
340340
;
341341
; P9-LE-LABEL: foo5:
@@ -473,8 +473,8 @@ define dso_local void @foo7(ptr nocapture noundef writeonly %a) local_unnamed_ad
473473
; P8-LE-NEXT: lxvd2x 0, 0, 4
474474
; P8-LE-NEXT: lis 4, 508
475475
; P8-LE-NEXT: ori 4, 4, 41045
476-
; P8-LE-NEXT: stxvd2x 0, 0, 3
477476
; P8-LE-NEXT: std 4, 16(3)
477+
; P8-LE-NEXT: stxvd2x 0, 0, 3
478478
; P8-LE-NEXT: blr
479479
;
480480
; P9-LE-LABEL: foo7:
@@ -539,8 +539,8 @@ define dso_local void @foo8(ptr nocapture noundef writeonly %a) local_unnamed_ad
539539
; P8-LE-NEXT: lxvd2x 0, 0, 4
540540
; P8-LE-NEXT: lis 4, 16469
541541
; P8-LE-NEXT: ori 4, 4, 7864
542-
; P8-LE-NEXT: stxvd2x 0, 0, 3
543542
; P8-LE-NEXT: stw 4, 16(3)
543+
; P8-LE-NEXT: stxvd2x 0, 0, 3
544544
; P8-LE-NEXT: blr
545545
;
546546
; P9-LE-LABEL: foo8:

llvm/test/CodeGen/PowerPC/extract-and-store.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -574,13 +574,13 @@ define dso_local void @test_stores_exceed_vec_size(<4 x i32> %a, ptr nocapture %
574574
; CHECK-NEXT: addi r3, r3, .LCPI16_0@toc@l
575575
; CHECK-NEXT: lxvd2x vs0, 0, r3
576576
; CHECK-NEXT: li r3, 16
577+
; CHECK-NEXT: stfiwx f1, r5, r3
578+
; CHECK-NEXT: li r3, 20
579+
; CHECK-NEXT: stxsiwx vs34, r5, r3
577580
; CHECK-NEXT: xxswapd vs35, vs0
578581
; CHECK-NEXT: vperm v3, v2, v2, v3
579582
; CHECK-NEXT: xxswapd vs0, vs35
580583
; CHECK-NEXT: stxvd2x vs0, 0, r5
581-
; CHECK-NEXT: stfiwx f1, r5, r3
582-
; CHECK-NEXT: li r3, 20
583-
; CHECK-NEXT: stxsiwx vs34, r5, r3
584584
; CHECK-NEXT: blr
585585
;
586586
; CHECK-BE-LABEL: test_stores_exceed_vec_size:

llvm/test/CodeGen/PowerPC/f128-fma.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ define void @qpFmadd(ptr nocapture readonly %a, ptr nocapture %b,
3939
; CHECK-P8-NEXT: vmr v3, v31
4040
; CHECK-P8-NEXT: bl __addkf3
4141
; CHECK-P8-NEXT: nop
42-
; CHECK-P8-NEXT: xxswapd vs0, v2
4342
; CHECK-P8-NEXT: li r3, 48
44-
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
43+
; CHECK-P8-NEXT: xxswapd vs0, v2
4544
; CHECK-P8-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload
45+
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
4646
; CHECK-P8-NEXT: ld r30, 64(r1) # 8-byte Folded Reload
4747
; CHECK-P8-NEXT: addi r1, r1, 80
4848
; CHECK-P8-NEXT: ld r0, 16(r1)
@@ -95,10 +95,10 @@ define void @qpFmadd_02(ptr nocapture readonly %a,
9595
; CHECK-P8-NEXT: vmr v2, v31
9696
; CHECK-P8-NEXT: bl __addkf3
9797
; CHECK-P8-NEXT: nop
98-
; CHECK-P8-NEXT: xxswapd vs0, v2
9998
; CHECK-P8-NEXT: li r3, 48
100-
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
99+
; CHECK-P8-NEXT: xxswapd vs0, v2
101100
; CHECK-P8-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload
101+
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
102102
; CHECK-P8-NEXT: ld r30, 64(r1) # 8-byte Folded Reload
103103
; CHECK-P8-NEXT: addi r1, r1, 80
104104
; CHECK-P8-NEXT: ld r0, 16(r1)
@@ -214,8 +214,8 @@ define void @qpFnmadd(ptr nocapture readonly %a,
214214
; CHECK-P8-NEXT: stb r4, 63(r1)
215215
; CHECK-P8-NEXT: lxvd2x vs0, 0, r3
216216
; CHECK-P8-NEXT: li r3, 64
217-
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
218217
; CHECK-P8-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload
218+
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
219219
; CHECK-P8-NEXT: ld r30, 80(r1) # 8-byte Folded Reload
220220
; CHECK-P8-NEXT: addi r1, r1, 96
221221
; CHECK-P8-NEXT: ld r0, 16(r1)
@@ -331,10 +331,10 @@ define void @qpFmsub(ptr nocapture readonly %a,
331331
; CHECK-P8-NEXT: vmr v2, v31
332332
; CHECK-P8-NEXT: bl __subkf3
333333
; CHECK-P8-NEXT: nop
334-
; CHECK-P8-NEXT: xxswapd vs0, v2
335334
; CHECK-P8-NEXT: li r3, 48
336-
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
335+
; CHECK-P8-NEXT: xxswapd vs0, v2
337336
; CHECK-P8-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload
337+
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
338338
; CHECK-P8-NEXT: ld r30, 64(r1) # 8-byte Folded Reload
339339
; CHECK-P8-NEXT: addi r1, r1, 80
340340
; CHECK-P8-NEXT: ld r0, 16(r1)
@@ -451,8 +451,8 @@ define void @qpFnmsub(ptr nocapture readonly %a,
451451
; CHECK-P8-NEXT: stb r4, 63(r1)
452452
; CHECK-P8-NEXT: lxvd2x vs0, 0, r3
453453
; CHECK-P8-NEXT: li r3, 64
454-
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
455454
; CHECK-P8-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload
455+
; CHECK-P8-NEXT: stxvd2x vs0, 0, r30
456456
; CHECK-P8-NEXT: ld r30, 80(r1) # 8-byte Folded Reload
457457
; CHECK-P8-NEXT: addi r1, r1, 96
458458
; CHECK-P8-NEXT: ld r0, 16(r1)

llvm/test/CodeGen/PowerPC/f128-passByValue.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -576,13 +576,13 @@ define void @mixParam_03(fp128 %f1, ptr nocapture %d1, <4 x i32> %vec1,
576576
; CHECK-P8-NEXT: .cfi_offset r30, -16
577577
; CHECK-P8-NEXT: .cfi_offset v31, -32
578578
; CHECK-P8-NEXT: ld r4, 184(r1)
579-
; CHECK-P8-NEXT: li r3, 48
580579
; CHECK-P8-NEXT: xxswapd vs0, v2
581580
; CHECK-P8-NEXT: xxswapd vs1, v3
581+
; CHECK-P8-NEXT: li r3, 48
582582
; CHECK-P8-NEXT: std r30, 64(r1) # 8-byte Folded Spill
583583
; CHECK-P8-NEXT: mr r30, r5
584-
; CHECK-P8-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill
585584
; CHECK-P8-NEXT: stxvd2x vs0, 0, r9
585+
; CHECK-P8-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill
586586
; CHECK-P8-NEXT: mr r3, r10
587587
; CHECK-P8-NEXT: stxvd2x vs1, 0, r4
588588
; CHECK-P8-NEXT: lxvd2x vs0, 0, r9
@@ -639,15 +639,15 @@ define fastcc void @mixParam_03f(fp128 %f1, ptr nocapture %d1, <4 x i32> %vec1,
639639
; CHECK-P8-NEXT: .cfi_offset lr, 16
640640
; CHECK-P8-NEXT: .cfi_offset r30, -16
641641
; CHECK-P8-NEXT: .cfi_offset v31, -32
642-
; CHECK-P8-NEXT: li r6, 48
643642
; CHECK-P8-NEXT: xxswapd vs0, v2
644643
; CHECK-P8-NEXT: xxswapd vs1, v3
645644
; CHECK-P8-NEXT: std r30, 64(r1) # 8-byte Folded Spill
645+
; CHECK-P8-NEXT: li r6, 48
646646
; CHECK-P8-NEXT: mr r30, r3
647647
; CHECK-P8-NEXT: mr r3, r5
648-
; CHECK-P8-NEXT: stvx v31, r1, r6 # 16-byte Folded Spill
649648
; CHECK-P8-NEXT: stxvd2x vs0, 0, r4
650649
; CHECK-P8-NEXT: stxvd2x vs1, 0, r7
650+
; CHECK-P8-NEXT: stvx v31, r1, r6 # 16-byte Folded Spill
651651
; CHECK-P8-NEXT: lxvd2x vs0, 0, r4
652652
; CHECK-P8-NEXT: xxswapd v31, vs0
653653
; CHECK-P8-NEXT: bl __floatsikf

llvm/test/CodeGen/PowerPC/merge_stores_dereferenceable.ll

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
12
; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
23

34
; This code causes an assertion failure if dereferenceable flag is not properly set when in merging consecutive stores
4-
; CHECK-LABEL: func:
5-
; CHECK: lxvd2x [[REG1:[0-9]+]], {{[0-9]+}}, {{[0-9]+}}
6-
; CHECK-NOT: lxvd2x
7-
; CHECK: stxvd2x [[REG1:[0-9]+]], {{[0-9]+}}, {{[0-9]+}}
85

96
define <2 x i64> @func(ptr %pdst) {
7+
; CHECK-LABEL: func:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: addi 4, 1, -32
10+
; CHECK-NEXT: lxvd2x 0, 0, 4
11+
; CHECK-NEXT: xxswapd 34, 0
12+
; CHECK-NEXT: lxvd2x 0, 0, 4
13+
; CHECK-NEXT: stxvd2x 0, 0, 3
14+
; CHECK-NEXT: blr
1015
entry:
1116
%a = alloca [4 x i64], align 8
1217
%psrc1 = getelementptr inbounds i64, ptr %a, i64 1

llvm/test/CodeGen/PowerPC/pr45301.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ define dso_local void @g(ptr %agg.result) local_unnamed_addr #0 {
2323
; CHECK-NEXT: ld r7, 24(r5)
2424
; CHECK-NEXT: std r7, 24(r3)
2525
; CHECK-NEXT: ld r5, 32(r5)
26-
; CHECK-NEXT: std r5, 32(r3)
2726
; CHECK-NEXT: stwbrx r4, 0, r3
2827
; CHECK-NEXT: li r4, 20
28+
; CHECK-NEXT: std r5, 32(r3)
2929
; CHECK-NEXT: stwbrx r6, r3, r4
3030
; CHECK-NEXT: addi r1, r1, 112
3131
; CHECK-NEXT: ld r0, 16(r1)

llvm/test/CodeGen/PowerPC/pr47891.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ define dso_local void @poly2_lshift1(ptr nocapture %p) local_unnamed_addr #0 {
5555
; CHECK-NEXT: std r6, 56(r3)
5656
; CHECK-NEXT: rotldi r6, r7, 1
5757
; CHECK-NEXT: xxswapd vs0, vs0
58+
; CHECK-NEXT: stxvd2x vs0, r3, r4
5859
; CHECK-NEXT: rldimi r6, r5, 1, 0
5960
; CHECK-NEXT: std r6, 64(r3)
60-
; CHECK-NEXT: stxvd2x vs0, r3, r4
6161
; CHECK-NEXT: blr
6262
entry:
6363
%0 = load i64, ptr %p, align 8

0 commit comments

Comments
 (0)