[PATCH] D141823: [SCEV] More precise trip multiples
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 16 03:39:09 PST 2023
nikic added a comment.
Precommit tests please.
================
Comment at: llvm/lib/Analysis/ScalarEvolution.cpp:6317
+ return TZ >= BitWidth ? APInt::getZero(BitWidth)
+ : APInt(BitWidth, 1).shl(TZ);
}
----------------
APInt::getOneBitSet
================
Comment at: llvm/lib/Analysis/ScalarEvolution.cpp:6323
+ const SCEVTruncateExpr *T = cast<SCEVTruncateExpr>(S);
+ return getMaxConstantMultiple(T->getOperand()).trunc(BitWidth);
}
----------------
I don't think this is correct. `trunc(X nuw* C)` is not, in general, the same as `trunc(X) nuw* trunc(C)`.
================
Comment at: llvm/lib/Analysis/ScalarEvolution.cpp:6372
+ // If there are no wrap guarantees, find the trailing bits, which is the
+ // miminum of its operands.
+ uint32_t TZ = getMinTrailingZeros(N->getOperand(0));
----------------
minimum
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D141823/new/
https://reviews.llvm.org/D141823
More information about the llvm-commits
mailing list