34 auto *NCondBit =
new VPValue(CondBit->getUnderlyingValue());
36 Plan->addCBV(NCondBit);
41 if (
Base->getNumPredecessors() == 0 ||
Base->getNumSuccessors() == 0)
52 if (DeadInstructions.
count(Inst)) {
59 if (isa<LoadInst>(Inst) || isa<StoreInst>(Inst))
61 else if (
PHINode *Phi = dyn_cast<PHINode>(Inst)) {
72 dyn_cast_or_null<VPWidenRecipe>(LastRecipe)) {
73 WidenRecipe->appendInstruction(Inst);
81 LastRecipe = NewRecipe;
This class represents lattice values for constants.
VPRegionBlock represents a collection of VPBasicBlocks and VPRegionBlocks which form a Single-Entry-S...
iplist< VPRecipeBase >::iterator eraseFromParent()
This method unlinks 'this' from the containing basic block and deletes it.
A Recipe for widening load/store operations.
InductionKind getKind() const
VPRecipeBase is a base class modeling a sequence of one or more output IR instructions.
A recipe for handling all phi nodes except for integer and FP inductions.
void insertBefore(VPRecipeBase *InsertPos)
Insert an unlinked recipe into a basic block immediately before the specified recipe.
iterator begin()
Recipe iterator methods.
Value * getUnderlyingValue()
Return the underlying Value attached to this VPValue.
Integer induction variable. Step = C.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
std::unique_ptr< VPlan > VPlanPtr
size_type count(ConstPtrType Ptr) const
count - Return 1 if the specified pointer is in the set, 0 otherwise.
VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph.
A struct for saving information about induction variables.
VPBlockBase is the building block of the Hierarchical Control-Flow Graph.
void setCondBit(VPValue *CV)
const VPBlockBase * getEntry() const
ValueT lookup(const KeyT &Key) const
Floating point induction variable.
LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)
A recipe for handling phi nodes of integer and floating-point inductions, producing their vector and ...
VPWidenRecipe is a recipe for producing a copy of vector type for each Instruction in its ingredients...
This is a concrete Recipe that models a single VPlan-level instruction.