|
Enzyme main
|
#include "MustExitScalarEvolution.h"


Public Member Functions | |
| MustExitScalarEvolution (llvm::Function &F, llvm::TargetLibraryInfo &TLI, llvm::AssumptionCache &AC, llvm::DominatorTree &DT, llvm::LoopInfo &LI) | |
| ScalarEvolution::ExitLimit | computeExitLimit (const llvm::Loop *L, llvm::BasicBlock *ExitingBlock, bool AllowPredicates) |
| ScalarEvolution::ExitLimit | computeExitLimitFromCond (const llvm::Loop *L, llvm::Value *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates) |
| ScalarEvolution::ExitLimit | computeExitLimitFromCondCached (ExitLimitCacheTy &Cache, const llvm::Loop *L, llvm::Value *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates) |
| ScalarEvolution::ExitLimit | computeExitLimitFromCondImpl (ExitLimitCacheTy &Cache, const llvm::Loop *L, llvm::Value *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates) |
| ScalarEvolution::ExitLimit | computeExitLimitFromICmp (const llvm::Loop *L, llvm::ICmpInst *ExitCond, bool ExitIfTrue, bool ControlsExit, bool AllowPredicates=false) |
| bool | loopIsFiniteByAssumption (const llvm::Loop *L) |
| ScalarEvolution::ExitLimit | howManyLessThans (const llvm::SCEV *LHS, const llvm::SCEV *RHS, const llvm::Loop *L, bool IsSigned, bool ControlsExit, bool AllowPredicates) |
| ScalarEvolution::ExitLimit | computeExitLimitFromSingleExitSwitch (const llvm::Loop *L, llvm::SwitchInst *Switch, llvm::BasicBlock *ExitingBB, bool IsSubExpr) |
Public Attributes | |
| llvm::SmallPtrSet< llvm::BasicBlock *, 4 > | GuaranteedUnreachable |
Definition at line 44 of file MustExitScalarEvolution.h.
| MustExitScalarEvolution::MustExitScalarEvolution | ( | llvm::Function & | F, |
| llvm::TargetLibraryInfo & | TLI, | ||
| llvm::AssumptionCache & | AC, | ||
| llvm::DominatorTree & | DT, | ||
| llvm::LoopInfo & | LI ) |
Definition at line 60 of file MustExitScalarEvolution.cpp.
| ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimit | ( | const llvm::Loop * | L, |
| llvm::BasicBlock * | ExitingBlock, | ||
| bool | AllowPredicates ) |
Definition at line 68 of file MustExitScalarEvolution.cpp.
References computeExitLimitFromCond(), computeExitLimitFromSingleExitSwitch(), and GuaranteedUnreachable.
Referenced by CacheUtility::getContext().
| ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromCond | ( | const llvm::Loop * | L, |
| llvm::Value * | ExitCond, | ||
| bool | ExitIfTrue, | ||
| bool | ControlsExit, | ||
| bool | AllowPredicates ) |
Definition at line 52 of file MustExitScalarEvolution.cpp.
References computeExitLimitFromCondCached().
Referenced by computeExitLimit().
| ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromCondCached | ( | ExitLimitCacheTy & | Cache, |
| const llvm::Loop * | L, | ||
| llvm::Value * | ExitCond, | ||
| bool | ExitIfTrue, | ||
| bool | ControlsExit, | ||
| bool | AllowPredicates ) |
Definition at line 155 of file MustExitScalarEvolution.cpp.
References computeExitLimitFromCondImpl().
Referenced by computeExitLimitFromCond(), and computeExitLimitFromCondImpl().
| ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromCondImpl | ( | ExitLimitCacheTy & | Cache, |
| const llvm::Loop * | L, | ||
| llvm::Value * | ExitCond, | ||
| bool | ExitIfTrue, | ||
| bool | ControlsExit, | ||
| bool | AllowPredicates ) |
Definition at line 170 of file MustExitScalarEvolution.cpp.
References computeExitLimitFromCondCached().
Referenced by computeExitLimitFromCondCached().
| ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromICmp | ( | const llvm::Loop * | L, |
| llvm::ICmpInst * | ExitCond, | ||
| bool | ExitIfTrue, | ||
| bool | ControlsExit, | ||
| bool | AllowPredicates = false ) |
Definition at line 343 of file MustExitScalarEvolution.cpp.
References Constant, howManyLessThans(), PROP_PHI, and SCEVUse.
| ScalarEvolution::ExitLimit MustExitScalarEvolution::computeExitLimitFromSingleExitSwitch | ( | const llvm::Loop * | L, |
| llvm::SwitchInst * | Switch, | ||
| llvm::BasicBlock * | ExitingBB, | ||
| bool | IsSubExpr ) |
! If we're guaranteed unreachable, the default dest does not matter.
Definition at line 130 of file MustExitScalarEvolution.cpp.
References GuaranteedUnreachable.
Referenced by computeExitLimit().
| ScalarEvolution::ExitLimit MustExitScalarEvolution::howManyLessThans | ( | const llvm::SCEV * | LHS, |
| const llvm::SCEV * | RHS, | ||
| const llvm::Loop * | L, | ||
| bool | IsSigned, | ||
| bool | ControlsExit, | ||
| bool | AllowPredicates ) |
Definition at line 1197 of file MustExitScalarEvolution.cpp.
Referenced by computeExitLimitFromICmp().
| bool MustExitScalarEvolution::loopIsFiniteByAssumption | ( | const llvm::Loop * | L | ) |
Definition at line 48 of file MustExitScalarEvolution.cpp.
| llvm::SmallPtrSet<llvm::BasicBlock *, 4> MustExitScalarEvolution::GuaranteedUnreachable |
Definition at line 46 of file MustExitScalarEvolution.h.
Referenced by computeExitLimit(), computeExitLimitFromSingleExitSwitch(), and CacheUtility::getContext().