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