|
LLVM 24.0.0git
|
Describes a conditional induction variable: an induction variable that is updated only on loop iterations for which a certain predicate is satisfied. More...
#include "llvm/Analysis/IVDescriptors.h"
Public Member Functions | |
| ConditionalInductionDescriptor ()=default | |
| PHINode * | getHeaderPHI () const |
| Returns the header PHI described by this descriptor. | |
| PHINode * | getBackedgePHI () const |
| Returns the backedge PHI that selects between StepInst and the HeaderPHI. | |
| Instruction * | getStepInst () const |
| Returns the instruction that updates the conditional induction PHI. | |
| const SCEV * | getStartSCEV () const |
| Returns a SCEV expression for the initial value of the conditional induction PHI. | |
| const SCEV * | getStepSCEV () const |
| Returns a SCEV expression for the step of the conditional induction PHI. | |
| SCEVNoWrapFlags | getSCEVNoWrapFlags () const |
| Returns the SCEV no-wrap flags that apply to StepInst. | |
Static Public Member Functions | |
| static LLVM_ABI bool | isConditionalInductionPHI (PHINode *PN, const Loop *L, ConditionalInductionDescriptor &Desc, ScalarEvolution &SE) |
Returns true if PN is a conditional induction variable in the loop L. | |
Describes a conditional induction variable: an induction variable that is updated only on loop iterations for which a certain predicate is satisfied.
Its step must be loop-invariant.
Definition at line 489 of file IVDescriptors.h.
|
default |
References ConditionalInductionDescriptor(), and LLVM_ABI.
Referenced by ConditionalInductionDescriptor(), and isConditionalInductionPHI().
|
inline |
Returns the backedge PHI that selects between StepInst and the HeaderPHI.
Definition at line 504 of file IVDescriptors.h.
|
inline |
Returns the header PHI described by this descriptor.
Definition at line 501 of file IVDescriptors.h.
|
inline |
Returns the SCEV no-wrap flags that apply to StepInst.
Definition at line 518 of file IVDescriptors.h.
Returns a SCEV expression for the initial value of the conditional induction PHI.
Definition at line 511 of file IVDescriptors.h.
|
inline |
Returns the instruction that updates the conditional induction PHI.
Definition at line 507 of file IVDescriptors.h.
Returns a SCEV expression for the step of the conditional induction PHI.
This is the value it increments by when the predicate is satisfied.
Definition at line 515 of file IVDescriptors.h.
|
static |
Returns true if PN is a conditional induction variable in the loop L.
If it is, Desc will contain the data describing the PHI.
Definition at line 1712 of file IVDescriptors.cpp.
References llvm::cast(), ConditionalInductionDescriptor(), llvm::dbgs(), llvm::dyn_cast(), llvm::find_singleton(), llvm::SCEV::FlagAnyWrap, llvm::SCEV::FlagNSW, llvm::SCEV::FlagNUW, GEP, llvm::ScalarEvolution::getEffectiveSCEVType(), llvm::PHINode::getIncomingValueForBlock(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), llvm::ScalarEvolution::getSCEV(), llvm::ScalarEvolution::getTruncateOrSignExtend(), llvm::Value::getType(), llvm::Value::hasOneUse(), llvm::Type::isIntOrPtrTy(), llvm::ScalarEvolution::isKnownNonNegative(), llvm::Type::isPointerTy(), LLVM_DEBUG, llvm::PatternMatch::m_c_Add(), llvm::PatternMatch::m_PtrAdd(), llvm::PatternMatch::m_Specific(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), llvm::ScalarEvolution::setFlags(), and llvm::Value::users().