LLVM
15.0.0git
|
This class augments VPValue with operands which provide the inverse def-use edges from VPValue's users to their defs. More...
#include "Transforms/Vectorize/VPlanValue.h"
Public Types | |
enum | VPUserID { VPUserID::Recipe, VPUserID::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 |
Public Member Functions | |
VPUser ()=delete | |
VPUser (const VPUser &)=delete | |
VPUser & | operator= (const VPUser &)=delete |
virtual | ~VPUser () |
VPUserID | getVPUserID () const |
void | addOperand (VPValue *Operand) |
unsigned | getNumOperands () const |
VPValue * | getOperand (unsigned N) const |
void | setOperand (unsigned I, VPValue *New) |
void | removeLastOperand () |
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 |
virtual bool | usesScalars (const VPValue *Op) const |
Returns true if the VPUser uses scalars of operand Op . More... | |
virtual bool | onlyFirstLaneUsed (const VPValue *Op) const |
Returns true if the VPUser only uses the first lane of operand Op . More... | |
Static Public Member Functions | |
static bool | classof (const VPDef *Recipe) |
Method to support type inquiry through isa, cast, and dyn_cast. More... | |
Protected Member Functions | |
void | printOperands (raw_ostream &O, VPSlotTracker &SlotTracker) const |
Print the operands to O . More... | |
VPUser (ArrayRef< VPValue * > Operands, VPUserID ID) | |
VPUser (std::initializer_list< VPValue * > Operands, VPUserID ID) | |
template<typename IterT > | |
VPUser (iterator_range< IterT > Operands, VPUserID ID) | |
This class augments VPValue with operands which provide the inverse def-use edges from VPValue's users to their defs.
Definition at line 207 of file VPlanValue.h.
Definition at line 274 of file VPlanValue.h.
Definition at line 276 of file VPlanValue.h.
typedef SmallVectorImpl<VPValue *>::iterator llvm::VPUser::operand_iterator |
Definition at line 273 of file VPlanValue.h.
Definition at line 275 of file VPlanValue.h.
|
strong |
Subclass identifier (for isa/dyn_cast).
Enumerator | |
---|---|
Recipe | |
LiveOut |
Definition at line 210 of file VPlanValue.h.
Definition at line 226 of file VPlanValue.h.
References addOperand(), and Operands.
Definition at line 231 of file VPlanValue.h.
References Operands.
|
inlineprotected |
Definition at line 235 of file VPlanValue.h.
References addOperand(), and Operands.
|
delete |
|
inlinevirtual |
Definition at line 244 of file VPlanValue.h.
References operands().
|
inline |
Definition at line 251 of file VPlanValue.h.
References llvm::VPValue::addUser(), and Operands.
Referenced by addCanonicalIVRecipes(), llvm::VPWidenPHIRecipe::addIncoming(), VPUser(), llvm::VPWidenPHIRecipe::VPWidenPHIRecipe(), and llvm::VPWidenPointerInductionRecipe::VPWidenPointerInductionRecipe().
Method to support type inquiry through isa, cast, and dyn_cast.
Definition at line 753 of file VPlan.h.
References llvm::tgtok::Def.
|
inline |
Definition at line 256 of file VPlanValue.h.
References Operands.
Referenced by llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenPHIRecipe::execute(), llvm::InnerLoopVectorizer::fixNonInductionPHIs(), llvm::VPReductionRecipe::getCondOp(), llvm::VPInterleaveRecipe::getMask(), llvm::VPBranchOnMaskRecipe::getMask(), llvm::VPWidenMemoryInstructionRecipe::getMask(), llvm::VPBlendRecipe::getNumIncomingValues(), llvm::VPInterleaveRecipe::getNumStoreOperands(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPInterleaveRecipe::getStoredValues(), llvm::VPlanTransforms::optimizeInductions(), llvm::VPWidenPHIRecipe::print(), and llvm::VPReplicateRecipe::print().
|
inline |
Definition at line 257 of file VPlanValue.h.
References assert(), N, and Operands.
Referenced by canSimplifyBranchOnCond(), llvm::VPWidenRecipe::execute(), llvm::VPWidenSelectRecipe::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenPHIRecipe::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::VPWidenCanonicalIVRecipe::execute(), llvm::VPLiveOut::fixPhi(), llvm::VPInterleaveRecipe::getAddr(), llvm::VPWidenMemoryInstructionRecipe::getAddr(), llvm::VPHeaderPHIRecipe::getBackedgeValue(), llvm::VPScalarIVStepsRecipe::getCanonicalIV(), llvm::VPReductionRecipe::getChainOp(), llvm::VPReductionRecipe::getCondOp(), llvm::VPWidenPHIRecipe::getIncomingValue(), llvm::VPBlendRecipe::getIncomingValue(), llvm::VPBlendRecipe::getMask(), llvm::VPInterleaveRecipe::getMask(), llvm::VPBranchOnMaskRecipe::getMask(), llvm::VPWidenMemoryInstructionRecipe::getMask(), llvm::VPCanonicalIVPHIRecipe::getScalarType(), llvm::VPWidenCanonicalIVRecipe::getScalarType(), llvm::VPWidenIntOrFpInductionRecipe::getStartValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPScalarIVStepsRecipe::getStartValue(), llvm::VPWidenIntOrFpInductionRecipe::getStepValue(), llvm::VPScalarIVStepsRecipe::getStepValue(), llvm::VPWidenMemoryInstructionRecipe::getStoredValue(), llvm::VPReductionRecipe::getVecOp(), llvm::VPInstruction::onlyFirstLaneUsed(), llvm::VPlanTransforms::optimizeInductions(), and llvm::VPWidenSelectRecipe::print().
|
inline |
Definition at line 249 of file VPlanValue.h.
Referenced by llvm::VPRecipeBase::classof().
Returns true if the VPUser only uses the first lane of operand Op
.
Conservatively returns false.
Reimplemented in llvm::VPScalarIVStepsRecipe, llvm::VPCanonicalIVPHIRecipe, llvm::VPWidenMemoryInstructionRecipe, llvm::VPReplicateRecipe, llvm::VPInterleaveRecipe, llvm::VPBlendRecipe, and llvm::VPInstruction.
Definition at line 300 of file VPlanValue.h.
References assert(), llvm::is_contained(), and operands().
Referenced by llvm::VPBlendRecipe::onlyFirstLaneUsed(), and usesScalars().
|
inline |
Definition at line 278 of file VPlanValue.h.
References Operands.
Referenced by llvm::VPInterleaveRecipe::getStoredValues(), operands(), and llvm::VPReplicateRecipe::print().
|
inline |
Definition at line 279 of file VPlanValue.h.
References Operands.
|
inline |
|
inline |
Definition at line 281 of file VPlanValue.h.
References Operands.
|
inline |
Definition at line 282 of file VPlanValue.h.
References op_begin(), and op_end().
Referenced by llvm::VPInstruction::clone(), llvm::VPWidenRecipe::execute(), onlyFirstLaneUsed(), llvm::VPInstruction::onlyFirstLaneUsed(), llvm::VPBlendRecipe::onlyFirstLaneUsed(), llvm::VPInterleaveRecipe::onlyFirstLaneUsed(), llvm::VPReplicateRecipe::onlyFirstLaneUsed(), llvm::VPWidenMemoryInstructionRecipe::onlyFirstLaneUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPScalarIVStepsRecipe::onlyFirstLaneUsed(), llvm::VPInstruction::print(), llvm::InnerLoopVectorizer::scalarizeInstruction(), usesScalars(), llvm::VPLiveOut::usesScalars(), llvm::VPReplicateRecipe::usesScalars(), llvm::VPBranchOnMaskRecipe::usesScalars(), llvm::VPPredInstPHIRecipe::usesScalars(), llvm::InnerLoopVectorizer::widenCallInstruction(), and ~VPUser().
|
inline |
Definition at line 283 of file VPlanValue.h.
References op_begin(), and op_end().
|
protected |
Print the operands to O
.
Definition at line 1010 of file VPlan.cpp.
References llvm::interleaveComma(), and llvm::RISCVFenceField::O.
Referenced by llvm::VPWidenRecipe::print(), llvm::VPWidenCallRecipe::print(), llvm::VPWidenGEPRecipe::print(), llvm::VPWidenPHIRecipe::print(), llvm::VPFirstOrderRecurrencePHIRecipe::print(), llvm::VPReductionPHIRecipe::print(), llvm::VPReplicateRecipe::print(), llvm::VPPredInstPHIRecipe::print(), llvm::VPWidenMemoryInstructionRecipe::print(), llvm::VPActiveLaneMaskPHIRecipe::print(), llvm::VPWidenCanonicalIVRecipe::print(), and llvm::VPScalarIVStepsRecipe::print().
|
inline |
Definition at line 268 of file VPlanValue.h.
References Operands.
|
inline |
Definition at line 262 of file VPlanValue.h.
Referenced by llvm::VPlanTransforms::optimizeInductions().
Returns true if the VPUser uses scalars of operand Op
.
Conservatively returns if only first (scalar) lane is used, as default.
Reimplemented in llvm::VPPredInstPHIRecipe, llvm::VPBranchOnMaskRecipe, llvm::VPReplicateRecipe, and llvm::VPLiveOut.
Definition at line 292 of file VPlanValue.h.
References assert(), llvm::is_contained(), onlyFirstLaneUsed(), and operands().
Referenced by llvm::VPWidenPointerInductionRecipe::onlyScalarsGenerated(), and llvm::VPlanTransforms::optimizeInductions().