Skip to content

Commit 74a5f9e

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 73618c2 commit 74a5f9e

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
@@ -584,6 +584,10 @@ AArch64Subtarget::getAuthenticatedLRCheckMethod() const {
584584
return AArch64PAuth::AuthCheckMethod::None;
585585
}
586586

587+
bool AArch64Subtarget::enableSubRegLiveness() const {
588+
return hasSME() && isStreaming();
589+
}
590+
587591
bool AArch64Subtarget::enableMachinePipeliner() const {
588592
return getSchedModel().hasInstrSchedModel();
589593
}

llvm/lib/Target/AArch64/AArch64Subtarget.h

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

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

0 commit comments

Comments
 (0)