[llvm] [AArch64][NFC] Add early bail-out in preferTailFoldingOverEpilogue (PR #225327)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 22 01:31:41 PDT 2026
https://github.com/david-arm created https://github.com/llvm/llvm-project/pull/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.
>From 7d8cbe735943f027651e2b5ca70e86be4d168536 Mon Sep 17 00:00:00 2001
From: David Sherwood <david.sherwood at arm.com>
Date: Tue, 22 Sep 2026 08:29:29 +0000
Subject: [PATCH] [AArch64] Add early bail-out in preferTailFoldingOverEpilogue
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.
---
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
index 272bd8b0af64d7..bd475a500f52b7 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