[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