LLVM: lib/Transforms/Utils/ScalarEvolutionExpander.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define SCEV_DEBUG_WITH_TYPE(TYPE, X)
Functions
static const Loop * PickMostRelevantLoop (const Loop *A, const Loop *B, DominatorTree &DT)
PickMostRelevantLoop - Given two loops pick the one that's most relevant for SCEV expansion.
static bool canBeCheaplyTransformed (ScalarEvolution &SE, const SCEVAddRecExpr *Phi, const SCEVAddRecExpr *Requested, bool &InvertStep)
Check whether we can cheaply express the requested SCEV in terms of the available PHI SCEV by truncation and/or inversion of the step.
static bool IsIncrementNSW (ScalarEvolution &SE, const SCEVAddRecExpr *AR)
static bool IsIncrementNUW (ScalarEvolution &SE, const SCEVAddRecExpr *AR)
template<typename T>
static InstructionCost costAndCollectOperands (const SCEVOperand &WorkItem, const TargetTransformInfo &TTI, TargetTransformInfo::TargetCostKind CostKind, SmallVectorImpl< SCEVOperand > &Worklist)

SCEV_DEBUG_WITH_TYPE

#define SCEV_DEBUG_WITH_TYPE ( TYPE,
X )

canBeCheaplyTransformed()

costAndCollectOperands()

Definition at line 1908 of file ScalarEvolutionExpander.cpp.

References assert(), llvm::CmpInst::BAD_ICMP_PREDICATE, llvm::cast(), CostKind, llvm::dyn_cast(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::enumerate(), llvm::isa(), llvm_unreachable, llvm::CmpInst::makeCmpResultType(), llvm::max(), llvm::TargetTransformInfo::None, Opc, OpIdx, llvm::scAddExpr, llvm::scAddRecExpr, llvm::scConstant, llvm::scCouldNotCompute, llvm::scMulExpr, llvm::scPtrToInt, llvm::scSequentialUMinExpr, llvm::scSignExtend, llvm::scSMaxExpr, llvm::scSMinExpr, llvm::scTruncate, llvm::scUDivExpr, llvm::scUMaxExpr, llvm::scUMinExpr, llvm::scUnknown, llvm::scVScale, llvm::scZeroExtend, and T.

IsIncrementNSW()

IsIncrementNUW()

PickMostRelevantLoop()