LLVM 22.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 |
Protected Member Functions | |
void | printOperands (raw_ostream &O, VPSlotTracker &SlotTracker) const |
Print the operands to O . | |
VPUser (ArrayRef< VPValue * > Operands) | |
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 197 of file VPlanValue.h.
Definition at line 257 of file VPlanValue.h.
Definition at line 259 of file VPlanValue.h.
typedef SmallVectorImpl<VPValue*>::iterator llvm::VPUser::operand_iterator |
Definition at line 256 of file VPlanValue.h.
Definition at line 258 of file VPlanValue.h.
Definition at line 216 of file VPlanValue.h.
References addOperand(), and Operands.
|
delete |
|
inlinevirtual |
Definition at line 225 of file VPlanValue.h.
References operands().
|
inline |
Definition at line 230 of file VPlanValue.h.
References llvm::VPValue::addUser(), and Operands.
Referenced by addCanonicalIVRecipes(), llvm::VPlanTransforms::addExplicitVectorLength(), addScalarResumePhis(), addVPLaneMaskPhiAndUpdateExitBranch(), expandVPWidenIntOrFpInduction(), expandVPWidenPointerInduction(), llvm::VPlanTransforms::tryToConvertVPInstructionsToVPRecipes(), llvm::VPRecipeBuilder::tryToCreateWidenRecipe(), and VPUser().
|
inline |
Definition at line 235 of file VPlanValue.h.
References Operands.
Referenced by llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPReplicateRecipe::computeCost(), llvm::VPIRInstruction::execute(), llvm::VPWidenRecipe::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPIRInstruction::extractLastLaneOfFirstOperand(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPHistogramRecipe::getMask(), llvm::VPPhiAccessors::getNumIncoming(), llvm::VPExpressionRecipe::getOperandOfResultType(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPVectorEndPointerRecipe::onlyFirstPartUsed(), llvm::VPVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPIRPhi::print(), llvm::VPWidenGEPRecipe::print(), llvm::VPWidenPointerInductionRecipe::print(), llvm::VPReplicateRecipe::print(), llvm::VPExpressionRecipe::print(), replaceUsesOfWith(), and llvm::VPInstruction::VPInstruction().
Definition at line 236 of file VPlanValue.h.
References assert(), N, and Operands.
Referenced by canNarrowLoad(), llvm::VPWidenCastRecipe::clone(), llvm::VPVectorEndPointerRecipe::clone(), llvm::VPVectorPointerRecipe::clone(), llvm::VPWidenPointerInductionRecipe::clone(), llvm::VPFirstOrderRecurrencePHIRecipe::clone(), llvm::VPReductionPHIRecipe::clone(), llvm::VPPartialReductionRecipe::clone(), llvm::VPCanonicalIVPHIRecipe::clone(), llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPWidenCanonicalIVRecipe::clone(), llvm::VPDerivedIVRecipe::clone(), llvm::VPInstruction::computeCost(), llvm::VPWidenCastRecipe::computeCost(), llvm::VPHistogramRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), llvm::VPPartialReductionRecipe::computeCost(), llvm::VPReplicateRecipe::computeCost(), llvm::VPExpressionRecipe::computeCost(), llvm::VPWidenMemoryRecipe::computeCost(), llvm::VPInstructionWithType::execute(), llvm::VPWidenRecipe::execute(), llvm::VPWidenCastRecipe::execute(), llvm::VPHistogramRecipe::execute(), llvm::VPWidenSelectRecipe::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPVectorEndPointerRecipe::execute(), llvm::VPVectorPointerRecipe::execute(), llvm::VPWidenPHIRecipe::execute(), llvm::VPPartialReductionRecipe::execute(), llvm::VPBranchOnMaskRecipe::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::VPWidenCanonicalIVRecipe::execute(), llvm::VPDerivedIVRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPIRInstruction::extractLastLaneOfFirstOperand(), fixReductionScalarResumeWhenVectorizingEpilog(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), llvm::VPWidenLoadEVLRecipe::getEVL(), llvm::VPWidenStoreEVLRecipe::getEVL(), llvm::VPPhiAccessors::getIncomingValue(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPHistogramRecipe::getMask(), llvm::VPExpressionRecipe::getOperandOfResultType(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPDerivedIVRecipe::getStartValue(), getStartValueFromReductionResult(), llvm::VPWidenInductionRecipe::getStepValue(), llvm::VPDerivedIVRecipe::getStepValue(), llvm::VPWidenStoreEVLRecipe::getStoredValue(), llvm::VPVectorEndPointerRecipe::getVFValue(), llvm::VPWidenInductionRecipe::getVFValue(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleUncountableEarlyExit(), llvm::VPInstruction::onlyFirstLaneUsed(), preparePlanForMainVectorLoop(), llvm::VPHistogramRecipe::print(), llvm::VPWidenSelectRecipe::print(), llvm::VPWidenPointerInductionRecipe::print(), llvm::VPInterleaveRecipe::print(), llvm::VPInterleaveEVLRecipe::print(), llvm::VPExpressionRecipe::print(), llvm::VPDerivedIVRecipe::print(), and replaceUsesOfWith().
Returns true if the VPUser only uses the first lane of operand Op
.
Conservatively returns false.
Reimplemented in llvm::VPInstruction, llvm::VPIRInstruction, llvm::VPWidenIntrinsicRecipe, llvm::VPWidenSelectRecipe, llvm::VPWidenGEPRecipe, llvm::VPVectorEndPointerRecipe, llvm::VPVectorPointerRecipe, llvm::VPWidenInductionRecipe, llvm::VPFirstOrderRecurrencePHIRecipe, llvm::VPReductionPHIRecipe, llvm::VPBlendRecipe, llvm::VPInterleaveRecipe, llvm::VPInterleaveEVLRecipe, llvm::VPReductionEVLRecipe, llvm::VPReplicateRecipe, llvm::VPWidenLoadRecipe, llvm::VPWidenLoadEVLRecipe, llvm::VPWidenStoreRecipe, llvm::VPWidenStoreEVLRecipe, llvm::VPCanonicalIVPHIRecipe, llvm::VPEVLBasedIVPHIRecipe, llvm::VPDerivedIVRecipe, llvm::VPScalarIVStepsRecipe, and llvm::VPInterleaveBase.
Definition at line 280 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::VPVectorEndPointerRecipe, llvm::VPVectorPointerRecipe, and llvm::VPCanonicalIVPHIRecipe.
Definition at line 288 of file VPlanValue.h.
References assert(), llvm::is_contained(), and operands().
|
inline |
Definition at line 261 of file VPlanValue.h.
References Operands.
Referenced by createReplicateRegion(), operands(), and llvm::VPReplicateRecipe::print().
|
inline |
Definition at line 262 of file VPlanValue.h.
References Operands.
|
inline |
Definition at line 263 of file VPlanValue.h.
References Operands.
Referenced by createReplicateRegion(), and operands().
|
inline |
Definition at line 264 of file VPlanValue.h.
References Operands.
|
inline |
Definition at line 265 of file VPlanValue.h.
References op_begin(), and op_end().
Referenced by llvm::VPInstructionWithType::clone(), llvm::VPIRInstruction::clone(), llvm::VPWidenIntrinsicRecipe::clone(), llvm::VPHistogramRecipe::clone(), llvm::VPExpressionRecipe::clone(), cloneForLane(), llvm::collectEphemeralRecipesForVPlan(), llvm::VPWidenIntrinsicRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), llvm::VPReplicateRecipe::computeCost(), llvm::VPExpressionRecipe::decompose(), llvm::VPIRPhi::execute(), llvm::VPWidenRecipe::execute(), llvm::VPWidenIntrinsicRecipe::execute(), hoistPreviousBeforeFORUsers(), llvm::vputils::isSingleScalar(), onlyFirstLaneUsed(), llvm::VPInstruction::onlyFirstLaneUsed(), llvm::VPIRInstruction::onlyFirstLaneUsed(), llvm::VPWidenIntrinsicRecipe::onlyFirstLaneUsed(), llvm::VPVectorEndPointerRecipe::onlyFirstLaneUsed(), llvm::VPVectorPointerRecipe::onlyFirstLaneUsed(), llvm::VPWidenInductionRecipe::onlyFirstLaneUsed(), llvm::VPFirstOrderRecurrencePHIRecipe::onlyFirstLaneUsed(), llvm::VPReductionPHIRecipe::onlyFirstLaneUsed(), llvm::VPWidenLoadEVLRecipe::onlyFirstLaneUsed(), llvm::VPWidenStoreEVLRecipe::onlyFirstLaneUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPEVLBasedIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPDerivedIVRecipe::onlyFirstLaneUsed(), onlyFirstPartUsed(), llvm::VPInstruction::onlyFirstPartUsed(), llvm::VPIRInstruction::onlyFirstPartUsed(), llvm::VPVectorEndPointerRecipe::onlyFirstPartUsed(), llvm::VPVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstPartUsed(), llvm::VPWidenIntrinsicRecipe::print(), printOperands(), scalarizeInstruction(), sinkScalarOperands(), usesScalars(), llvm::VPIRInstruction::usesScalars(), and ~VPUser().
|
inline |
Definition at line 266 of file VPlanValue.h.
References op_begin(), and op_end().
|
protected |
Print the operands to O
.
Definition at line 1449 of file VPlan.cpp.
References llvm::interleaveComma(), and operands().
Referenced by llvm::VPInstruction::print(), llvm::VPInstructionWithType::print(), llvm::VPWidenRecipe::print(), llvm::VPWidenCastRecipe::print(), llvm::VPWidenGEPRecipe::print(), llvm::VPVectorEndPointerRecipe::print(), llvm::VPVectorPointerRecipe::print(), llvm::VPWidenIntOrFpInductionRecipe::print(), llvm::VPFirstOrderRecurrencePHIRecipe::print(), llvm::VPReductionPHIRecipe::print(), llvm::VPPartialReductionRecipe::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(), and llvm::VPScalarIVStepsRecipe::print().
Replaces all uses of From
in the VPUser with To
.
Definition at line 1437 of file VPlan.cpp.
References From, getNumOperands(), getOperand(), Idx, and setOperand().
Definition at line 241 of file VPlanValue.h.
Referenced by createReplicateRegion(), llvm::VPIRInstruction::extractLastLaneOfFirstOperand(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleUncountableEarlyExit(), llvm::VPlanTransforms::narrowInterleaveGroups(), optimizeMaskToEVL(), preparePlanForMainVectorLoop(), replaceUsesOfWith(), and llvm::VPWidenInductionRecipe::setStepValue().
|
inline |
Swap operands of the VPUser. It must have exactly 2 operands.
Definition at line 248 of file VPlanValue.h.
References assert(), Operands, and std::swap().
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 272 of file VPlanValue.h.
References assert(), llvm::is_contained(), onlyFirstLaneUsed(), and operands().
|
friend |
Grant access to removeOperand for VPPhiAccessors, the only supported user.
Definition at line 199 of file VPlanValue.h.