Skip to content

Commit a01e4da

Browse files
authored
[PowerPC] Ensure correct codgen for MMA functions for cpu=future (#165791)
Update MMA tests to add run line for `cpu=future` to ensure MMA functionality is not broken with the new `wacc` register classes introduced. Previous commit have added def for using the new `wacc` registers, this just add in testing and fixes a few patterns that was missing .
1 parent ed45c05 commit a01e4da

File tree

9 files changed

+2555
-2
lines changed

9 files changed

+2555
-2
lines changed

llvm/lib/Target/PowerPC/PPCInstrMMA.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ multiclass ACC_UM_M244_XO46<bits<6> opcode, bits<8> xo, dag IOL, string asmbase,
202202
RegConstraint<"@earlyclobber $AT">;
203203
def PM#NAME#WPP :
204204
MMIRR_XX3Form_XY4P2_XAB6<
205-
opcode, !or(xo, 0x20), (outs acc:$AT),
205+
opcode, !or(xo, 0x20), (outs wacc:$AT),
206206
!con((ins wacc:$ATi),
207207
!con(IOL, (ins u4imm:$XMSK, u4imm:$YMSK, u2imm:$PMSK))),
208208
!strconcat("pm"#asmbase#"pp ", asmstr#", $XMSK, $YMSK, $PMSK"),
@@ -765,7 +765,7 @@ let Predicates = [MMA, IsISAFuture] in {
765765
def : Pat<(v512i1 (int_ppc_mma_xvf64gerpn v512i1:$ATi, v256i1:$XA, v16i8:$XB)),
766766
(XVF64GERWPN $ATi, $XA, RCCp.BToVSRC)>;
767767
def : Pat<(v512i1 (int_ppc_mma_xvf64gernp v512i1:$ATi, v256i1:$XA, v16i8:$XB)),
768-
(XVF64GERNP $ATi, $XA, RCCp.BToVSRC)>;
768+
(XVF64GERWNP $ATi, $XA, RCCp.BToVSRC)>;
769769
def : Pat<(v512i1 (int_ppc_mma_xvf64gernn v512i1:$ATi, v256i1:$XA, v16i8:$XB)),
770770
(XVF64GERWNN $ATi, $XA, RCCp.BToVSRC)>;
771771

llvm/test/CodeGen/PowerPC/mma-acc-copy-hints.ll

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
66
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names \
77
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-BE
8+
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
9+
; RUN: -mcpu=future -ppc-asm-full-reg-names \
10+
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-LE-WACC
11+
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
12+
; RUN: -mcpu=future -ppc-asm-full-reg-names \
13+
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-BE-WACC
814

915
define void @testMultiply(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, ptr nocapture noundef writeonly %c) local_unnamed_addr #0 {
1016
; CHECK-LABEL: testMultiply:
@@ -91,6 +97,91 @@ define void @testMultiply(ptr nocapture noundef readonly %a, ptr nocapture nound
9197
; CHECK-BE-NEXT: ld r30, -16(r1)
9298
; CHECK-BE-NEXT: mtlr r0
9399
; CHECK-BE-NEXT: blr
100+
;
101+
; CHECK-LE-WACC-LABEL: testMultiply:
102+
; CHECK-LE-WACC: # %bb.0: # %entry
103+
; CHECK-LE-WACC-NEXT: mflr r0
104+
; CHECK-LE-WACC-NEXT: std r30, -16(r1)
105+
; CHECK-LE-WACC-NEXT: std r0, 16(r1)
106+
; CHECK-LE-WACC-NEXT: clrldi r0, r1, 59
107+
; CHECK-LE-WACC-NEXT: subfic r0, r0, -128
108+
; CHECK-LE-WACC-NEXT: mr r30, r1
109+
; CHECK-LE-WACC-NEXT: stdux r1, r1, r0
110+
; CHECK-LE-WACC-NEXT: stxv v30, -64(r30) # 16-byte Folded Spill
111+
; CHECK-LE-WACC-NEXT: stxv v31, -48(r30) # 16-byte Folded Spill
112+
; CHECK-LE-WACC-NEXT: lxv v31, 0(r3)
113+
; CHECK-LE-WACC-NEXT: lxv v30, 0(r4)
114+
; CHECK-LE-WACC-NEXT: addi r3, r1, 32
115+
; CHECK-LE-WACC-NEXT: std r29, -24(r30) # 8-byte Folded Spill
116+
; CHECK-LE-WACC-NEXT: vmr v2, v31
117+
; CHECK-LE-WACC-NEXT: vmr v3, v30
118+
; CHECK-LE-WACC-NEXT: mr r29, r5
119+
; CHECK-LE-WACC-NEXT: bl _Z15buildVectorPairPu13__vector_pairDv16_hS0_@notoc
120+
; CHECK-LE-WACC-NEXT: dmxxsetaccz wacc0
121+
; CHECK-LE-WACC-NEXT: xvf32gerpp wacc0, v31, v30
122+
; CHECK-LE-WACC-NEXT: lxv vs0, 48(r1)
123+
; CHECK-LE-WACC-NEXT: lxv vs1, 32(r1)
124+
; CHECK-LE-WACC-NEXT: xvf32gerpp wacc0, vs1, vs0
125+
; CHECK-LE-WACC-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc0, 0
126+
; CHECK-LE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
127+
; CHECK-LE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
128+
; CHECK-LE-WACC-NEXT: stxv v5, 0(r29)
129+
; CHECK-LE-WACC-NEXT: pstxv v4, 8(r29), 0
130+
; CHECK-LE-WACC-NEXT: stxv v3, 16(r29)
131+
; CHECK-LE-WACC-NEXT: pstxv v2, 24(r29), 0
132+
; CHECK-LE-WACC-NEXT: lxv v31, -48(r30) # 16-byte Folded Reload
133+
; CHECK-LE-WACC-NEXT: lxv v30, -64(r30) # 16-byte Folded Reload
134+
; CHECK-LE-WACC-NEXT: ld r29, -24(r30) # 8-byte Folded Reload
135+
; CHECK-LE-WACC-NEXT: mr r1, r30
136+
; CHECK-LE-WACC-NEXT: ld r0, 16(r1)
137+
; CHECK-LE-WACC-NEXT: ld r30, -16(r1)
138+
; CHECK-LE-WACC-NEXT: mtlr r0
139+
; CHECK-LE-WACC-NEXT: blr
140+
;
141+
; CHECK-BE-WACC-LABEL: testMultiply:
142+
; CHECK-BE-WACC: # %bb.0: # %entry
143+
; CHECK-BE-WACC-NEXT: mflr r0
144+
; CHECK-BE-WACC-NEXT: std r30, -16(r1)
145+
; CHECK-BE-WACC-NEXT: std r0, 16(r1)
146+
; CHECK-BE-WACC-NEXT: clrldi r0, r1, 59
147+
; CHECK-BE-WACC-NEXT: subfic r0, r0, -224
148+
; CHECK-BE-WACC-NEXT: mr r30, r1
149+
; CHECK-BE-WACC-NEXT: stdux r1, r1, r0
150+
; CHECK-BE-WACC-NEXT: stxv v30, -64(r30) # 16-byte Folded Spill
151+
; CHECK-BE-WACC-NEXT: stxv v31, -48(r30) # 16-byte Folded Spill
152+
; CHECK-BE-WACC-NEXT: lxv v31, 0(r3)
153+
; CHECK-BE-WACC-NEXT: lxv v30, 0(r4)
154+
; CHECK-BE-WACC-NEXT: addi r3, r1, 128
155+
; CHECK-BE-WACC-NEXT: std r29, -24(r30) # 8-byte Folded Spill
156+
; CHECK-BE-WACC-NEXT: vmr v2, v31
157+
; CHECK-BE-WACC-NEXT: vmr v3, v30
158+
; CHECK-BE-WACC-NEXT: mr r29, r5
159+
; CHECK-BE-WACC-NEXT: bl _Z15buildVectorPairPu13__vector_pairDv16_hS0_
160+
; CHECK-BE-WACC-NEXT: nop
161+
; CHECK-BE-WACC-NEXT: dmxxsetaccz wacc0
162+
; CHECK-BE-WACC-NEXT: xvf32gerpp wacc0, v31, v30
163+
; CHECK-BE-WACC-NEXT: lxv vs0, 128(r1)
164+
; CHECK-BE-WACC-NEXT: lxv vs1, 144(r1)
165+
; CHECK-BE-WACC-NEXT: xvf32gerpp wacc0, vs0, vs1
166+
; CHECK-BE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
167+
; CHECK-BE-WACC-NEXT: vmr v1, v2
168+
; CHECK-BE-WACC-NEXT: vmr v7, v4
169+
; CHECK-BE-WACC-NEXT: vmr v0, v3
170+
; CHECK-BE-WACC-NEXT: vmr v6, v5
171+
; CHECK-BE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp38, vsp32, 0
172+
; CHECK-BE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
173+
; CHECK-BE-WACC-NEXT: stxv v2, 0(r29)
174+
; CHECK-BE-WACC-NEXT: pstxv v3, 8(r29), 0
175+
; CHECK-BE-WACC-NEXT: stxv v4, 16(r29)
176+
; CHECK-BE-WACC-NEXT: pstxv v5, 24(r29), 0
177+
; CHECK-BE-WACC-NEXT: lxv v31, -48(r30) # 16-byte Folded Reload
178+
; CHECK-BE-WACC-NEXT: lxv v30, -64(r30) # 16-byte Folded Reload
179+
; CHECK-BE-WACC-NEXT: ld r29, -24(r30) # 8-byte Folded Reload
180+
; CHECK-BE-WACC-NEXT: mr r1, r30
181+
; CHECK-BE-WACC-NEXT: ld r0, 16(r1)
182+
; CHECK-BE-WACC-NEXT: ld r30, -16(r1)
183+
; CHECK-BE-WACC-NEXT: mtlr r0
184+
; CHECK-BE-WACC-NEXT: blr
94185
entry:
95186
%vP = alloca <256 x i1>, align 32
96187
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %vP)

llvm/test/CodeGen/PowerPC/mma-acc-memops.ll

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,18 @@
33
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
44
; RUN: -disable-auto-paired-vec-st=false < %s | FileCheck %s \
55
; RUN: --check-prefix=LE-PAIRED
6+
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
7+
; RUN: -mcpu=future -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
8+
; RUN: -disable-auto-paired-vec-st=false < %s | FileCheck %s \
9+
; RUN: --check-prefix=LE-PAIRED-WACC
610
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
711
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names \
812
; RUN: -ppc-vsr-nums-as-vr -disable-auto-paired-vec-st=false < %s | \
913
; RUN: FileCheck %s --check-prefix=BE-PAIRED
14+
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
15+
; RUN: -mcpu=future -ppc-asm-full-reg-names \
16+
; RUN: -ppc-vsr-nums-as-vr -disable-auto-paired-vec-st=false < %s | \
17+
; RUN: FileCheck %s --check-prefix=BE-PAIRED-WACC
1018
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-vsr-nums-as-vr \
1119
; RUN: -ppc-asm-full-reg-names -mtriple=powerpc64le-unknown-linux-gnu < %s \
1220
; RUN: | FileCheck %s --check-prefix=LE-PWR9
@@ -36,6 +44,20 @@ define dso_local void @testLdSt(i64 %SrcIdx, i64 %DstIdx) {
3644
; LE-PAIRED-NEXT: pstxv vs3, f@PCREL+128(0), 1
3745
; LE-PAIRED-NEXT: blr
3846
;
47+
; LE-PAIRED-WACC-LABEL: testLdSt:
48+
; LE-PAIRED-WACC: # %bb.0: # %entry
49+
; LE-PAIRED-WACC-NEXT: plxv v3, f@PCREL+64(0), 1
50+
; LE-PAIRED-WACC-NEXT: plxv v5, f@PCREL+96(0), 1
51+
; LE-PAIRED-WACC-NEXT: plxv v2, f@PCREL+80(0), 1
52+
; LE-PAIRED-WACC-NEXT: plxv v4, f@PCREL+112(0), 1
53+
; LE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
54+
; LE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
55+
; LE-PAIRED-WACC-NEXT: pstxv v4, f@PCREL+176(0), 1
56+
; LE-PAIRED-WACC-NEXT: pstxv v5, f@PCREL+160(0), 1
57+
; LE-PAIRED-WACC-NEXT: pstxv v2, f@PCREL+144(0), 1
58+
; LE-PAIRED-WACC-NEXT: pstxv v3, f@PCREL+128(0), 1
59+
; LE-PAIRED-WACC-NEXT: blr
60+
;
3961
; BE-PAIRED-LABEL: testLdSt:
4062
; BE-PAIRED: # %bb.0: # %entry
4163
; BE-PAIRED-NEXT: addis r3, r2, f@toc@ha
@@ -50,6 +72,22 @@ define dso_local void @testLdSt(i64 %SrcIdx, i64 %DstIdx) {
5072
; BE-PAIRED-NEXT: stxv vs2, 160(r3)
5173
; BE-PAIRED-NEXT: blr
5274
;
75+
; BE-PAIRED-WACC-LABEL: testLdSt:
76+
; BE-PAIRED-WACC: # %bb.0: # %entry
77+
; BE-PAIRED-WACC-NEXT: addis r3, r2, f@toc@ha
78+
; BE-PAIRED-WACC-NEXT: addi r3, r3, f@toc@l
79+
; BE-PAIRED-WACC-NEXT: lxv v3, 112(r3)
80+
; BE-PAIRED-WACC-NEXT: lxv v5, 80(r3)
81+
; BE-PAIRED-WACC-NEXT: lxv v2, 96(r3)
82+
; BE-PAIRED-WACC-NEXT: lxv v4, 64(r3)
83+
; BE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
84+
; BE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
85+
; BE-PAIRED-WACC-NEXT: stxv v5, 176(r3)
86+
; BE-PAIRED-WACC-NEXT: stxv v4, 160(r3)
87+
; BE-PAIRED-WACC-NEXT: stxv v3, 144(r3)
88+
; BE-PAIRED-WACC-NEXT: stxv v2, 128(r3)
89+
; BE-PAIRED-WACC-NEXT: blr
90+
;
5391
; LE-PWR9-LABEL: testLdSt:
5492
; LE-PWR9: # %bb.0: # %entry
5593
; LE-PWR9-NEXT: addis r3, r2, f@toc@ha
@@ -147,6 +185,25 @@ define dso_local void @testXLdSt(i64 %SrcIdx, i64 %DstIdx) {
147185
; LE-PAIRED-NEXT: stxv vs2, 16(r4)
148186
; LE-PAIRED-NEXT: blr
149187
;
188+
; LE-PAIRED-WACC-LABEL: testXLdSt:
189+
; LE-PAIRED-WACC: # %bb.0: # %entry
190+
; LE-PAIRED-WACC-NEXT: paddi r5, 0, f@PCREL, 1
191+
; LE-PAIRED-WACC-NEXT: sldi r3, r3, 6
192+
; LE-PAIRED-WACC-NEXT: add r6, r5, r3
193+
; LE-PAIRED-WACC-NEXT: lxvx v3, r5, r3
194+
; LE-PAIRED-WACC-NEXT: lxv v2, 16(r6)
195+
; LE-PAIRED-WACC-NEXT: lxv v5, 32(r6)
196+
; LE-PAIRED-WACC-NEXT: lxv v4, 48(r6)
197+
; LE-PAIRED-WACC-NEXT: sldi r3, r4, 6
198+
; LE-PAIRED-WACC-NEXT: add r4, r5, r3
199+
; LE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
200+
; LE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
201+
; LE-PAIRED-WACC-NEXT: stxvx v3, r5, r3
202+
; LE-PAIRED-WACC-NEXT: stxv v4, 48(r4)
203+
; LE-PAIRED-WACC-NEXT: stxv v5, 32(r4)
204+
; LE-PAIRED-WACC-NEXT: stxv v2, 16(r4)
205+
; LE-PAIRED-WACC-NEXT: blr
206+
;
150207
; BE-PAIRED-LABEL: testXLdSt:
151208
; BE-PAIRED: # %bb.0: # %entry
152209
; BE-PAIRED-NEXT: addis r5, r2, f@toc@ha
@@ -165,6 +222,26 @@ define dso_local void @testXLdSt(i64 %SrcIdx, i64 %DstIdx) {
165222
; BE-PAIRED-NEXT: stxv vs2, 32(r4)
166223
; BE-PAIRED-NEXT: blr
167224
;
225+
; BE-PAIRED-WACC-LABEL: testXLdSt:
226+
; BE-PAIRED-WACC: # %bb.0: # %entry
227+
; BE-PAIRED-WACC-NEXT: addis r5, r2, f@toc@ha
228+
; BE-PAIRED-WACC-NEXT: addi r5, r5, f@toc@l
229+
; BE-PAIRED-WACC-NEXT: sldi r3, r3, 6
230+
; BE-PAIRED-WACC-NEXT: add r6, r5, r3
231+
; BE-PAIRED-WACC-NEXT: lxvx v2, r5, r3
232+
; BE-PAIRED-WACC-NEXT: lxv v5, 48(r6)
233+
; BE-PAIRED-WACC-NEXT: lxv v3, 16(r6)
234+
; BE-PAIRED-WACC-NEXT: lxv v4, 32(r6)
235+
; BE-PAIRED-WACC-NEXT: sldi r3, r4, 6
236+
; BE-PAIRED-WACC-NEXT: add r4, r5, r3
237+
; BE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp34, vsp36, 0
238+
; BE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
239+
; BE-PAIRED-WACC-NEXT: stxvx v2, r5, r3
240+
; BE-PAIRED-WACC-NEXT: stxv v5, 48(r4)
241+
; BE-PAIRED-WACC-NEXT: stxv v4, 32(r4)
242+
; BE-PAIRED-WACC-NEXT: stxv v3, 16(r4)
243+
; BE-PAIRED-WACC-NEXT: blr
244+
;
168245
; LE-PWR9-LABEL: testXLdSt:
169246
; LE-PWR9: # %bb.0: # %entry
170247
; LE-PWR9-NEXT: addis r5, r2, f@toc@ha
@@ -263,6 +340,20 @@ define dso_local void @testUnalignedLdSt() {
263340
; LE-PAIRED-NEXT: pstxv vs3, f@PCREL+19(0), 1
264341
; LE-PAIRED-NEXT: blr
265342
;
343+
; LE-PAIRED-WACC-LABEL: testUnalignedLdSt:
344+
; LE-PAIRED-WACC: # %bb.0: # %entry
345+
; LE-PAIRED-WACC-NEXT: plxv v3, f@PCREL+11(0), 1
346+
; LE-PAIRED-WACC-NEXT: plxv v5, f@PCREL+43(0), 1
347+
; LE-PAIRED-WACC-NEXT: plxv v2, f@PCREL+27(0), 1
348+
; LE-PAIRED-WACC-NEXT: plxv v4, f@PCREL+59(0), 1
349+
; LE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
350+
; LE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
351+
; LE-PAIRED-WACC-NEXT: pstxv v4, f@PCREL+67(0), 1
352+
; LE-PAIRED-WACC-NEXT: pstxv v5, f@PCREL+51(0), 1
353+
; LE-PAIRED-WACC-NEXT: pstxv v2, f@PCREL+35(0), 1
354+
; LE-PAIRED-WACC-NEXT: pstxv v3, f@PCREL+19(0), 1
355+
; LE-PAIRED-WACC-NEXT: blr
356+
;
266357
; BE-PAIRED-LABEL: testUnalignedLdSt:
267358
; BE-PAIRED: # %bb.0: # %entry
268359
; BE-PAIRED-NEXT: addis r3, r2, f@toc@ha
@@ -277,6 +368,22 @@ define dso_local void @testUnalignedLdSt() {
277368
; BE-PAIRED-NEXT: pstxv vs2, 51(r3), 0
278369
; BE-PAIRED-NEXT: blr
279370
;
371+
; BE-PAIRED-WACC-LABEL: testUnalignedLdSt:
372+
; BE-PAIRED-WACC: # %bb.0: # %entry
373+
; BE-PAIRED-WACC-NEXT: addis r3, r2, f@toc@ha
374+
; BE-PAIRED-WACC-NEXT: addi r3, r3, f@toc@l
375+
; BE-PAIRED-WACC-NEXT: plxv v3, 59(r3), 0
376+
; BE-PAIRED-WACC-NEXT: plxv v5, 27(r3), 0
377+
; BE-PAIRED-WACC-NEXT: plxv v2, 43(r3), 0
378+
; BE-PAIRED-WACC-NEXT: plxv v4, 11(r3), 0
379+
; BE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
380+
; BE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
381+
; BE-PAIRED-WACC-NEXT: pstxv v5, 67(r3), 0
382+
; BE-PAIRED-WACC-NEXT: pstxv v4, 51(r3), 0
383+
; BE-PAIRED-WACC-NEXT: pstxv v3, 35(r3), 0
384+
; BE-PAIRED-WACC-NEXT: pstxv v2, 19(r3), 0
385+
; BE-PAIRED-WACC-NEXT: blr
386+
;
280387
; LE-PWR9-LABEL: testUnalignedLdSt:
281388
; LE-PWR9: # %bb.0: # %entry
282389
; LE-PWR9-NEXT: addis r3, r2, f@toc@ha
@@ -381,6 +488,14 @@ define dso_local void @testLdStPair(i64 %SrcIdx, i64 %DstIdx) {
381488
; LE-PAIRED-NEXT: pstxv vs1, g@PCREL+64(0), 1
382489
; LE-PAIRED-NEXT: blr
383490
;
491+
; LE-PAIRED-WACC-LABEL: testLdStPair:
492+
; LE-PAIRED-WACC: # %bb.0: # %entry
493+
; LE-PAIRED-WACC-NEXT: plxv vs0, g@PCREL+48(0), 1
494+
; LE-PAIRED-WACC-NEXT: plxv vs1, g@PCREL+32(0), 1
495+
; LE-PAIRED-WACC-NEXT: pstxv vs0, g@PCREL+80(0), 1
496+
; LE-PAIRED-WACC-NEXT: pstxv vs1, g@PCREL+64(0), 1
497+
; LE-PAIRED-WACC-NEXT: blr
498+
;
384499
; BE-PAIRED-LABEL: testLdStPair:
385500
; BE-PAIRED: # %bb.0: # %entry
386501
; BE-PAIRED-NEXT: addis r3, r2, g@toc@ha
@@ -391,6 +506,16 @@ define dso_local void @testLdStPair(i64 %SrcIdx, i64 %DstIdx) {
391506
; BE-PAIRED-NEXT: stxv vs0, 64(r3)
392507
; BE-PAIRED-NEXT: blr
393508
;
509+
; BE-PAIRED-WACC-LABEL: testLdStPair:
510+
; BE-PAIRED-WACC: # %bb.0: # %entry
511+
; BE-PAIRED-WACC-NEXT: addis r3, r2, g@toc@ha
512+
; BE-PAIRED-WACC-NEXT: addi r3, r3, g@toc@l
513+
; BE-PAIRED-WACC-NEXT: lxv vs0, 48(r3)
514+
; BE-PAIRED-WACC-NEXT: lxv vs1, 32(r3)
515+
; BE-PAIRED-WACC-NEXT: stxv vs0, 80(r3)
516+
; BE-PAIRED-WACC-NEXT: stxv vs1, 64(r3)
517+
; BE-PAIRED-WACC-NEXT: blr
518+
;
394519
; LE-PWR9-LABEL: testLdStPair:
395520
; LE-PWR9: # %bb.0: # %entry
396521
; LE-PWR9-NEXT: addis r3, r2, g@toc@ha
@@ -460,6 +585,19 @@ define dso_local void @testXLdStPair(i64 %SrcIdx, i64 %DstIdx) {
460585
; LE-PAIRED-NEXT: stxv vs1, 16(r4)
461586
; LE-PAIRED-NEXT: blr
462587
;
588+
; LE-PAIRED-WACC-LABEL: testXLdStPair:
589+
; LE-PAIRED-WACC: # %bb.0: # %entry
590+
; LE-PAIRED-WACC-NEXT: sldi r3, r3, 5
591+
; LE-PAIRED-WACC-NEXT: paddi r5, 0, g@PCREL, 1
592+
; LE-PAIRED-WACC-NEXT: add r6, r5, r3
593+
; LE-PAIRED-WACC-NEXT: lxvx vs0, r5, r3
594+
; LE-PAIRED-WACC-NEXT: lxv vs1, 16(r6)
595+
; LE-PAIRED-WACC-NEXT: sldi r3, r4, 5
596+
; LE-PAIRED-WACC-NEXT: add r4, r5, r3
597+
; LE-PAIRED-WACC-NEXT: stxvx vs0, r5, r3
598+
; LE-PAIRED-WACC-NEXT: stxv vs1, 16(r4)
599+
; LE-PAIRED-WACC-NEXT: blr
600+
;
463601
; BE-PAIRED-LABEL: testXLdStPair:
464602
; BE-PAIRED: # %bb.0: # %entry
465603
; BE-PAIRED-NEXT: addis r5, r2, g@toc@ha
@@ -474,6 +612,20 @@ define dso_local void @testXLdStPair(i64 %SrcIdx, i64 %DstIdx) {
474612
; BE-PAIRED-NEXT: stxv vs1, 16(r4)
475613
; BE-PAIRED-NEXT: blr
476614
;
615+
; BE-PAIRED-WACC-LABEL: testXLdStPair:
616+
; BE-PAIRED-WACC: # %bb.0: # %entry
617+
; BE-PAIRED-WACC-NEXT: addis r5, r2, g@toc@ha
618+
; BE-PAIRED-WACC-NEXT: sldi r3, r3, 5
619+
; BE-PAIRED-WACC-NEXT: addi r5, r5, g@toc@l
620+
; BE-PAIRED-WACC-NEXT: add r6, r5, r3
621+
; BE-PAIRED-WACC-NEXT: lxvx vs0, r5, r3
622+
; BE-PAIRED-WACC-NEXT: lxv vs1, 16(r6)
623+
; BE-PAIRED-WACC-NEXT: sldi r3, r4, 5
624+
; BE-PAIRED-WACC-NEXT: add r4, r5, r3
625+
; BE-PAIRED-WACC-NEXT: stxvx vs0, r5, r3
626+
; BE-PAIRED-WACC-NEXT: stxv vs1, 16(r4)
627+
; BE-PAIRED-WACC-NEXT: blr
628+
;
477629
; LE-PWR9-LABEL: testXLdStPair:
478630
; LE-PWR9: # %bb.0: # %entry
479631
; LE-PWR9-NEXT: addis r5, r2, g@toc@ha
@@ -548,6 +700,14 @@ define dso_local void @testUnalignedLdStPair() {
548700
; LE-PAIRED-NEXT: pstxv vs1, g@PCREL+19(0), 1
549701
; LE-PAIRED-NEXT: blr
550702
;
703+
; LE-PAIRED-WACC-LABEL: testUnalignedLdStPair:
704+
; LE-PAIRED-WACC: # %bb.0: # %entry
705+
; LE-PAIRED-WACC-NEXT: plxv vs0, g@PCREL+27(0), 1
706+
; LE-PAIRED-WACC-NEXT: plxv vs1, g@PCREL+11(0), 1
707+
; LE-PAIRED-WACC-NEXT: pstxv vs0, g@PCREL+35(0), 1
708+
; LE-PAIRED-WACC-NEXT: pstxv vs1, g@PCREL+19(0), 1
709+
; LE-PAIRED-WACC-NEXT: blr
710+
;
551711
; BE-PAIRED-LABEL: testUnalignedLdStPair:
552712
; BE-PAIRED: # %bb.0: # %entry
553713
; BE-PAIRED-NEXT: addis r3, r2, g@toc@ha
@@ -558,6 +718,16 @@ define dso_local void @testUnalignedLdStPair() {
558718
; BE-PAIRED-NEXT: pstxv vs0, 19(r3), 0
559719
; BE-PAIRED-NEXT: blr
560720
;
721+
; BE-PAIRED-WACC-LABEL: testUnalignedLdStPair:
722+
; BE-PAIRED-WACC: # %bb.0: # %entry
723+
; BE-PAIRED-WACC-NEXT: addis r3, r2, g@toc@ha
724+
; BE-PAIRED-WACC-NEXT: addi r3, r3, g@toc@l
725+
; BE-PAIRED-WACC-NEXT: plxv vs0, 27(r3), 0
726+
; BE-PAIRED-WACC-NEXT: plxv vs1, 11(r3), 0
727+
; BE-PAIRED-WACC-NEXT: pstxv vs0, 35(r3), 0
728+
; BE-PAIRED-WACC-NEXT: pstxv vs1, 19(r3), 0
729+
; BE-PAIRED-WACC-NEXT: blr
730+
;
561731
; LE-PWR9-LABEL: testUnalignedLdStPair:
562732
; LE-PWR9: # %bb.0: # %entry
563733
; LE-PWR9-NEXT: addis r3, r2, g@toc@ha

0 commit comments

Comments
 (0)