Skip to content

Commit b514cc6

Browse files
committed
Tweaks
Change-Id: I51fbdc4b701a096d1f1638a4abab5c105ab37c5b
1 parent b302784 commit b514cc6

File tree

5 files changed

+14
-14
lines changed

5 files changed

+14
-14
lines changed

llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,8 +1032,7 @@ MachineBasicBlock *AArch64ExpandPseudo::expandCommitOrRestoreZASave(
10321032
MachineInstrBuilder MIB =
10331033
BuildMI(*SMBB, SMBB->end(), DL, TII->get(AArch64::BL));
10341034
// Copy operands (mainly the regmask) from the pseudo.
1035-
unsigned FirstBLOperand = IsRestoreZA ? 2 : 1;
1036-
for (unsigned I = FirstBLOperand; I < MI.getNumOperands(); ++I)
1035+
for (unsigned I = 2; I < MI.getNumOperands(); ++I)
10371036
MIB.add(MI.getOperand(I));
10381037

10391038
if (IsRestoreZA) {
@@ -1045,8 +1044,9 @@ MachineBasicBlock *AArch64ExpandPseudo::expandCommitOrRestoreZASave(
10451044
BuildMI(*SMBB, SMBB->end(), DL, TII->get(AArch64::MSR))
10461045
.addImm(AArch64SysReg::TPIDR2_EL0)
10471046
.addReg(AArch64::XZR);
1048-
bool ZeroZA = MI.definesRegister(AArch64::ZAB0, TRI);
1047+
bool ZeroZA = MI.getOperand(1).getImm() != 0;
10491048
if (ZeroZA) {
1049+
assert(MI.definesRegister(AArch64::ZAB0, TRI) && "should define ZA!");
10501050
BuildMI(*SMBB, SMBB->end(), DL, TII->get(AArch64::ZERO_M))
10511051
.addImm(ZERO_ALL_ZA_MASK)
10521052
.addDef(AArch64::ZAB0, RegState::ImplicitDefine);

llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ let hasSideEffects = 1 in {
101101

102102
def CommitZASavePseudo
103103
: Pseudo<(outs),
104-
(ins GPR64:$tpidr2_el0, i64imm:$commit_routine, variable_ops), []>,
104+
(ins GPR64:$tpidr2_el0, i1imm:$zero_za, i64imm:$commit_routine, variable_ops), []>,
105105
Sched<[]>;
106106

107107
def AArch64_inout_za_use

llvm/lib/Target/AArch64/MachineSMEABIPass.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,13 +547,16 @@ void MachineSMEABI::emitNewZAPrologue(MachineBasicBlock &MBB,
547547
.addReg(TPIDR2EL0, RegState::Define)
548548
.addImm(AArch64SysReg::TPIDR2_EL0);
549549
// If TPIDR2_EL0 is non-zero, commit the lazy save.
550+
// NOTE: Functions that only use ZT0 don't need to zero ZA.
551+
bool ZeroZA =
552+
MF->getInfo<AArch64FunctionInfo>()->getSMEFnAttrs().hasZAState();
550553
auto CommitZASave =
551554
BuildMI(MBB, MBBI, DL, TII->get(AArch64::CommitZASavePseudo))
552555
.addReg(TPIDR2EL0)
556+
.addImm(ZeroZA ? 1 : 0)
553557
.addExternalSymbol(TLI->getLibcallName(RTLIB::SMEABI_TPIDR2_SAVE))
554558
.addRegMask(TRI->SMEABISupportRoutinesCallPreservedMaskFromX0());
555-
// NOTE: Functions that only use ZT0 don't need to zero ZA.
556-
if (MF->getInfo<AArch64FunctionInfo>()->getSMEFnAttrs().hasZAState())
559+
if (ZeroZA)
557560
CommitZASave.addDef(AArch64::ZAB0, RegState::ImplicitDefine);
558561
// Enable ZA (as ZA could have previously been in the OFF state).
559562
BuildMI(MBB, MBBI, DL, TII->get(AArch64::MSRpstatesvcrImm1))

llvm/test/CodeGen/AArch64/aarch64-sme-za-call-lowering.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
22
; RUN: llc -mtriple=aarch64 -aarch64-streaming-hazard-size=0 -mattr=+sme,+sve -aarch64-new-sme-abi -stop-before=aarch64-machine-sme-abi -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK-COMMON,CHECK-BEFORE-SMEABI
3-
; RUN: llc -mtriple=aarch64 -aarch64-streaming-hazard-size=0 -mattr=+sme,+sve -aarch64-new-sme-abi -stop-after=aarch64-machine-sme-abi -verify-machineinstrs < %s | FileCheck %s --check-prefix=CHECK-COMMON,CHECK-AFTER-SMEABI
3+
; RUN: llc -mtriple=aarch64 -aarch64-streaming-hazard-size=0 -mattr=+sme,+sve -aarch64-new-sme-abi -stop-after=aarch64-machine-sme-abi -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK-COMMON,CHECK-AFTER-SMEABI
44

55
declare void @private_za_callee()
66
declare void @shared_za_callee() "aarch64_inout_za"

llvm/test/CodeGen/AArch64/expand-sme-pseudos.mir

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ body: |
3737
...
3838
---
3939

40-
# X0 = TPIDR2 block pointer
4140
# X8 = TPIDR2_EL0
4241
name: commit_za_save
4342
alignment: 4
@@ -47,25 +46,23 @@ body: |
4746
; CHECK-LABEL: name: commit_za_save
4847
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
4948
; CHECK-NEXT: {{ $}}
50-
; CHECK-NEXT: $x0 = IMPLICIT_DEF
5149
; CHECK-NEXT: $x8 = MRS 56965, implicit-def $nzcv
5250
; CHECK-NEXT: CBNZX $x8, %bb.1
5351
; CHECK-NEXT: B %bb.2
5452
; CHECK-NEXT: {{ $}}
5553
; CHECK-NEXT: .1:
5654
; CHECK-NEXT: successors: %bb.2(0x80000000)
57-
; CHECK-NEXT: liveins: $x8, $x0
55+
; CHECK-NEXT: liveins: $x8
5856
; CHECK-NEXT: {{ $}}
59-
; CHECK-NEXT: BL $x0, &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x0, implicit-def $lr, implicit $sp
57+
; CHECK-NEXT: BL &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x0, implicit-def $lr, implicit $sp
6058
; CHECK-NEXT: MSR 56965, $xzr
6159
; CHECK-NEXT: B %bb.2
6260
; CHECK-NEXT: {{ $}}
6361
; CHECK-NEXT: .2:
6462
; CHECK-NEXT: RET undef $lr
65-
$x0 = IMPLICIT_DEF
6663
$x8 = MRS 56965, implicit-def $nzcv
6764
68-
CommitZASavePseudo $x8, $x0, &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x0
65+
CommitZASavePseudo $x8, 0, &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x0
6966
7067
RET_ReallyLR
7168
@@ -97,7 +94,7 @@ body: |
9794
; CHECK-NEXT: RET undef $lr
9895
$x8 = MRS 56965, implicit-def $nzcv
9996
100-
CommitZASavePseudo $x8, &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x0, implicit-def $zab0
97+
CommitZASavePseudo $x8, 1, &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x0, implicit-def $zab0
10198
10299
RET_ReallyLR
103100

0 commit comments

Comments
 (0)