[PATCH] D138475: [SCEVExpander] Support cost evaluation of several SCEVs with same budget
Max Kazantsev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 6 02:02:47 PST 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6dac170140d0: [SCEVExpander] Support cost evaluation of several SCEVs with same budget (authored by mkazantsev).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138475/new/
https://reviews.llvm.org/D138475
Files:
llvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h
llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
Index: llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
===================================================================
--- llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
+++ llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
@@ -221,11 +221,8 @@
// Do not generate something ridiculous.
auto *PHTerm = Preheader->getTerminator();
- if (Rewriter.isHighCostExpansion(InvariantLHS, L, SCEVCheapExpansionBudget,
- TTI, PHTerm))
- return false;
- if (Rewriter.isHighCostExpansion(InvariantRHS, L, SCEVCheapExpansionBudget,
- TTI, PHTerm))
+ if (Rewriter.isHighCostExpansion({ InvariantLHS, InvariantRHS }, L,
+ 2 * SCEVCheapExpansionBudget, TTI, PHTerm))
return false;
auto *NewLHS =
Rewriter.expandCodeFor(InvariantLHS, IVOperand->getType(), PHTerm);
Index: llvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h
===================================================================
--- llvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h
+++ llvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h
@@ -219,11 +219,11 @@
/// Return true for expressions that can't be evaluated at runtime
/// within given \b Budget.
///
- /// At is a parameter which specifies point in code where user is going to
- /// expand this expression. Sometimes this knowledge can lead to
+ /// \p At is a parameter which specifies point in code where user is going to
+ /// expand these expressions. Sometimes this knowledge can lead to
/// a less pessimistic cost estimation.
- bool isHighCostExpansion(const SCEV *Expr, Loop *L, unsigned Budget,
- const TargetTransformInfo *TTI,
+ bool isHighCostExpansion(ArrayRef<const SCEV *> Exprs, Loop *L,
+ unsigned Budget, const TargetTransformInfo *TTI,
const Instruction *At) {
assert(TTI && "This function requires TTI to be provided.");
assert(At && "This function requires At instruction to be provided.");
@@ -233,7 +233,8 @@
SmallPtrSet<const SCEV *, 8> Processed;
InstructionCost Cost = 0;
unsigned ScaledBudget = Budget * TargetTransformInfo::TCC_Basic;
- Worklist.emplace_back(-1, -1, Expr);
+ for (auto *Expr : Exprs)
+ Worklist.emplace_back(-1, -1, Expr);
while (!Worklist.empty()) {
const SCEVOperand WorkItem = Worklist.pop_back_val();
if (isHighCostExpansionHelper(WorkItem, L, *At, Cost, ScaledBudget, *TTI,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D138475.480393.patch
Type: text/x-patch
Size: 2535 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221206/fd12a4bc/attachment.bin>
More information about the llvm-commits
mailing list