[llvm] [VectorCombine] Preserves the maximal legal FPMathFlags during foldShuffleToIdentity (PR #94295)
David Green via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 4 00:19:57 PDT 2024
================
@@ -1736,23 +1739,64 @@ static Value *generateNewInstTree(ArrayRef<InstLane> Item, FixedVectorType *Ty,
Ops[Idx] = generateNewInstTree(generateInstLaneVectorFromOperand(Item, Idx),
Ty, IdentityLeafs, SplatLeafs, Builder);
}
+
+ FastMathFlags FMF;
+ FMF.setFast();
+ for_each(Item, [&FMF, Lane = FrontLane](const InstLane &E) {
+ if (E.second != Lane)
+ return;
+ auto *I = cast<Instruction>(E.first);
+ if (isa<FPMathOperator>(I))
+ FMF &= I->getFastMathFlags();
+ });
+
Builder.SetInsertPoint(I);
----------------
davemgreen wrote:
Use Builder->setFastMathFlags(FMF), so the setFastMathFlags code below can be dropped?
https://github.com/llvm/llvm-project/pull/94295
More information about the llvm-commits
mailing list