LLVM 20.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 | |
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 () |
void | addOperand (VPValue *Operand) |
unsigned | getNumOperands () const |
VPValue * | getOperand (unsigned N) const |
void | setOperand (unsigned I, VPValue *New) |
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 . | |
virtual bool | onlyFirstLaneUsed (const VPValue *Op) const |
Returns true if the VPUser only uses the first lane of operand Op . | |
virtual bool | onlyFirstPartUsed (const VPValue *Op) const |
Returns true if the VPUser only uses the first part of operand Op . | |
Protected Member Functions | |
void | printOperands (raw_ostream &O, VPSlotTracker &SlotTracker) const |
Print the operands to O . | |
VPUser (ArrayRef< VPValue * > Operands) | |
VPUser (std::initializer_list< VPValue * > Operands) | |
template<typename IterT > | |
VPUser (iterator_range< IterT > Operands) | |
This class augments VPValue with operands which provide the inverse def-use edges from VPValue's users to their defs.
Definition at line 200 of file VPlanValue.h.
Definition at line 249 of file VPlanValue.h.
Definition at line 251 of file VPlanValue.h.
typedef SmallVectorImpl<VPValue*>::iterator llvm::VPUser::operand_iterator |
Definition at line 248 of file VPlanValue.h.
Definition at line 250 of file VPlanValue.h.
Definition at line 209 of file VPlanValue.h.
References addOperand(), and Operands.
|
inlineprotected |
Definition at line 214 of file VPlanValue.h.
References Operands.
|
inlineprotected |
Definition at line 217 of file VPlanValue.h.
References addOperand(), and Operands.
|
delete |
|
inlinevirtual |
Definition at line 226 of file VPlanValue.h.
References operands().
|
inline |
Definition at line 231 of file VPlanValue.h.
References llvm::VPValue::addUser(), and Operands.
Referenced by addCanonicalIVRecipes(), llvm::VPWidenPHIRecipe::addIncoming(), addScalarResumePhis(), addVPLaneMaskPhiAndUpdateExitBranch(), llvm::InnerLoopVectorizer::createInductionResumeVPValue(), llvm::VPWidenMemoryRecipe::setMask(), llvm::VPReductionRecipe::VPReductionRecipe(), VPUser(), and llvm::VPWidenPHIRecipe::VPWidenPHIRecipe().
|
inline |
Definition at line 236 of file VPlanValue.h.
References Operands.
Referenced by llvm::VPWidenCallRecipe::arg_operands(), llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPWidenIntrinsicRecipe::computeCost(), llvm::InnerLoopVectorizer::createInductionResumeVPValue(), llvm::VPIRInstruction::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenEVLRecipe::execute(), llvm::InnerLoopVectorizer::fixNonInductionPHIs(), llvm::VPWidenCallRecipe::getCalledScalarFunction(), llvm::VPReductionRecipe::getCondOp(), llvm::VPWidenEVLRecipe::getEVL(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPReplicateRecipe::getMask(), llvm::VPHistogramRecipe::getMask(), llvm::VPInterleaveRecipe::getMask(), llvm::VPBranchOnMaskRecipe::getMask(), llvm::VPWidenMemoryRecipe::getMask(), llvm::VPBlendRecipe::getNumIncomingValues(), llvm::VPInterleaveRecipe::getNumStoreOperands(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPInterleaveRecipe::getStoredValues(), llvm::VPBlendRecipe::isNormalized(), llvm::VPWidenIntrinsicRecipe::onlyFirstLaneUsed(), llvm::VPReverseVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPIRInstruction::print(), llvm::VPWidenGEPRecipe::print(), llvm::VPWidenPointerInductionRecipe::print(), llvm::VPWidenPHIRecipe::print(), llvm::VPReplicateRecipe::print(), and llvm::VPRecipeWithIRFlags::printFlags().
Definition at line 237 of file VPlanValue.h.
References assert(), N, and Operands.
Referenced by llvm::VPWidenCastRecipe::clone(), llvm::VPScalarCastRecipe::clone(), llvm::VPReverseVectorPointerRecipe::clone(), llvm::VPVectorPointerRecipe::clone(), llvm::VPWidenPointerInductionRecipe::clone(), llvm::VPFirstOrderRecurrencePHIRecipe::clone(), llvm::VPReductionPHIRecipe::clone(), llvm::VPBranchOnMaskRecipe::clone(), llvm::VPPredInstPHIRecipe::clone(), llvm::VPCanonicalIVPHIRecipe::clone(), llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPWidenCanonicalIVRecipe::clone(), llvm::VPDerivedIVRecipe::clone(), llvm::VPScalarIVStepsRecipe::clone(), llvm::VPWidenRecipe::computeCost(), llvm::VPWidenCastRecipe::computeCost(), llvm::VPWidenIntrinsicRecipe::computeCost(), llvm::VPHistogramRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), llvm::VPReductionRecipe::computeCost(), llvm::VPWidenRecipe::execute(), llvm::VPWidenCastRecipe::execute(), llvm::VPHistogramRecipe::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPReverseVectorPointerRecipe::execute(), llvm::VPVectorPointerRecipe::execute(), llvm::VPWidenPointerInductionRecipe::execute(), llvm::VPWidenPHIRecipe::execute(), llvm::VPReplicateRecipe::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::VPWidenCanonicalIVRecipe::execute(), llvm::VPDerivedIVRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPWidenEVLRecipe::execute(), llvm::VPInterleaveRecipe::getAddr(), llvm::VPWidenMemoryRecipe::getAddr(), llvm::VPHeaderPHIRecipe::getBackedgeValue(), llvm::VPWidenCallRecipe::getCalledScalarFunction(), llvm::VPReductionRecipe::getChainOp(), llvm::VPWidenSelectRecipe::getCond(), llvm::VPReductionRecipe::getCondOp(), llvm::VPWidenEVLRecipe::getEVL(), llvm::VPReductionEVLRecipe::getEVL(), llvm::VPWidenLoadEVLRecipe::getEVL(), llvm::VPWidenStoreEVLRecipe::getEVL(), llvm::VPWidenPointerInductionRecipe::getFirstUnrolledPartOperand(), llvm::VPWidenPHIRecipe::getIncomingValue(), llvm::VPBlendRecipe::getIncomingValue(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPReplicateRecipe::getMask(), llvm::VPHistogramRecipe::getMask(), llvm::VPInterleaveRecipe::getMask(), llvm::VPBranchOnMaskRecipe::getMask(), llvm::VPWidenMemoryRecipe::getMask(), llvm::VPBlendRecipe::getMask(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPDerivedIVRecipe::getStartValue(), llvm::VPWidenInductionRecipe::getStepValue(), llvm::VPDerivedIVRecipe::getStepValue(), llvm::VPScalarIVStepsRecipe::getStepValue(), llvm::VPWidenStoreRecipe::getStoredValue(), llvm::VPWidenStoreEVLRecipe::getStoredValue(), llvm::VPReductionRecipe::getVecOp(), llvm::VPReverseVectorPointerRecipe::getVFValue(), llvm::VPWidenIntOrFpInductionRecipe::getVFValue(), llvm::VPWidenIntrinsicRecipe::onlyFirstLaneUsed(), llvm::VPHistogramRecipe::print(), llvm::VPWidenSelectRecipe::print(), llvm::VPWidenPointerInductionRecipe::print(), llvm::VPInterleaveRecipe::print(), and llvm::VPDerivedIVRecipe::print().
Returns true if the VPUser only uses the first lane of operand Op
.
Conservatively returns false.
Reimplemented in llvm::VPInstruction, llvm::VPWidenEVLRecipe, llvm::VPScalarCastRecipe, llvm::VPWidenIntrinsicRecipe, llvm::VPReverseVectorPointerRecipe, llvm::VPVectorPointerRecipe, llvm::VPScalarPHIRecipe, llvm::VPBlendRecipe, llvm::VPInterleaveRecipe, llvm::VPReductionEVLRecipe, llvm::VPReplicateRecipe, llvm::VPWidenLoadRecipe, llvm::VPWidenLoadEVLRecipe, llvm::VPWidenStoreRecipe, llvm::VPWidenStoreEVLRecipe, llvm::VPCanonicalIVPHIRecipe, llvm::VPEVLBasedIVPHIRecipe, llvm::VPDerivedIVRecipe, and llvm::VPScalarIVStepsRecipe.
Definition at line 272 of file VPlanValue.h.
References assert(), llvm::is_contained(), and operands().
Referenced by llvm::VPWidenCallRecipe::execute(), and usesScalars().
Returns true if the VPUser only uses the first part of operand Op
.
Conservatively returns false.
Reimplemented in llvm::VPInstruction, llvm::VPIRInstruction, llvm::VPReverseVectorPointerRecipe, llvm::VPVectorPointerRecipe, and llvm::VPCanonicalIVPHIRecipe.
Definition at line 280 of file VPlanValue.h.
References assert(), llvm::is_contained(), and operands().
|
inline |
Definition at line 253 of file VPlanValue.h.
References Operands.
Referenced by llvm::VPWidenCallRecipe::arg_operands(), llvm::VPWidenIntrinsicRecipe::clone(), llvm::VPWidenCallRecipe::clone(), createReplicateRegion(), llvm::VPInterleaveRecipe::getStoredValues(), operands(), and llvm::VPReplicateRecipe::print().
|
inline |
Definition at line 254 of file VPlanValue.h.
References Operands.
|
inline |
Definition at line 255 of file VPlanValue.h.
References Operands.
Referenced by llvm::VPWidenIntrinsicRecipe::clone(), llvm::VPWidenCallRecipe::clone(), createReplicateRegion(), and operands().
|
inline |
Definition at line 256 of file VPlanValue.h.
References Operands.
|
inline |
Definition at line 257 of file VPlanValue.h.
References op_begin(), and op_end().
Referenced by llvm::VPInstruction::clone(), llvm::VPIRInstruction::clone(), llvm::VPWidenRecipe::clone(), llvm::VPHistogramRecipe::clone(), llvm::VPWidenSelectRecipe::clone(), llvm::VPWidenGEPRecipe::clone(), llvm::VPBlendRecipe::clone(), llvm::VPReplicateRecipe::clone(), llvm::collectEphemeralRecipesForVPlan(), llvm::VPWidenIntrinsicRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), llvm::VPIRInstruction::execute(), llvm::VPWidenRecipe::execute(), llvm::VPWidenIntrinsicRecipe::execute(), hoistPreviousBeforeFORUsers(), onlyFirstLaneUsed(), llvm::VPInstruction::onlyFirstLaneUsed(), llvm::VPWidenEVLRecipe::onlyFirstLaneUsed(), llvm::VPScalarCastRecipe::onlyFirstLaneUsed(), llvm::VPWidenIntrinsicRecipe::onlyFirstLaneUsed(), llvm::VPReverseVectorPointerRecipe::onlyFirstLaneUsed(), llvm::VPVectorPointerRecipe::onlyFirstLaneUsed(), llvm::VPScalarPHIRecipe::onlyFirstLaneUsed(), llvm::VPBlendRecipe::onlyFirstLaneUsed(), llvm::VPInterleaveRecipe::onlyFirstLaneUsed(), llvm::VPReductionEVLRecipe::onlyFirstLaneUsed(), llvm::VPReplicateRecipe::onlyFirstLaneUsed(), llvm::VPWidenLoadRecipe::onlyFirstLaneUsed(), llvm::VPWidenLoadEVLRecipe::onlyFirstLaneUsed(), llvm::VPWidenStoreRecipe::onlyFirstLaneUsed(), llvm::VPWidenStoreEVLRecipe::onlyFirstLaneUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPEVLBasedIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPDerivedIVRecipe::onlyFirstLaneUsed(), llvm::VPScalarIVStepsRecipe::onlyFirstLaneUsed(), onlyFirstPartUsed(), llvm::VPInstruction::onlyFirstPartUsed(), llvm::VPIRInstruction::onlyFirstPartUsed(), llvm::VPReverseVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstPartUsed(), llvm::VPIRInstruction::print(), llvm::VPWidenIntrinsicRecipe::print(), llvm::InnerLoopVectorizer::scalarizeInstruction(), sinkScalarOperands(), transformRecipestoEVLRecipes(), usesScalars(), llvm::VPIRInstruction::usesScalars(), llvm::VPReplicateRecipe::usesScalars(), llvm::VPBranchOnMaskRecipe::usesScalars(), llvm::VPPredInstPHIRecipe::usesScalars(), and ~VPUser().
|
inline |
Definition at line 258 of file VPlanValue.h.
References op_begin(), and op_end().
|
protected |
Print the operands to O
.
Definition at line 1458 of file VPlan.cpp.
References llvm::interleaveComma().
Referenced by llvm::VPInstruction::print(), llvm::VPWidenRecipe::print(), llvm::VPWidenCastRecipe::print(), llvm::VPWidenGEPRecipe::print(), llvm::VPReverseVectorPointerRecipe::print(), llvm::VPVectorPointerRecipe::print(), llvm::VPWidenIntOrFpInductionRecipe::print(), llvm::VPScalarPHIRecipe::print(), llvm::VPWidenPHIRecipe::print(), llvm::VPFirstOrderRecurrencePHIRecipe::print(), llvm::VPReductionPHIRecipe::print(), llvm::VPReplicateRecipe::print(), llvm::VPPredInstPHIRecipe::print(), llvm::VPWidenLoadRecipe::print(), llvm::VPWidenLoadEVLRecipe::print(), llvm::VPWidenStoreRecipe::print(), llvm::VPWidenStoreEVLRecipe::print(), llvm::VPCanonicalIVPHIRecipe::print(), llvm::VPActiveLaneMaskPHIRecipe::print(), llvm::VPEVLBasedIVPHIRecipe::print(), llvm::VPWidenCanonicalIVRecipe::print(), llvm::VPScalarIVStepsRecipe::print(), and llvm::VPWidenEVLRecipe::print().
Definition at line 242 of file VPlanValue.h.
Referenced by addExitUsersForFirstOrderRecurrences(), createReplicateRegion(), and llvm::VPHeaderPHIRecipe::setStartValue().
Returns true if the VPUser uses scalars of operand Op
.
Conservatively returns if only first (scalar) lane is used, as default.
Reimplemented in llvm::VPIRInstruction, llvm::VPReplicateRecipe, llvm::VPBranchOnMaskRecipe, and llvm::VPPredInstPHIRecipe.
Definition at line 264 of file VPlanValue.h.
References assert(), llvm::is_contained(), onlyFirstLaneUsed(), and operands().