[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