Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions llvm/lib/Target/PowerPC/PPCInstrMMA.td
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ multiclass ACC_UM_M244_XO46<bits<6> opcode, bits<8> xo, dag IOL, string asmbase,
RegConstraint<"@earlyclobber $AT">;
def PM#NAME#WPP :
MMIRR_XX3Form_XY4P2_XAB6<
opcode, !or(xo, 0x20), (outs acc:$AT),
opcode, !or(xo, 0x20), (outs wacc:$AT),
!con((ins wacc:$ATi),
!con(IOL, (ins u4imm:$XMSK, u4imm:$YMSK, u2imm:$PMSK))),
!strconcat("pm"#asmbase#"pp ", asmstr#", $XMSK, $YMSK, $PMSK"),
Expand Down Expand Up @@ -765,7 +765,7 @@ let Predicates = [MMA, IsISAFuture] in {
def : Pat<(v512i1 (int_ppc_mma_xvf64gerpn v512i1:$ATi, v256i1:$XA, v16i8:$XB)),
(XVF64GERWPN $ATi, $XA, RCCp.BToVSRC)>;
def : Pat<(v512i1 (int_ppc_mma_xvf64gernp v512i1:$ATi, v256i1:$XA, v16i8:$XB)),
(XVF64GERNP $ATi, $XA, RCCp.BToVSRC)>;
(XVF64GERWNP $ATi, $XA, RCCp.BToVSRC)>;
def : Pat<(v512i1 (int_ppc_mma_xvf64gernn v512i1:$ATi, v256i1:$XA, v16i8:$XB)),
(XVF64GERWNN $ATi, $XA, RCCp.BToVSRC)>;

Expand Down
91 changes: 91 additions & 0 deletions llvm/test/CodeGen/PowerPC/mma-acc-copy-hints.ll
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names \
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-BE
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
; RUN: -mcpu=future -ppc-asm-full-reg-names \
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-LE-WACC
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
; RUN: -mcpu=future -ppc-asm-full-reg-names \
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=CHECK-BE-WACC

define void @testMultiply(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, ptr nocapture noundef writeonly %c) local_unnamed_addr #0 {
; CHECK-LABEL: testMultiply:
Expand Down Expand Up @@ -91,6 +97,91 @@ define void @testMultiply(ptr nocapture noundef readonly %a, ptr nocapture nound
; CHECK-BE-NEXT: ld r30, -16(r1)
; CHECK-BE-NEXT: mtlr r0
; CHECK-BE-NEXT: blr
;
; CHECK-LE-WACC-LABEL: testMultiply:
; CHECK-LE-WACC: # %bb.0: # %entry
; CHECK-LE-WACC-NEXT: mflr r0
; CHECK-LE-WACC-NEXT: std r30, -16(r1)
; CHECK-LE-WACC-NEXT: std r0, 16(r1)
; CHECK-LE-WACC-NEXT: clrldi r0, r1, 59
; CHECK-LE-WACC-NEXT: subfic r0, r0, -128
; CHECK-LE-WACC-NEXT: mr r30, r1
; CHECK-LE-WACC-NEXT: stdux r1, r1, r0
; CHECK-LE-WACC-NEXT: stxv v30, -64(r30) # 16-byte Folded Spill
; CHECK-LE-WACC-NEXT: stxv v31, -48(r30) # 16-byte Folded Spill
; CHECK-LE-WACC-NEXT: lxv v31, 0(r3)
; CHECK-LE-WACC-NEXT: lxv v30, 0(r4)
; CHECK-LE-WACC-NEXT: addi r3, r1, 32
; CHECK-LE-WACC-NEXT: std r29, -24(r30) # 8-byte Folded Spill
; CHECK-LE-WACC-NEXT: vmr v2, v31
; CHECK-LE-WACC-NEXT: vmr v3, v30
; CHECK-LE-WACC-NEXT: mr r29, r5
; CHECK-LE-WACC-NEXT: bl _Z15buildVectorPairPu13__vector_pairDv16_hS0_@notoc
; CHECK-LE-WACC-NEXT: dmxxsetaccz wacc0
; CHECK-LE-WACC-NEXT: xvf32gerpp wacc0, v31, v30
; CHECK-LE-WACC-NEXT: lxv vs0, 48(r1)
; CHECK-LE-WACC-NEXT: lxv vs1, 32(r1)
; CHECK-LE-WACC-NEXT: xvf32gerpp wacc0, vs1, vs0
; CHECK-LE-WACC-NEXT: dmxxextfdmr512 vsp36, vsp34, wacc0, 0
; CHECK-LE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
; CHECK-LE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; CHECK-LE-WACC-NEXT: stxv v5, 0(r29)
; CHECK-LE-WACC-NEXT: pstxv v4, 8(r29), 0
; CHECK-LE-WACC-NEXT: stxv v3, 16(r29)
; CHECK-LE-WACC-NEXT: pstxv v2, 24(r29), 0
; CHECK-LE-WACC-NEXT: lxv v31, -48(r30) # 16-byte Folded Reload
; CHECK-LE-WACC-NEXT: lxv v30, -64(r30) # 16-byte Folded Reload
; CHECK-LE-WACC-NEXT: ld r29, -24(r30) # 8-byte Folded Reload
; CHECK-LE-WACC-NEXT: mr r1, r30
; CHECK-LE-WACC-NEXT: ld r0, 16(r1)
; CHECK-LE-WACC-NEXT: ld r30, -16(r1)
; CHECK-LE-WACC-NEXT: mtlr r0
; CHECK-LE-WACC-NEXT: blr
;
; CHECK-BE-WACC-LABEL: testMultiply:
; CHECK-BE-WACC: # %bb.0: # %entry
; CHECK-BE-WACC-NEXT: mflr r0
; CHECK-BE-WACC-NEXT: std r30, -16(r1)
; CHECK-BE-WACC-NEXT: std r0, 16(r1)
; CHECK-BE-WACC-NEXT: clrldi r0, r1, 59
; CHECK-BE-WACC-NEXT: subfic r0, r0, -224
; CHECK-BE-WACC-NEXT: mr r30, r1
; CHECK-BE-WACC-NEXT: stdux r1, r1, r0
; CHECK-BE-WACC-NEXT: stxv v30, -64(r30) # 16-byte Folded Spill
; CHECK-BE-WACC-NEXT: stxv v31, -48(r30) # 16-byte Folded Spill
; CHECK-BE-WACC-NEXT: lxv v31, 0(r3)
; CHECK-BE-WACC-NEXT: lxv v30, 0(r4)
; CHECK-BE-WACC-NEXT: addi r3, r1, 128
; CHECK-BE-WACC-NEXT: std r29, -24(r30) # 8-byte Folded Spill
; CHECK-BE-WACC-NEXT: vmr v2, v31
; CHECK-BE-WACC-NEXT: vmr v3, v30
; CHECK-BE-WACC-NEXT: mr r29, r5
; CHECK-BE-WACC-NEXT: bl _Z15buildVectorPairPu13__vector_pairDv16_hS0_
; CHECK-BE-WACC-NEXT: nop
; CHECK-BE-WACC-NEXT: dmxxsetaccz wacc0
; CHECK-BE-WACC-NEXT: xvf32gerpp wacc0, v31, v30
; CHECK-BE-WACC-NEXT: lxv vs0, 128(r1)
; CHECK-BE-WACC-NEXT: lxv vs1, 144(r1)
; CHECK-BE-WACC-NEXT: xvf32gerpp wacc0, vs0, vs1
; CHECK-BE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; CHECK-BE-WACC-NEXT: vmr v1, v2
; CHECK-BE-WACC-NEXT: vmr v7, v4
; CHECK-BE-WACC-NEXT: vmr v0, v3
; CHECK-BE-WACC-NEXT: vmr v6, v5
; CHECK-BE-WACC-NEXT: dmxxinstdmr512 wacc0, vsp38, vsp32, 0
; CHECK-BE-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; CHECK-BE-WACC-NEXT: stxv v2, 0(r29)
; CHECK-BE-WACC-NEXT: pstxv v3, 8(r29), 0
; CHECK-BE-WACC-NEXT: stxv v4, 16(r29)
; CHECK-BE-WACC-NEXT: pstxv v5, 24(r29), 0
; CHECK-BE-WACC-NEXT: lxv v31, -48(r30) # 16-byte Folded Reload
; CHECK-BE-WACC-NEXT: lxv v30, -64(r30) # 16-byte Folded Reload
; CHECK-BE-WACC-NEXT: ld r29, -24(r30) # 8-byte Folded Reload
; CHECK-BE-WACC-NEXT: mr r1, r30
; CHECK-BE-WACC-NEXT: ld r0, 16(r1)
; CHECK-BE-WACC-NEXT: ld r30, -16(r1)
; CHECK-BE-WACC-NEXT: mtlr r0
; CHECK-BE-WACC-NEXT: blr
entry:
%vP = alloca <256 x i1>, align 32
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %vP)
Expand Down
170 changes: 170 additions & 0 deletions llvm/test/CodeGen/PowerPC/mma-acc-memops.ll
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,18 @@
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN: -disable-auto-paired-vec-st=false < %s | FileCheck %s \
; RUN: --check-prefix=LE-PAIRED
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
; RUN: -mcpu=future -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN: -disable-auto-paired-vec-st=false < %s | FileCheck %s \
; RUN: --check-prefix=LE-PAIRED-WACC
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names \
; RUN: -ppc-vsr-nums-as-vr -disable-auto-paired-vec-st=false < %s | \
; RUN: FileCheck %s --check-prefix=BE-PAIRED
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
; RUN: -mcpu=future -ppc-asm-full-reg-names \
; RUN: -ppc-vsr-nums-as-vr -disable-auto-paired-vec-st=false < %s | \
; RUN: FileCheck %s --check-prefix=BE-PAIRED-WACC
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-vsr-nums-as-vr \
; RUN: -ppc-asm-full-reg-names -mtriple=powerpc64le-unknown-linux-gnu < %s \
; RUN: | FileCheck %s --check-prefix=LE-PWR9
Expand Down Expand Up @@ -36,6 +44,20 @@ define dso_local void @testLdSt(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-NEXT: pstxv vs3, f@PCREL+128(0), 1
; LE-PAIRED-NEXT: blr
;
; LE-PAIRED-WACC-LABEL: testLdSt:
; LE-PAIRED-WACC: # %bb.0: # %entry
; LE-PAIRED-WACC-NEXT: plxv v3, f@PCREL+64(0), 1
; LE-PAIRED-WACC-NEXT: plxv v5, f@PCREL+96(0), 1
; LE-PAIRED-WACC-NEXT: plxv v2, f@PCREL+80(0), 1
; LE-PAIRED-WACC-NEXT: plxv v4, f@PCREL+112(0), 1
; LE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
; LE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; LE-PAIRED-WACC-NEXT: pstxv v4, f@PCREL+176(0), 1
; LE-PAIRED-WACC-NEXT: pstxv v5, f@PCREL+160(0), 1
; LE-PAIRED-WACC-NEXT: pstxv v2, f@PCREL+144(0), 1
; LE-PAIRED-WACC-NEXT: pstxv v3, f@PCREL+128(0), 1
; LE-PAIRED-WACC-NEXT: blr
;
; BE-PAIRED-LABEL: testLdSt:
; BE-PAIRED: # %bb.0: # %entry
; BE-PAIRED-NEXT: addis r3, r2, f@toc@ha
Expand All @@ -50,6 +72,22 @@ define dso_local void @testLdSt(i64 %SrcIdx, i64 %DstIdx) {
; BE-PAIRED-NEXT: stxv vs2, 160(r3)
; BE-PAIRED-NEXT: blr
;
; BE-PAIRED-WACC-LABEL: testLdSt:
; BE-PAIRED-WACC: # %bb.0: # %entry
; BE-PAIRED-WACC-NEXT: addis r3, r2, f@toc@ha
; BE-PAIRED-WACC-NEXT: addi r3, r3, f@toc@l
; BE-PAIRED-WACC-NEXT: lxv v3, 112(r3)
; BE-PAIRED-WACC-NEXT: lxv v5, 80(r3)
; BE-PAIRED-WACC-NEXT: lxv v2, 96(r3)
; BE-PAIRED-WACC-NEXT: lxv v4, 64(r3)
; BE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
; BE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; BE-PAIRED-WACC-NEXT: stxv v5, 176(r3)
; BE-PAIRED-WACC-NEXT: stxv v4, 160(r3)
; BE-PAIRED-WACC-NEXT: stxv v3, 144(r3)
; BE-PAIRED-WACC-NEXT: stxv v2, 128(r3)
; BE-PAIRED-WACC-NEXT: blr
;
; LE-PWR9-LABEL: testLdSt:
; LE-PWR9: # %bb.0: # %entry
; LE-PWR9-NEXT: addis r3, r2, f@toc@ha
Expand Down Expand Up @@ -147,6 +185,25 @@ define dso_local void @testXLdSt(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-NEXT: stxv vs2, 16(r4)
; LE-PAIRED-NEXT: blr
;
; LE-PAIRED-WACC-LABEL: testXLdSt:
; LE-PAIRED-WACC: # %bb.0: # %entry
; LE-PAIRED-WACC-NEXT: paddi r5, 0, f@PCREL, 1
; LE-PAIRED-WACC-NEXT: sldi r3, r3, 6
; LE-PAIRED-WACC-NEXT: add r6, r5, r3
; LE-PAIRED-WACC-NEXT: lxvx v3, r5, r3
; LE-PAIRED-WACC-NEXT: lxv v2, 16(r6)
; LE-PAIRED-WACC-NEXT: lxv v5, 32(r6)
; LE-PAIRED-WACC-NEXT: lxv v4, 48(r6)
; LE-PAIRED-WACC-NEXT: sldi r3, r4, 6
; LE-PAIRED-WACC-NEXT: add r4, r5, r3
; LE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
; LE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; LE-PAIRED-WACC-NEXT: stxvx v3, r5, r3
; LE-PAIRED-WACC-NEXT: stxv v4, 48(r4)
; LE-PAIRED-WACC-NEXT: stxv v5, 32(r4)
; LE-PAIRED-WACC-NEXT: stxv v2, 16(r4)
; LE-PAIRED-WACC-NEXT: blr
;
; BE-PAIRED-LABEL: testXLdSt:
; BE-PAIRED: # %bb.0: # %entry
; BE-PAIRED-NEXT: addis r5, r2, f@toc@ha
Expand All @@ -165,6 +222,26 @@ define dso_local void @testXLdSt(i64 %SrcIdx, i64 %DstIdx) {
; BE-PAIRED-NEXT: stxv vs2, 32(r4)
; BE-PAIRED-NEXT: blr
;
; BE-PAIRED-WACC-LABEL: testXLdSt:
; BE-PAIRED-WACC: # %bb.0: # %entry
; BE-PAIRED-WACC-NEXT: addis r5, r2, f@toc@ha
; BE-PAIRED-WACC-NEXT: addi r5, r5, f@toc@l
; BE-PAIRED-WACC-NEXT: sldi r3, r3, 6
; BE-PAIRED-WACC-NEXT: add r6, r5, r3
; BE-PAIRED-WACC-NEXT: lxvx v2, r5, r3
; BE-PAIRED-WACC-NEXT: lxv v5, 48(r6)
; BE-PAIRED-WACC-NEXT: lxv v3, 16(r6)
; BE-PAIRED-WACC-NEXT: lxv v4, 32(r6)
; BE-PAIRED-WACC-NEXT: sldi r3, r4, 6
; BE-PAIRED-WACC-NEXT: add r4, r5, r3
; BE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp34, vsp36, 0
; BE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; BE-PAIRED-WACC-NEXT: stxvx v2, r5, r3
; BE-PAIRED-WACC-NEXT: stxv v5, 48(r4)
; BE-PAIRED-WACC-NEXT: stxv v4, 32(r4)
; BE-PAIRED-WACC-NEXT: stxv v3, 16(r4)
; BE-PAIRED-WACC-NEXT: blr
;
; LE-PWR9-LABEL: testXLdSt:
; LE-PWR9: # %bb.0: # %entry
; LE-PWR9-NEXT: addis r5, r2, f@toc@ha
Expand Down Expand Up @@ -263,6 +340,20 @@ define dso_local void @testUnalignedLdSt() {
; LE-PAIRED-NEXT: pstxv vs3, f@PCREL+19(0), 1
; LE-PAIRED-NEXT: blr
;
; LE-PAIRED-WACC-LABEL: testUnalignedLdSt:
; LE-PAIRED-WACC: # %bb.0: # %entry
; LE-PAIRED-WACC-NEXT: plxv v3, f@PCREL+11(0), 1
; LE-PAIRED-WACC-NEXT: plxv v5, f@PCREL+43(0), 1
; LE-PAIRED-WACC-NEXT: plxv v2, f@PCREL+27(0), 1
; LE-PAIRED-WACC-NEXT: plxv v4, f@PCREL+59(0), 1
; LE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
; LE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; LE-PAIRED-WACC-NEXT: pstxv v4, f@PCREL+67(0), 1
; LE-PAIRED-WACC-NEXT: pstxv v5, f@PCREL+51(0), 1
; LE-PAIRED-WACC-NEXT: pstxv v2, f@PCREL+35(0), 1
; LE-PAIRED-WACC-NEXT: pstxv v3, f@PCREL+19(0), 1
; LE-PAIRED-WACC-NEXT: blr
;
; BE-PAIRED-LABEL: testUnalignedLdSt:
; BE-PAIRED: # %bb.0: # %entry
; BE-PAIRED-NEXT: addis r3, r2, f@toc@ha
Expand All @@ -277,6 +368,22 @@ define dso_local void @testUnalignedLdSt() {
; BE-PAIRED-NEXT: pstxv vs2, 51(r3), 0
; BE-PAIRED-NEXT: blr
;
; BE-PAIRED-WACC-LABEL: testUnalignedLdSt:
; BE-PAIRED-WACC: # %bb.0: # %entry
; BE-PAIRED-WACC-NEXT: addis r3, r2, f@toc@ha
; BE-PAIRED-WACC-NEXT: addi r3, r3, f@toc@l
; BE-PAIRED-WACC-NEXT: plxv v3, 59(r3), 0
; BE-PAIRED-WACC-NEXT: plxv v5, 27(r3), 0
; BE-PAIRED-WACC-NEXT: plxv v2, 43(r3), 0
; BE-PAIRED-WACC-NEXT: plxv v4, 11(r3), 0
; BE-PAIRED-WACC-NEXT: dmxxinstdmr512 wacc0, vsp36, vsp34, 0
; BE-PAIRED-WACC-NEXT: dmxxextfdmr512 vsp34, vsp36, wacc0, 0
; BE-PAIRED-WACC-NEXT: pstxv v5, 67(r3), 0
; BE-PAIRED-WACC-NEXT: pstxv v4, 51(r3), 0
; BE-PAIRED-WACC-NEXT: pstxv v3, 35(r3), 0
; BE-PAIRED-WACC-NEXT: pstxv v2, 19(r3), 0
; BE-PAIRED-WACC-NEXT: blr
;
; LE-PWR9-LABEL: testUnalignedLdSt:
; LE-PWR9: # %bb.0: # %entry
; LE-PWR9-NEXT: addis r3, r2, f@toc@ha
Expand Down Expand Up @@ -381,6 +488,14 @@ define dso_local void @testLdStPair(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-NEXT: pstxv vs1, g@PCREL+64(0), 1
; LE-PAIRED-NEXT: blr
;
; LE-PAIRED-WACC-LABEL: testLdStPair:
; LE-PAIRED-WACC: # %bb.0: # %entry
; LE-PAIRED-WACC-NEXT: plxv vs0, g@PCREL+48(0), 1
; LE-PAIRED-WACC-NEXT: plxv vs1, g@PCREL+32(0), 1
; LE-PAIRED-WACC-NEXT: pstxv vs0, g@PCREL+80(0), 1
; LE-PAIRED-WACC-NEXT: pstxv vs1, g@PCREL+64(0), 1
; LE-PAIRED-WACC-NEXT: blr
;
; BE-PAIRED-LABEL: testLdStPair:
; BE-PAIRED: # %bb.0: # %entry
; BE-PAIRED-NEXT: addis r3, r2, g@toc@ha
Expand All @@ -391,6 +506,16 @@ define dso_local void @testLdStPair(i64 %SrcIdx, i64 %DstIdx) {
; BE-PAIRED-NEXT: stxv vs0, 64(r3)
; BE-PAIRED-NEXT: blr
;
; BE-PAIRED-WACC-LABEL: testLdStPair:
; BE-PAIRED-WACC: # %bb.0: # %entry
; BE-PAIRED-WACC-NEXT: addis r3, r2, g@toc@ha
; BE-PAIRED-WACC-NEXT: addi r3, r3, g@toc@l
; BE-PAIRED-WACC-NEXT: lxv vs0, 48(r3)
; BE-PAIRED-WACC-NEXT: lxv vs1, 32(r3)
; BE-PAIRED-WACC-NEXT: stxv vs0, 80(r3)
; BE-PAIRED-WACC-NEXT: stxv vs1, 64(r3)
; BE-PAIRED-WACC-NEXT: blr
;
; LE-PWR9-LABEL: testLdStPair:
; LE-PWR9: # %bb.0: # %entry
; LE-PWR9-NEXT: addis r3, r2, g@toc@ha
Expand Down Expand Up @@ -460,6 +585,19 @@ define dso_local void @testXLdStPair(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-NEXT: stxv vs1, 16(r4)
; LE-PAIRED-NEXT: blr
;
; LE-PAIRED-WACC-LABEL: testXLdStPair:
; LE-PAIRED-WACC: # %bb.0: # %entry
; LE-PAIRED-WACC-NEXT: sldi r3, r3, 5
; LE-PAIRED-WACC-NEXT: paddi r5, 0, g@PCREL, 1
; LE-PAIRED-WACC-NEXT: add r6, r5, r3
; LE-PAIRED-WACC-NEXT: lxvx vs0, r5, r3
; LE-PAIRED-WACC-NEXT: lxv vs1, 16(r6)
; LE-PAIRED-WACC-NEXT: sldi r3, r4, 5
; LE-PAIRED-WACC-NEXT: add r4, r5, r3
; LE-PAIRED-WACC-NEXT: stxvx vs0, r5, r3
; LE-PAIRED-WACC-NEXT: stxv vs1, 16(r4)
; LE-PAIRED-WACC-NEXT: blr
;
; BE-PAIRED-LABEL: testXLdStPair:
; BE-PAIRED: # %bb.0: # %entry
; BE-PAIRED-NEXT: addis r5, r2, g@toc@ha
Expand All @@ -474,6 +612,20 @@ define dso_local void @testXLdStPair(i64 %SrcIdx, i64 %DstIdx) {
; BE-PAIRED-NEXT: stxv vs1, 16(r4)
; BE-PAIRED-NEXT: blr
;
; BE-PAIRED-WACC-LABEL: testXLdStPair:
; BE-PAIRED-WACC: # %bb.0: # %entry
; BE-PAIRED-WACC-NEXT: addis r5, r2, g@toc@ha
; BE-PAIRED-WACC-NEXT: sldi r3, r3, 5
; BE-PAIRED-WACC-NEXT: addi r5, r5, g@toc@l
; BE-PAIRED-WACC-NEXT: add r6, r5, r3
; BE-PAIRED-WACC-NEXT: lxvx vs0, r5, r3
; BE-PAIRED-WACC-NEXT: lxv vs1, 16(r6)
; BE-PAIRED-WACC-NEXT: sldi r3, r4, 5
; BE-PAIRED-WACC-NEXT: add r4, r5, r3
; BE-PAIRED-WACC-NEXT: stxvx vs0, r5, r3
; BE-PAIRED-WACC-NEXT: stxv vs1, 16(r4)
; BE-PAIRED-WACC-NEXT: blr
;
; LE-PWR9-LABEL: testXLdStPair:
; LE-PWR9: # %bb.0: # %entry
; LE-PWR9-NEXT: addis r5, r2, g@toc@ha
Expand Down Expand Up @@ -548,6 +700,14 @@ define dso_local void @testUnalignedLdStPair() {
; LE-PAIRED-NEXT: pstxv vs1, g@PCREL+19(0), 1
; LE-PAIRED-NEXT: blr
;
; LE-PAIRED-WACC-LABEL: testUnalignedLdStPair:
; LE-PAIRED-WACC: # %bb.0: # %entry
; LE-PAIRED-WACC-NEXT: plxv vs0, g@PCREL+27(0), 1
; LE-PAIRED-WACC-NEXT: plxv vs1, g@PCREL+11(0), 1
; LE-PAIRED-WACC-NEXT: pstxv vs0, g@PCREL+35(0), 1
; LE-PAIRED-WACC-NEXT: pstxv vs1, g@PCREL+19(0), 1
; LE-PAIRED-WACC-NEXT: blr
;
; BE-PAIRED-LABEL: testUnalignedLdStPair:
; BE-PAIRED: # %bb.0: # %entry
; BE-PAIRED-NEXT: addis r3, r2, g@toc@ha
Expand All @@ -558,6 +718,16 @@ define dso_local void @testUnalignedLdStPair() {
; BE-PAIRED-NEXT: pstxv vs0, 19(r3), 0
; BE-PAIRED-NEXT: blr
;
; BE-PAIRED-WACC-LABEL: testUnalignedLdStPair:
; BE-PAIRED-WACC: # %bb.0: # %entry
; BE-PAIRED-WACC-NEXT: addis r3, r2, g@toc@ha
; BE-PAIRED-WACC-NEXT: addi r3, r3, g@toc@l
; BE-PAIRED-WACC-NEXT: plxv vs0, 27(r3), 0
; BE-PAIRED-WACC-NEXT: plxv vs1, 11(r3), 0
; BE-PAIRED-WACC-NEXT: pstxv vs0, 35(r3), 0
; BE-PAIRED-WACC-NEXT: pstxv vs1, 19(r3), 0
; BE-PAIRED-WACC-NEXT: blr
;
; LE-PWR9-LABEL: testUnalignedLdStPair:
; LE-PWR9: # %bb.0: # %entry
; LE-PWR9-NEXT: addis r3, r2, g@toc@ha
Expand Down
Loading