Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/include/llvm/Analysis/ScalarEvolution.h
Show First 20 Lines • Show All 1,194 Lines • ▼ Show 20 Lines | public: | ||||
std::optional<LoopInvariantPredicate> | std::optional<LoopInvariantPredicate> | ||||
getLoopInvariantExitCondDuringFirstIterationsImpl( | getLoopInvariantExitCondDuringFirstIterationsImpl( | ||||
ICmpInst::Predicate Pred, const SCEV *LHS, const SCEV *RHS, const Loop *L, | ICmpInst::Predicate Pred, const SCEV *LHS, const SCEV *RHS, const Loop *L, | ||||
const Instruction *CtxI, const SCEV *MaxIter); | const Instruction *CtxI, const SCEV *MaxIter); | ||||
/// Simplify LHS and RHS in a comparison with predicate Pred. Return true | /// Simplify LHS and RHS in a comparison with predicate Pred. Return true | ||||
/// iff any changes were made. If the operands are provably equal or | /// iff any changes were made. If the operands are provably equal or | ||||
/// unequal, LHS and RHS are set to the same value and Pred is set to either | /// unequal, LHS and RHS are set to the same value and Pred is set to either | ||||
/// ICMP_EQ or ICMP_NE. ControllingFiniteLoop is set if this comparison | /// ICMP_EQ or ICMP_NE. | ||||
/// controls the exit of a loop known to have a finite number of iterations. | |||||
bool SimplifyICmpOperands(ICmpInst::Predicate &Pred, const SCEV *&LHS, | bool SimplifyICmpOperands(ICmpInst::Predicate &Pred, const SCEV *&LHS, | ||||
const SCEV *&RHS, unsigned Depth = 0, | const SCEV *&RHS, unsigned Depth = 0); | ||||
bool ControllingFiniteLoop = false); | |||||
/// Return the "disposition" of the given SCEV with respect to the given | /// Return the "disposition" of the given SCEV with respect to the given | ||||
/// loop. | /// loop. | ||||
LoopDisposition getLoopDisposition(const SCEV *S, const Loop *L); | LoopDisposition getLoopDisposition(const SCEV *S, const Loop *L); | ||||
/// Return true if the value of the given SCEV is unchanging in the | /// Return true if the value of the given SCEV is unchanging in the | ||||
/// specified loop. | /// specified loop. | ||||
bool isLoopInvariant(const SCEV *S, const Loop *L); | bool isLoopInvariant(const SCEV *S, const Loop *L); | ||||
▲ Show 20 Lines • Show All 1,197 Lines • Show Last 20 Lines |