[PATCH] D106657: [LV] Disable Scalable VFs when tail folding is enabled b/c of low tripcount.
Sander de Smalen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 27 03:38:31 PDT 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGd7dd12aee399: [LV] Disable Scalable VFs when tail folding is enabled b/c of low tripcount. (authored by sdesmalen).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106657/new/
https://reviews.llvm.org/D106657
Files:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/test/Transforms/LoopVectorize/AArch64/sve-tail-folding.ll
Index: llvm/test/Transforms/LoopVectorize/AArch64/sve-tail-folding.ll
===================================================================
--- /dev/null
+++ llvm/test/Transforms/LoopVectorize/AArch64/sve-tail-folding.ll
@@ -0,0 +1,23 @@
+; RUN: opt -S -loop-vectorize -scalable-vectorization=preferred -prefer-predicate-over-epilogue=predicate-dont-vectorize < %s | FileCheck %s
+
+; CHECK-NOT: vector.body:
+
+target triple = "aarch64-unknown-linux-gnu"
+
+define void @tail_predication(i32 %init, i32* %ptr, i32 %val) #0 {
+entry:
+ br label %while.body
+
+while.body: ; preds = %while.body, %entry
+ %index = phi i32 [ %index.dec, %while.body ], [ %init, %entry ]
+ %gep = getelementptr i32, i32* %ptr, i32 %index
+ store i32 %val, i32* %gep
+ %index.dec = add nsw i32 %index, -1
+ %cmp10 = icmp sgt i32 %index, 0
+ br i1 %cmp10, label %while.body, label %while.end.loopexit
+
+while.end.loopexit: ; preds = %while.body
+ ret void
+}
+
+attributes #0 = { "target-features"="+sve" }
Index: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -5817,6 +5817,12 @@
}
}
+ // For scalable vectors, don't use tail folding as this is currently not yet
+ // supported. The code is likely to have ended up here if the tripcount is
+ // low, in which case it makes sense not to use scalable vectors.
+ if (MaxFactors.ScalableVF.isVector())
+ MaxFactors.ScalableVF = ElementCount::getScalable(0);
+
// If we don't know the precise trip count, or if the trip count that we
// found modulo the vectorization factor is not zero, try to fold the tail
// by masking.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106657.361966.patch
Type: text/x-patch
Size: 1825 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210727/70a731b4/attachment.bin>
More information about the llvm-commits
mailing list