Skip to content

Commit 6103e1b

Browse files
[AArch64][SME] Enable subreg liveness tracking when SME is available
The SME dot instructions in these tests operate on contiguous register tuples which use one subregister from each of the loads. When using the strided register form for all loads, enabling subreg liveness tracking will allow us to recognise that there is no overlap between the register tuples used by each of the dot instructions. This is the first in a series of patches to improve the allocation of strided and contiguous registers for SME.
1 parent a0eddfc commit 6103e1b

File tree

4 files changed

+220
-339
lines changed

4 files changed

+220
-339
lines changed

llvm/lib/Target/AArch64/AArch64Subtarget.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,10 @@ AArch64Subtarget::getAuthenticatedLRCheckMethod() const {
570570
return AArch64PAuth::AuthCheckMethod::None;
571571
}
572572

573+
bool AArch64Subtarget::enableSubRegLiveness() const {
574+
return hasSME() && isStreaming();
575+
}
576+
573577
bool AArch64Subtarget::enableMachinePipeliner() const {
574578
return getSchedModel().hasInstrSchedModel();
575579
}

llvm/lib/Target/AArch64/AArch64Subtarget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ class AArch64Subtarget final : public AArch64GenSubtargetInfo {
149149
const Triple &getTargetTriple() const { return TargetTriple; }
150150
bool enableMachineScheduler() const override { return true; }
151151
bool enablePostRAScheduler() const override { return usePostRAScheduler(); }
152+
bool enableSubRegLiveness() const override;
152153

153154
bool enableMachinePipeliner() const override;
154155
bool useDFAforSMS() const override { return false; }

0 commit comments

Comments
 (0)