[PATCH] D86452: [LV] Fix scalar cost for tail predicated loops
Anna Welker via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 24 07:38:22 PDT 2020
anwel updated this revision to Diff 287391.
anwel marked 3 inline comments as done.
anwel added a comment.
Thanks for the suggestions, I cleaned up the test so it looks a bit nicer now.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D86452/new/
https://reviews.llvm.org/D86452
Files:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll
Index: llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll
===================================================================
--- llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll
+++ llvm/test/Transforms/LoopVectorize/ARM/scalar-block-cost.ll
@@ -15,7 +15,7 @@
; CHECK-COST-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %add1, i32* %arrayidx2, align 4
; CHECK-COST-NEXT: LV: Found an estimated cost of 1 for VF 1 For instruction: %exitcond.not = icmp eq i32 %add, %n
; CHECK-COST-NEXT: LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %exitcond.not, label %exit.loopexit, label %for.body
-; CHECK-COST-NEXT: LV: Scalar loop costs: 2.
+; CHECK-COST-NEXT: LV: Scalar loop costs: 5.
entry:
%cmp8 = icmp sgt i32 %n, 0
Index: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -5925,9 +5925,9 @@
// if-converted. This means that the block's instructions (aside from
// stores and instructions that may divide by zero) will now be
// unconditionally executed. For the scalar case, we may not always execute
- // the predicated block. Thus, scale the block's cost by the probability of
- // executing it.
- if (VF == 1 && blockNeedsPredication(BB))
+ // the predicated block, if it is an if-else block. Thus, scale the block's
+ // cost by the probability of executing it.
+ if (VF == 1 && Legal->blockNeedsPredication(BB))
BlockCost.first /= getReciprocalPredBlockProb();
Cost.first += BlockCost.first;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D86452.287391.patch
Type: text/x-patch
Size: 1716 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200824/8959a400/attachment-0001.bin>
More information about the llvm-commits
mailing list