[PATCH] D93629: [LV] Don't sink into replication regions
Florian Hahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 28 13:57:10 PST 2020
fhahn added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:8610
+ Sink->removeFromParent();
+ NextBlock->insert(Sink, NextBlock->begin());
+ continue;
----------------
can this just be `Sink->moveBefore(NextBlock->getFirstInsertionPt())`? With that, `Sink->removeFromParent()` shouldn't be needed?
================
Comment at: llvm/test/Transforms/LoopVectorize/first-order-recurrence.ll:650
+; CHECK-LABEL: sink_into_replication_region
+; CHECK: <4 x i32>
+define i32 @sink_into_replication_region() {
----------------
It's probably worth to check the IR for the whole vector body for the sink-after case.
================
Comment at: llvm/test/Transforms/LoopVectorize/first-order-recurrence.ll:664
+ %tmp6 = add i32 %tmp5, %tmp4
+ %tmp7 = udiv i32 219220132, %tmp3
+ %tmp8 = add nsw i32 %tmp3, -1
----------------
Can you also add another instruction that will get predicate? I think currently things will work out as expected, because we predicate each instruction separately, but it could lead to problems if we predicate multiple instructions together and cannot sink to the right position. But this will get re-worked as part of the VPlan transition, so I think a test case to catch this should be sufficient.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D93629/new/
https://reviews.llvm.org/D93629
More information about the llvm-commits
mailing list