[llvm] cc016e6 - [NFC][SCEV] `getLoopDisposition()`: deduplicate handling
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 22 06:49:10 PST 2023
Author: Roman Lebedev
Date: 2023-01-22T17:40:52+03:00
New Revision: cc016e6f8f593f788714007d1f8d68af91283ba1
URL: https://github.com/llvm/llvm-project/commit/cc016e6f8f593f788714007d1f8d68af91283ba1
DIFF: https://github.com/llvm/llvm-project/commit/cc016e6f8f593f788714007d1f8d68af91283ba1.diff
LOG: [NFC][SCEV] `getLoopDisposition()`: deduplicate handling
Added:
Modified:
llvm/lib/Analysis/ScalarEvolution.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index c6dc9c804c7f..f4fcaa9ecf84 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -13642,11 +13642,6 @@ ScalarEvolution::computeLoopDisposition(const SCEV *S, const Loop *L) {
switch (S->getSCEVType()) {
case scConstant:
return LoopInvariant;
- case scPtrToInt:
- case scTruncate:
- case scZeroExtend:
- case scSignExtend:
- return getLoopDisposition(cast<SCEVCastExpr>(S)->getOperand(), L);
case scAddRecExpr: {
const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(S);
@@ -13677,15 +13672,20 @@ ScalarEvolution::computeLoopDisposition(const SCEV *S, const Loop *L) {
// Otherwise it's loop-invariant.
return LoopInvariant;
}
+ case scTruncate:
+ case scZeroExtend:
+ case scSignExtend:
+ case scPtrToInt:
case scAddExpr:
case scMulExpr:
+ case scUDivExpr:
case scUMaxExpr:
case scSMaxExpr:
case scUMinExpr:
case scSMinExpr:
case scSequentialUMinExpr: {
bool HasVarying = false;
- for (const auto *Op : cast<SCEVNAryExpr>(S)->operands()) {
+ for (const auto *Op : S->operands()) {
LoopDisposition D = getLoopDisposition(Op, L);
if (D == LoopVariant)
return LoopVariant;
@@ -13694,17 +13694,6 @@ ScalarEvolution::computeLoopDisposition(const SCEV *S, const Loop *L) {
}
return HasVarying ? LoopComputable : LoopInvariant;
}
- case scUDivExpr: {
- const SCEVUDivExpr *UDiv = cast<SCEVUDivExpr>(S);
- LoopDisposition LD = getLoopDisposition(UDiv->getLHS(), L);
- if (LD == LoopVariant)
- return LoopVariant;
- LoopDisposition RD = getLoopDisposition(UDiv->getRHS(), L);
- if (RD == LoopVariant)
- return LoopVariant;
- return (LD == LoopInvariant && RD == LoopInvariant) ?
- LoopInvariant : LoopComputable;
- }
case scUnknown:
// All non-instruction values are loop invariant. All instructions are loop
// invariant if they are not contained in the specified loop.
More information about the llvm-commits
mailing list