Skip to content

Commit 5a432ed

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 ab87228 commit 5a432ed

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
@@ -572,6 +572,10 @@ AArch64Subtarget::getAuthenticatedLRCheckMethod() const {
572572
return AArch64PAuth::AuthCheckMethod::None;
573573
}
574574

575+
bool AArch64Subtarget::enableSubRegLiveness() const {
576+
return hasSME() && isStreaming();
577+
}
578+
575579
bool AArch64Subtarget::enableMachinePipeliner() const {
576580
return getSchedModel().hasInstrSchedModel();
577581
}

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)