LLVM: llvm::VPIRPhi Struct Reference (original) (raw)

An overlay for VPIRInstructions wrapping PHI nodes enabling convenient use cast/dyn_cast/isa and execute() implementation. More...

Public Member Functions

VPIRPhi (PHINode &PN)

PHINode &

getIRPhi ()

void

execute (VPTransformState &State) override

The method which generates the output IR instructions that correspond to this VPRecipe, thereby "executing" the VPlan.

Public Member Functions inherited from llvm::VPIRInstruction

~VPIRInstruction () override=default

VPIRInstruction *

clone () override

Clone the current recipe.

LLVM_ABI_FOR_TEST InstructionCost

computeCost (ElementCount VF, VPCostContext &Ctx) const override

Return the cost of this VPIRInstruction.

Instruction &

getInstruction () const

bool

usesScalars (const VPValue *Op) const override

Returns true if the VPUser uses scalars of operand [Op](namespacellvm.html#ab471937b9a227e70c7fe8bd9604014d6).

bool

usesFirstPartOnly (const VPValue *Op) const override

Returns true if the VPUser only uses the first part of operand [Op](namespacellvm.html#ab471937b9a227e70c7fe8bd9604014d6).

bool

usesFirstLaneOnly (const VPValue *Op) const override

Returns true if the VPUser only uses the first lane of operand [Op](namespacellvm.html#ab471937b9a227e70c7fe8bd9604014d6).

void

extractLastLaneOfLastPartOfFirstOperand (VPBuilder &Builder)

Update the recipe's first operand to the last lane of the last part of the operand using Builder.

Public Member Functions inherited from llvm::VPRecipeBase

VPRecipeBase (const unsigned char SC, ArrayRef< VPValue * > Operands, DebugLoc DL=DebugLoc::getUnknown())

~VPRecipeBase () override=default

VPBasicBlock *

getParent ()

const VPBasicBlock *

getParent () const

VPRegionBlock *

getRegion ()

const VPRegionBlock *

getRegion () const

InstructionCost

cost (ElementCount VF, VPCostContext &Ctx)

Return the cost of this recipe, taking into account if the cost computation should be skipped and the ForceTargetInstructionCost flag.

void

insertBefore (VPRecipeBase *InsertPos)

Insert an unlinked recipe into a basic block immediately before the specified recipe.

void

insertBefore (VPBasicBlock &BB, iplist< VPRecipeBase >::iterator IP)

Insert an unlinked recipe into BB immediately before the insertion point IP;.

void

insertAfter (VPRecipeBase *InsertPos)

Insert an unlinked Recipe into a basic block immediately after the specified Recipe.

void

moveAfter (VPRecipeBase *MovePos)

Unlink this recipe from its current VPBasicBlock and insert it into the VPBasicBlock that MovePos lives in, right after MovePos.

void

moveBefore (VPBasicBlock &BB, iplist< VPRecipeBase >::iterator I)

Unlink this recipe and insert into BB before I.

void

removeFromParent ()

This method unlinks 'this' from the containing basic block, but does not delete it.

iplist< VPRecipeBase >::iterator

eraseFromParent ()

This method unlinks 'this' from the containing basic block and deletes it.

bool

mayHaveSideEffects () const

Returns true if the recipe may have side-effects.

bool

isPhi () const

Returns true for PHI-like recipes.

bool

mayReadFromMemory () const

Returns true if the recipe may read from memory.

bool

mayWriteToMemory () const

Returns true if the recipe may write to memory.

bool

mayReadOrWriteMemory () const

Returns true if the recipe may read from or write to memory.

DebugLoc

getDebugLoc () const

Returns the debug location of the recipe.

bool

isScalarCast () const

Return true if the recipe is a scalar cast.

void

setDebugLoc (DebugLoc NewDL)

Set the recipe's debug location to NewDL.

void

print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const override final

Print the recipe, delegating to printRecipe().

Public Member Functions inherited from llvm::ilist_node_with_parent< VPRecipeBase, VPBasicBlock >

VPRecipeBase *

getPrevNode ()

VPRecipeBase *

getNextNode ()

Get the next node, or nullptr for the list tail.

Public Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< VPRecipeBase, Options... >::type >

self_iterator

getIterator ()

reverse_self_iterator

getReverseIterator ()

std::enable_if_t< T::is_sentinel_tracking_explicit, bool >

isSentinel () const

Check whether this is the sentinel node.

Public Member Functions inherited from llvm::ilist_detail::node_parent_access< ilist_node_impl< ilist_detail::compute_node_options< VPRecipeBase, Options... >::type >, ilist_detail::compute_node_options< VPRecipeBase, Options... >::type::parent_ty >

const ilist_detail::compute_node_options< VPRecipeBase, Options... >::type::parent_ty *

getParent () const

void

setParent (ilist_detail::compute_node_options< VPRecipeBase, Options... >::type::parent_ty *Parent)

Public Member Functions inherited from llvm::VPDef

VPDef (const unsigned char SC)

virtual

~VPDef ()

VPValue *

getVPSingleValue ()

Returns the only VPValue defined by the VPDef.

const VPValue *

getVPSingleValue () const

VPValue *

getVPValue (unsigned I)

Returns the VPValue with index I defined by the VPDef.

const VPValue *

getVPValue (unsigned I) const

ArrayRef< VPValue * >

definedValues ()

Returns an ArrayRef of the values defined by the VPDef.

ArrayRef< VPValue * >

definedValues () const

Returns an ArrayRef of the values defined by the VPDef.

unsigned

getNumDefinedValues () const

Returns the number of values defined by the VPDef.

unsigned

getVPDefID () const

LLVM_ABI_FOR_TEST void

dump () const

Dump the VPDef to stderr (for debugging).

Public Member Functions inherited from llvm::VPUser

VPUser ()=delete

VPUser (const VPUser &)=delete

VPUser &

operator= (const VPUser &)=delete

virtual

~VPUser ()

void

addOperand (VPValue *Operand)

unsigned

getNumOperands () const

VPValue *

getOperand (unsigned N) const

void

setOperand (unsigned I, VPValue *New)

void

swapOperands ()

Swap operands of the VPUser. It must have exactly 2 operands.

void

replaceUsesOfWith (VPValue *From, VPValue *To)

Replaces all uses of From in the VPUser with To.

operand_iterator

op_begin ()

const_operand_iterator

op_begin () const

operand_iterator

op_end ()

const_operand_iterator

op_end () const

operand_range

operands ()

const_operand_range

operands () const

Public Member Functions inherited from llvm::VPPhiAccessors

virtual

~VPPhiAccessors ()=default

VPValue *

getIncomingValue (unsigned Idx) const

Returns the incoming VPValue with index Idx.

const VPBasicBlock *

getIncomingBlock (unsigned Idx) const

Returns the incoming block with index Idx.

virtual unsigned

getNumIncoming () const

Returns the number of incoming values, also number of incoming blocks.

VPUser::const_operand_range

incoming_values () const

Returns an interator range over the incoming values.

const_incoming_blocks_range

incoming_blocks () const

Returns an iterator range over the incoming blocks.

detail::zippy< llvm::detail::zip_first, VPUser::const_operand_range, const_incoming_blocks_range >

incoming_values_and_blocks () const

Returns an iterator range over pairs of incoming values and corresponding incoming blocks.

void

removeIncomingValueFor (VPBlockBase *IncomingBlock) const

Removes the incoming value for IncomingBlock, which must be a predecessor.

void

printPhiOperands (raw_ostream &O, VPSlotTracker &SlotTracker) const

Print the recipe.

An overlay for VPIRInstructions wrapping PHI nodes enabling convenient use cast/dyn_cast/isa and execute() implementation.

A single VPValue operand is allowed, and it is used to add a new incoming value for the single predecessor VPBB.

Definition at line 1484 of file VPlan.h.