LLVM 20.0.0git
|
A value that is used outside the VPlan. More...
#include "Transforms/Vectorize/VPlan.h"
Static Public Member Functions | |
static bool | classof (const VPUser *U) |
Additional Inherited Members | |
Public Types inherited from llvm::VPUser | |
enum class | VPUserID { Recipe , LiveOut } |
Subclass identifier (for isa/dyn_cast). More... | |
typedef SmallVectorImpl< VPValue * >::iterator | operand_iterator |
typedef SmallVectorImpl< VPValue * >::const_iterator | const_operand_iterator |
typedef iterator_range< operand_iterator > | operand_range |
typedef iterator_range< const_operand_iterator > | const_operand_range |
Protected Member Functions inherited from llvm::VPUser | |
void | printOperands (raw_ostream &O, VPSlotTracker &SlotTracker) const |
Print the operands to O . | |
VPUser (ArrayRef< VPValue * > Operands, VPUserID ID) | |
VPUser (std::initializer_list< VPValue * > Operands, VPUserID ID) | |
template<typename IterT > | |
VPUser (iterator_range< IterT > Operands, VPUserID ID) | |
A value that is used outside the VPlan.
The operand of the user needs to be added to the associated phi node. The incoming block from VPlan is determined by where the VPValue is defined: if it is defined by a recipe outside a region, its parent block is used, otherwise the middle block is used.
Definition at line 711 of file VPlan.h.
References llvm::VPUser::LiveOut.
void VPLiveOut::fixPhi | ( | VPlan & | Plan, |
VPTransformState & | State | ||
) |
Fix the wrapped phi node.
This means adding an incoming value to exit block phi's from the vector loop via middle block (values from scalar loop already reach these phi's), and updating the value to scalar header phi's from the scalar preheader.
Definition at line 195 of file VPlanRecipes.cpp.
References llvm::PHINode::addIncoming(), llvm::VPTransformState::Builder, llvm::VPTransformState::CFG, llvm::VPTransformState::get(), llvm::PHINode::getBasicBlockIndex(), llvm::VPValue::getDefiningRecipe(), llvm::VPBasicBlock::getEnclosingLoopRegion(), llvm::VPLane::getFirstLane(), llvm::BasicBlock::getFirstNonPHIIt(), llvm::VPLane::getLastLaneForVF(), llvm::VPUser::getOperand(), llvm::VPRecipeBase::getParent(), llvm::VPBlockBase::getSingleSuccessor(), llvm::VPlan::getVectorLoopRegion(), llvm::vputils::isUniformAfterVectorization(), llvm::PHINode::setIncomingValueForBlock(), llvm::IRBuilderBase::SetInsertPoint(), llvm::VPTransformState::UF, llvm::VPTransformState::VF, and llvm::VPTransformState::CFGState::VPBB2IRBB.
|
inline |
void VPLiveOut::print | ( | raw_ostream & | O, |
VPSlotTracker & | SlotTracker | ||
) | const |
Print the VPLiveOut to O
.
Definition at line 221 of file VPlanRecipes.cpp.
References llvm::VPUser::getOperand(), getPhi(), llvm::Value::printAsOperand(), and llvm::VPValue::printAsOperand().
Returns true if the VPLiveOut uses scalars of operand Op
.
Reimplemented from llvm::VPUser.
Definition at line 722 of file VPlan.h.
References assert(), llvm::is_contained(), and llvm::VPUser::operands().