class VPWidenPHIRecipe
Declaration
class VPWidenPHIRecipe : public VPHeaderPHIRecipe { /* full declaration omitted */ };
Description
A recipe for handling header phis that are widened in the vector loop. In the VPlan native path, all incoming VPValues & VPBasicBlock pairs are managed in the recipe directly.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1235
Inherits from: VPHeaderPHIRecipe
Member Variables
- private SmallVector<llvm::VPBasicBlock*, 2> IncomingBlocks
- List of incoming blocks. Only used in the VPlan native path.
Inherited from VPValue:
Method Overview
- public VPWidenPHIRecipe(llvm::PHINode * Phi, llvm::VPValue * Start = nullptr)
- public void addIncoming(llvm::VPValue * IncomingV, llvm::VPBasicBlock * IncomingBlock)
- public static inline bool classof(const llvm::VPRecipeBase * B)
- public static inline bool classof(const llvm::VPHeaderPHIRecipe * R)
- public static inline bool classof(const llvm::VPValue * V)
- public void execute(llvm::VPTransformState & State)
- public llvm::VPBasicBlock * getIncomingBlock(unsigned int I)
- public llvm::VPValue * getIncomingValue(unsigned int I)
- public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
- public ~VPWidenPHIRecipe()
Inherited from VPHeaderPHIRecipe:
- public classof
- public classof
- public execute
- public getBackedgeRecipe
- public getBackedgeValue
- public getStartValue
- public getStartValue
- public print
Inherited from VPValue:
- public addUser
- public dump
- public getDef
- public getDef
- public getLiveInIRValue
- public getLiveInIRValue
- public getNumUsers
- public getUnderlyingValue
- public getUnderlyingValue
- public getVPValueID
- public hasMoreThanOneUniqueUser
- public print
- public printAsOperand
- public removeUser
- public replaceAllUsesWith
- protected setUnderlyingValue
- public user_begin
- public user_begin
- public user_end
- public user_end
- public users
- public users
Inherited from VPRecipeBase:
- public classof
- public classof
- public eraseFromParent
- public execute
- public getParent
- public getParent
- public getUnderlyingInstr
- public getUnderlyingInstr
- public insertAfter
- public insertBefore
- public insertBefore
- public isPhi
- public mayHaveSideEffects
- public mayReadFromMemory
- public mayReadOrWriteMemory
- public mayWriteToMemory
- public moveAfter
- public moveBefore
- public removeFromParent
Inherited from VPUser:
- public addOperand
- public classof
- public getNumOperands
- public getOperand
- public getVPUserID
- public onlyFirstLaneUsed
- public op_begin
- public op_begin
- public op_end
- public op_end
- public operands
- public operands
- protected printOperands
- public removeLastOperand
- public setOperand
- public usesScalars
Inherited from VPDef:
- public definedValues
- public definedValues
- public dump
- public getNumDefinedValues
- public getVPDefID
- public getVPSingleValue
- public getVPSingleValue
- public getVPValue
- public getVPValue
- public print
Methods
¶VPWidenPHIRecipe(llvm::PHINode* Phi,
llvm::VPValue* Start = nullptr)
VPWidenPHIRecipe(llvm::PHINode* Phi,
llvm::VPValue* Start = nullptr)
Description
Create a new VPWidenPHIRecipe for \p Phi with start value \p Start.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1241
Parameters
- llvm::PHINode* Phi
- llvm::VPValue* Start = nullptr
¶void addIncoming(
llvm::VPValue* IncomingV,
llvm::VPBasicBlock* IncomingBlock)
void addIncoming(
llvm::VPValue* IncomingV,
llvm::VPBasicBlock* IncomingBlock)
Description
Adds a pair (\p IncomingV, \p IncomingBlock) to the phi.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1270
Parameters
- llvm::VPValue* IncomingV
- llvm::VPBasicBlock* IncomingBlock
¶static inline bool classof(
const llvm::VPRecipeBase* B)
static inline bool classof(
const llvm::VPRecipeBase* B)
Description
Method to support type inquiry through isa, cast, and dyn_cast.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1250
Parameters
- const llvm::VPRecipeBase* B
¶static inline bool classof(
const llvm::VPHeaderPHIRecipe* R)
static inline bool classof(
const llvm::VPHeaderPHIRecipe* R)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1253
Parameters
- const llvm::VPHeaderPHIRecipe* R
¶static inline bool classof(const llvm::VPValue* V)
static inline bool classof(const llvm::VPValue* V)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1256
Parameters
- const llvm::VPValue* V
¶void execute(llvm::VPTransformState& State)
void execute(llvm::VPTransformState& State)
Description
Generate the phi/select nodes.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1261
Parameters
- llvm::VPTransformState& State
¶llvm::VPBasicBlock* getIncomingBlock(
unsigned int I)
llvm::VPBasicBlock* getIncomingBlock(
unsigned int I)
Description
Returns the \p I th incoming VPBasicBlock.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1276
Parameters
- unsigned int I
¶llvm::VPValue* getIncomingValue(unsigned int I)
llvm::VPValue* getIncomingValue(unsigned int I)
Description
Returns the \p I th incoming VPValue.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1279
Parameters
- unsigned int I
¶void print(llvm::raw_ostream& O,
const llvm::Twine& Indent,
llvm::VPSlotTracker& SlotTracker) const
void print(llvm::raw_ostream& O,
const llvm::Twine& Indent,
llvm::VPSlotTracker& SlotTracker) const
Description
Print the recipe.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1265
Parameters
- llvm::raw_ostream& O
- const llvm::Twine& Indent
- llvm::VPSlotTracker& SlotTracker
¶~VPWidenPHIRecipe()
~VPWidenPHIRecipe()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1247