LLVM: llvm::VPUser Class Reference (original) (raw)

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](VPlanValue%5F8h%5Fsource.html)"

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)
void swapOperands ()
Swap operands of the VPUser. It must have exactly 2 operands.
void replaceUsesOfWith (VPValue *From, VPValue *To)
Replaces all uses of From in the VPUser with To.
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 usesFirstLaneOnly (const VPValue *Op) const
Returns true if the VPUser only uses the first lane of operand Op.
virtual bool usesFirstPartOnly (const VPValue *Op) const
Returns true if the VPUser only uses the first part of operand Op.
Friends
class VPPhiAccessors
Grant access to removeOperand for VPPhiAccessors, the only supported user.

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.

const_operand_iterator

const_operand_range

operand_iterator

operand_range

VPUser() [1/3]

VPUser() [2/3]

llvm::VPUser::VPUser ( ) delete

VPUser() [3/3]

virtual llvm::VPUser::~VPUser ( ) inlinevirtual

addOperand()

void llvm::VPUser::addOperand ( VPValue * Operand) inline

getNumOperands()

unsigned llvm::VPUser::getNumOperands ( ) const inline

Definition at line 245 of file VPlanValue.h.

Referenced by llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPReplicateRecipe::computeCost(), llvm::VPIRInstruction::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenRecipe::execute(), llvm::VPIRInstruction::extractLastLaneOfLastPartOfFirstOperand(), llvm::VPWidenCallRecipe::getCalledScalarFunction(), llvm::VPReductionRecipe::getCondOp(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPHistogramRecipe::getMask(), llvm::VPInterleaveBase::getMask(), llvm::VPReplicateRecipe::getMask(), llvm::VPWidenMemoryRecipe::getMask(), llvm::VPPhiAccessors::getNumIncoming(), llvm::VPBlendRecipe::getNumIncomingValues(), llvm::VPInterleaveEVLRecipe::getNumStoreOperands(), llvm::VPInterleaveRecipe::getNumStoreOperands(), llvm::VPExpressionRecipe::getOperandOfResultType(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPBlendRecipe::isNormalized(), llvm::VPExpressionRecipe::printRecipe(), llvm::VPIRPhi::printRecipe(), llvm::VPReplicateRecipe::printRecipe(), llvm::VPWidenGEPRecipe::printRecipe(), llvm::VPWidenPointerInductionRecipe::printRecipe(), replaceUsesOfWith(), llvm::VPInstruction::usesFirstLaneOnly(), llvm::VPVectorEndPointerRecipe::usesFirstPartOnly(), llvm::VPVectorPointerRecipe::usesFirstPartOnly(), and llvm::VPInstruction::VPInstruction().

getOperand()

Definition at line 246 of file VPlanValue.h.

References assert(), and N.

Referenced by canNarrowLoad(), llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPBranchOnMaskRecipe::clone(), llvm::VPCanonicalIVPHIRecipe::clone(), llvm::VPDerivedIVRecipe::clone(), llvm::VPFirstOrderRecurrencePHIRecipe::clone(), llvm::VPPredInstPHIRecipe::clone(), llvm::VPReductionPHIRecipe::clone(), llvm::VPScalarIVStepsRecipe::clone(), llvm::VPVectorEndPointerRecipe::clone(), llvm::VPVectorPointerRecipe::clone(), llvm::VPWidenCanonicalIVRecipe::clone(), llvm::VPWidenCastRecipe::clone(), llvm::VPWidenPHIRecipe::clone(), llvm::VPWidenPointerInductionRecipe::clone(), llvm::VPExpressionRecipe::computeCost(), llvm::VPHistogramRecipe::computeCost(), llvm::VPInstruction::computeCost(), llvm::VPReplicateRecipe::computeCost(), llvm::VPWidenCastRecipe::computeCost(), llvm::VPWidenMemoryRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), createWidenInductionRecipes(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::VPBranchOnMaskRecipe::execute(), llvm::VPDerivedIVRecipe::execute(), llvm::VPHistogramRecipe::execute(), llvm::VPInstructionWithType::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPVectorEndPointerRecipe::execute(), llvm::VPVectorPointerRecipe::execute(), llvm::VPWidenCanonicalIVRecipe::execute(), llvm::VPWidenCastRecipe::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenPHIRecipe::execute(), llvm::VPWidenRecipe::execute(), llvm::VPWidenSelectRecipe::execute(), llvm::VPIRInstruction::extractLastLaneOfLastPartOfFirstOperand(), fixReductionScalarResumeWhenVectorizingEpilog(), llvm::VPInterleaveBase::getAddr(), llvm::VPWidenMemoryRecipe::getAddr(), llvm::VPHeaderPHIRecipe::getBackedgeValue(), llvm::VPWidenCallRecipe::getCalledScalarFunction(), llvm::VPReductionRecipe::getChainOp(), llvm::VPWidenSelectRecipe::getCond(), llvm::VPReductionRecipe::getCondOp(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), llvm::VPInterleaveEVLRecipe::getEVL(), llvm::VPReductionEVLRecipe::getEVL(), llvm::VPWidenLoadEVLRecipe::getEVL(), llvm::VPWidenStoreEVLRecipe::getEVL(), llvm::VPBlendRecipe::getIncomingValue(), llvm::VPPhiAccessors::getIncomingValue(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPBlendRecipe::getMask(), llvm::VPHistogramRecipe::getMask(), llvm::VPInterleaveBase::getMask(), llvm::VPReplicateRecipe::getMask(), llvm::VPWidenMemoryRecipe::getMask(), llvm::VPExpressionRecipe::getOperandOfResultType(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPDerivedIVRecipe::getStartValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPHeaderPHIRecipe::getStartValue(), getStartValueFromReductionResult(), llvm::VPDerivedIVRecipe::getStepValue(), llvm::VPScalarIVStepsRecipe::getStepValue(), llvm::VPWidenInductionRecipe::getStepValue(), llvm::VPWidenInductionRecipe::getStepValue(), llvm::VPWidenStoreEVLRecipe::getStoredValue(), llvm::VPWidenStoreRecipe::getStoredValue(), llvm::VPUnrollPartAccessor< 1 >::getUnrollPart(), llvm::VPReductionRecipe::getVecOp(), llvm::VPVectorEndPointerRecipe::getVFValue(), llvm::VPVectorEndPointerRecipe::getVFValue(), llvm::VPWidenInductionRecipe::getVFValue(), llvm::VPWidenInductionRecipe::getVFValue(), llvm::VPlanTransforms::handleMultiUseReductions(), llvm::VPlanTransforms::handleUncountableEarlyExit(), preparePlanForEpilogueVectorLoop(), preparePlanForMainVectorLoop(), llvm::VPDerivedIVRecipe::printRecipe(), llvm::VPExpressionRecipe::printRecipe(), llvm::VPHistogramRecipe::printRecipe(), llvm::VPInterleaveEVLRecipe::printRecipe(), llvm::VPInterleaveRecipe::printRecipe(), llvm::VPWidenPointerInductionRecipe::printRecipe(), llvm::VPWidenSelectRecipe::printRecipe(), removeCommonBlendMask(), replaceUsesOfWith(), scalarizeVPWidenPointerInduction(), simplifyRecipe(), llvm::VPRecipeBuilder::tryToCreateWidenRecipe(), tryToMatchAndCreateMulAccumulateReduction(), and llvm::VPInstruction::usesFirstLaneOnly().

op_begin() [1/2]

operand_iterator llvm::VPUser::op_begin ( ) inline

op_begin() [2/2]

const_operand_iterator llvm::VPUser::op_begin ( ) const inline

op_end() [1/2]

operand_iterator llvm::VPUser::op_end ( ) inline

op_end() [2/2]

const_operand_iterator llvm::VPUser::op_end ( ) const inline

operands() [1/2]

operand_range llvm::VPUser::operands ( ) inline

Definition at line 275 of file VPlanValue.h.

References op_begin(), and op_end().

Referenced by llvm::VPWidenCallRecipe::args(), llvm::VPWidenCallRecipe::args(), llvm::VPBlendRecipe::clone(), llvm::VPExpressionRecipe::clone(), llvm::VPHistogramRecipe::clone(), llvm::VPInstruction::clone(), llvm::VPInstructionWithType::clone(), llvm::VPIRInstruction::clone(), llvm::VPPhi::clone(), llvm::VPReplicateRecipe::clone(), llvm::VPWidenCallRecipe::clone(), llvm::VPWidenGEPRecipe::clone(), llvm::VPWidenIntrinsicRecipe::clone(), llvm::VPWidenPHIRecipe::clone(), llvm::VPWidenRecipe::clone(), llvm::VPWidenSelectRecipe::clone(), cloneForLane(), llvm::collectEphemeralRecipesForVPlan(), llvm::VPReplicateRecipe::computeCost(), llvm::VPWidenIntrinsicRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), createReplicateRegion(), llvm::VPExpressionRecipe::decompose(), llvm::VPlanTransforms::dropPoisonGeneratingRecipes(), llvm::VPIRPhi::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenIntrinsicRecipe::execute(), llvm::VPWidenRecipe::execute(), llvm::VPRecipeBuilder::handleReplication(), hoistPreviousBeforeFORUsers(), llvm::vputils::isSingleScalar(), printOperands(), llvm::VPWidenIntrinsicRecipe::printRecipe(), scalarizeInstruction(), sinkScalarOperands(), llvm::VPBlendRecipe::usesFirstLaneOnly(), llvm::VPCanonicalIVPHIRecipe::usesFirstLaneOnly(), llvm::VPDerivedIVRecipe::usesFirstLaneOnly(), llvm::VPEVLBasedIVPHIRecipe::usesFirstLaneOnly(), llvm::VPFirstOrderRecurrencePHIRecipe::usesFirstLaneOnly(), llvm::VPInstruction::usesFirstLaneOnly(), llvm::VPInterleaveEVLRecipe::usesFirstLaneOnly(), llvm::VPInterleaveRecipe::usesFirstLaneOnly(), llvm::VPIRInstruction::usesFirstLaneOnly(), llvm::VPReductionEVLRecipe::usesFirstLaneOnly(), llvm::VPReductionPHIRecipe::usesFirstLaneOnly(), llvm::VPReplicateRecipe::usesFirstLaneOnly(), llvm::VPScalarIVStepsRecipe::usesFirstLaneOnly(), usesFirstLaneOnly(), llvm::VPVectorEndPointerRecipe::usesFirstLaneOnly(), llvm::VPVectorPointerRecipe::usesFirstLaneOnly(), llvm::VPWidenGEPRecipe::usesFirstLaneOnly(), llvm::VPWidenInductionRecipe::usesFirstLaneOnly(), llvm::VPWidenIntrinsicRecipe::usesFirstLaneOnly(), llvm::VPWidenLoadEVLRecipe::usesFirstLaneOnly(), llvm::VPWidenLoadRecipe::usesFirstLaneOnly(), llvm::VPWidenSelectRecipe::usesFirstLaneOnly(), llvm::VPWidenStoreEVLRecipe::usesFirstLaneOnly(), llvm::VPWidenStoreRecipe::usesFirstLaneOnly(), llvm::VPCanonicalIVPHIRecipe::usesFirstPartOnly(), llvm::VPInstruction::usesFirstPartOnly(), llvm::VPIRInstruction::usesFirstPartOnly(), usesFirstPartOnly(), llvm::VPVectorEndPointerRecipe::usesFirstPartOnly(), llvm::VPVectorPointerRecipe::usesFirstPartOnly(), llvm::VPBranchOnMaskRecipe::usesScalars(), llvm::VPIRInstruction::usesScalars(), llvm::VPPredInstPHIRecipe::usesScalars(), llvm::VPReplicateRecipe::usesScalars(), usesScalars(), and ~VPUser().

operands() [2/2]

const_operand_range llvm::VPUser::operands ( ) const inline

operator=()

printOperands()

Print the operands to O.

Definition at line 1420 of file VPlan.cpp.

References llvm::interleaveComma(), and operands().

Referenced by llvm::VPActiveLaneMaskPHIRecipe::printRecipe(), llvm::VPBranchOnMaskRecipe::printRecipe(), llvm::VPCanonicalIVPHIRecipe::printRecipe(), llvm::VPEVLBasedIVPHIRecipe::printRecipe(), llvm::VPFirstOrderRecurrencePHIRecipe::printRecipe(), llvm::VPInstruction::printRecipe(), llvm::VPInstructionWithType::printRecipe(), llvm::VPPredInstPHIRecipe::printRecipe(), llvm::VPReductionPHIRecipe::printRecipe(), llvm::VPReplicateRecipe::printRecipe(), llvm::VPScalarIVStepsRecipe::printRecipe(), llvm::VPVectorEndPointerRecipe::printRecipe(), llvm::VPVectorPointerRecipe::printRecipe(), llvm::VPWidenCanonicalIVRecipe::printRecipe(), llvm::VPWidenCastRecipe::printRecipe(), llvm::VPWidenGEPRecipe::printRecipe(), llvm::VPWidenIntOrFpInductionRecipe::printRecipe(), llvm::VPWidenLoadEVLRecipe::printRecipe(), llvm::VPWidenLoadRecipe::printRecipe(), llvm::VPWidenRecipe::printRecipe(), llvm::VPWidenStoreEVLRecipe::printRecipe(), and llvm::VPWidenStoreRecipe::printRecipe().

replaceUsesOfWith()

setOperand()

Definition at line 251 of file VPlanValue.h.

References I.

Referenced by createReplicateRegion(), createWidenInductionRecipes(), llvm::VPIRInstruction::extractLastLaneOfLastPartOfFirstOperand(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleMultiUseReductions(), llvm::VPlanTransforms::handleUncountableEarlyExit(), llvm::VPlanTransforms::narrowInterleaveGroups(), preparePlanForEpilogueVectorLoop(), preparePlanForMainVectorLoop(), replaceUsesOfWith(), llvm::VPHeaderPHIRecipe::setBackedgeValue(), llvm::VPBlendRecipe::setMask(), llvm::VPHeaderPHIRecipe::setStartValue(), and llvm::VPWidenInductionRecipe::setStepValue().

swapOperands()

void llvm::VPUser::swapOperands ( ) inline

usesFirstLaneOnly()

virtual bool llvm::VPUser::usesFirstLaneOnly ( const VPValue * Op) const inlinevirtual

Returns true if the VPUser only uses the first lane of operand [Op](namespacellvm.html#ab471937b9a227e70c7fe8bd9604014d6).

Conservatively returns false.

Reimplemented in llvm::VPBlendRecipe, llvm::VPCanonicalIVPHIRecipe, llvm::VPDerivedIVRecipe, llvm::VPEVLBasedIVPHIRecipe, llvm::VPFirstOrderRecurrencePHIRecipe, llvm::VPInstruction, llvm::VPInterleaveBase, llvm::VPInterleaveEVLRecipe, llvm::VPInterleaveRecipe, llvm::VPIRInstruction, llvm::VPReductionEVLRecipe, llvm::VPReductionPHIRecipe, llvm::VPReplicateRecipe, llvm::VPScalarIVStepsRecipe, llvm::VPVectorEndPointerRecipe, llvm::VPVectorPointerRecipe, llvm::VPWidenGEPRecipe, llvm::VPWidenInductionRecipe, llvm::VPWidenIntrinsicRecipe, llvm::VPWidenLoadEVLRecipe, llvm::VPWidenLoadRecipe, llvm::VPWidenSelectRecipe, llvm::VPWidenStoreEVLRecipe, and llvm::VPWidenStoreRecipe.

Definition at line 290 of file VPlanValue.h.

References assert(), llvm::is_contained(), and operands().

Referenced by llvm::VPWidenCallRecipe::execute(), and usesScalars().

usesFirstPartOnly()

virtual bool llvm::VPUser::usesFirstPartOnly ( const VPValue * Op) const inlinevirtual

usesScalars()

virtual bool llvm::VPUser::usesScalars ( const VPValue * Op) const inlinevirtual

VPPhiAccessors


The documentation for this class was generated from the following files: