[llvm] 0bf45de - [AArch64][NFC] Add early bail-out in preferTailFoldingOverEpilogue (#225327)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 23 02:29:37 PDT 2026
Author: David Sherwood
Date: 2026-09-23T10:29:30+01:00
New Revision: 0bf45de5d6dff4c3b0cceef7a4cbef16f7bc19d5
URL: https://github.com/llvm/llvm-project/commit/0bf45de5d6dff4c3b0cceef7a4cbef16f7bc19d5
DIFF: https://github.com/llvm/llvm-project/commit/0bf45de5d6dff4c3b0cceef7a4cbef16f7bc19d5.diff
LOG: [AArch64][NFC] Add early bail-out in preferTailFoldingOverEpilogue (#225327)
If the default behaviour is to never tail-fold and the user never
specified the sve-tail-folding option then just bail out early in
preferTailFoldingOverEpilogue to avoid unnecessary computation.
Added:
Modified:
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
index 1ccefdadfe1a7..2863f27a1c7b5 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
@@ -183,6 +183,10 @@ class TailFoldingOption {
}
}
+ bool isDisabled(TailFoldingOpts DefaultBits) const {
+ return getBits(DefaultBits) == TailFoldingOpts::Disabled;
+ }
+
bool satisfies(TailFoldingOpts DefaultBits, TailFoldingOpts Required) const {
return (getBits(DefaultBits) & Required) == Required;
}
@@ -7349,7 +7353,8 @@ unsigned AArch64TTIImpl::getEpilogueVectorizationMinVF() const {
}
bool AArch64TTIImpl::preferTailFoldingOverEpilogue(TailFoldingInfo *TFI) const {
- if (!ST->hasSVE())
+ TailFoldingOpts DefaultOpts = ST->getSVETailFoldingDefaultOpts();
+ if (!ST->hasSVE() || TailFoldingOptionLoc.isDisabled(DefaultOpts))
return false;
// We don't currently support vectorisation with interleaving for SVE - with
@@ -7374,8 +7379,7 @@ bool AArch64TTIImpl::preferTailFoldingOverEpilogue(TailFoldingInfo *TFI) const {
if (Required == TailFoldingOpts::Disabled)
Required |= TailFoldingOpts::Simple;
- if (!TailFoldingOptionLoc.satisfies(ST->getSVETailFoldingDefaultOpts(),
- Required))
+ if (!TailFoldingOptionLoc.satisfies(DefaultOpts, Required))
return false;
// Don't tail-fold for tight loops where we would be better off interleaving
More information about the llvm-commits
mailing list