LLVM 17.0.0git
|
A value that is used outside the VPlan. More...
#include "Transforms/Vectorize/VPlan.h"
Additional Inherited Members | |
![]() | |
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 |
![]() | |
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 LCSSA phi node.
void VPLiveOut::fixPhi | ( | VPlan & | Plan, |
VPTransformState & | State | ||
) |
Fixup the wrapped LCSSA phi node in the unique exit block.
This simply means we need to add the appropriate incoming value from the middle block as exiting edges from the scalar epilogue loop (if present) are already in place, and we exit the vector loop exclusively to the middle block.
Definition at line 151 of file VPlanRecipes.cpp.
References llvm::PHINode::addIncoming(), llvm::VPTransformState::Builder, llvm::VPTransformState::get(), llvm::VPLane::getFirstLane(), llvm::IRBuilderBase::GetInsertBlock(), llvm::VPLane::getLastLaneForVF(), llvm::VPUser::getOperand(), llvm::vputils::isUniformAfterVectorization(), llvm::VPTransformState::UF, and llvm::VPTransformState::VF.
Returns true if the VPLiveOut uses scalars of operand Op
.
Reimplemented from llvm::VPUser.
Definition at line 650 of file VPlan.h.
References assert(), llvm::is_contained(), and llvm::VPUser::operands().