[PATCH] D69563: [LV] Strip wrap flags from vectorized reductions

Denis Antrushin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 9 07:09:55 PST 2019


dantrushin updated this revision to Diff 228573.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69563/new/

https://reviews.llvm.org/D69563

Files:
  llvm/lib/Transforms/Vectorize/LoopVectorize.cpp


Index: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -3700,9 +3700,12 @@
   // any loop invariant values.
   BasicBlock *Latch = OrigLoop->getLoopLatch();
   Value *LoopVal = Phi->getIncomingValueForBlock(Latch);
+  bool StripWrapFlags = isa<OverflowingBinaryOperator>(LoopVal);
   for (unsigned Part = 0; Part < UF; ++Part) {
     Value *VecRdxPhi = getOrCreateVectorValue(Phi, Part);
     Value *Val = getOrCreateVectorValue(LoopVal, Part);
+    if (StripWrapFlags)
+      cast<Instruction>(Val)->dropPoisonGeneratingFlags();
     // Make sure to add the reduction stat value only to the
     // first unroll part.
     Value *StartVal = (Part == 0) ? VectorStart : Identity;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69563.228573.patch
Type: text/x-patch
Size: 855 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191109/cb5dbac7/attachment.bin>


More information about the llvm-commits mailing list