|
LLVM 23.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 296 of file VPlanValue.h.
Definition at line 356 of file VPlanValue.h.
Definition at line 358 of file VPlanValue.h.
| typedef SmallVectorImpl<VPValue*>::iterator llvm::VPUser::operand_iterator |
Definition at line 355 of file VPlanValue.h.
Definition at line 357 of file VPlanValue.h.
Definition at line 315 of file VPlanValue.h.
References addOperand().
Referenced by llvm::VPRecipeBase::classof(), operator=(), llvm::VPRecipeBase::VPRecipeBase(), and VPUser().
|
delete |
|
inlinevirtual |
Definition at line 324 of file VPlanValue.h.
References operands().
|
inline |
Definition at line 329 of file VPlanValue.h.
References llvm::VPValue::addUser().
Referenced by llvm::VPlanTransforms::addExplicitVectorLength(), addInitialSkeleton(), addVPLaneMaskPhiAndUpdateExitBranch(), expandVPWidenPointerInduction(), llvm::VPlanTransforms::tryToConvertVPInstructionsToVPRecipes(), and VPUser().
|
inline |
Definition at line 334 of file VPlanValue.h.
Referenced by llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPReplicateRecipe::computeCost(), llvm::VPIRInstruction::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenRecipe::execute(), llvm::VPWidenCallRecipe::getCalledScalarFunction(), llvm::VPReductionRecipe::getCondOp(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPHistogramRecipe::getMask(), llvm::VPInstruction::getMask(), llvm::VPInterleaveBase::getMask(), llvm::VPReplicateRecipe::getMask(), llvm::VPWidenMemoryRecipe::getMask(), llvm::VPPhiAccessors::getNumIncoming(), llvm::VPBlendRecipe::getNumIncomingValues(), llvm::VPInstruction::getNumOperandsForOpcode(), llvm::VPInstruction::getNumOperandsWithoutMask(), llvm::VPInterleaveEVLRecipe::getNumStoreOperands(), llvm::VPInterleaveRecipe::getNumStoreOperands(), llvm::VPVectorEndPointerRecipe::getOffset(), llvm::VPVectorPointerRecipe::getOffset(), llvm::VPExpressionRecipe::getOperandOfResultType(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPScalarIVStepsRecipe::getStartIndex(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPInstruction::isMasked(), llvm::VPBlendRecipe::isNormalized(), llvm::VPExpressionRecipe::printRecipe(), llvm::VPIRPhi::printRecipe(), llvm::VPReplicateRecipe::printRecipe(), llvm::VPWidenGEPRecipe::printRecipe(), llvm::VPWidenPointerInductionRecipe::printRecipe(), replaceUsesOfWith(), llvm::VPScalarIVStepsRecipe::setStartIndex(), llvm::VPInstruction::usesFirstLaneOnly(), llvm::VPVectorEndPointerRecipe::usesFirstPartOnly(), llvm::VPVectorPointerRecipe::usesFirstPartOnly(), and llvm::VPInstruction::VPInstruction().
Definition at line 335 of file VPlanValue.h.
Referenced by addLaneToStartIndex(), addStartIndexForScalarSteps(), canNarrowLoad(), llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPBranchOnMaskRecipe::clone(), llvm::VPDerivedIVRecipe::clone(), llvm::VPFirstOrderRecurrencePHIRecipe::clone(), llvm::VPPredInstPHIRecipe::clone(), llvm::VPReductionPHIRecipe::clone(), llvm::VPScalarIVStepsRecipe::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::VPWidenMemoryRecipe::computeCost(), llvm::VPlanTransforms::createInLoopReductionRecipes(), createWidenInductionRecipe(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::VPBranchOnMaskRecipe::execute(), llvm::VPDerivedIVRecipe::execute(), llvm::VPHistogramRecipe::execute(), llvm::VPInstructionWithType::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPVectorPointerRecipe::execute(), llvm::VPWidenCanonicalIVRecipe::execute(), llvm::VPWidenCastRecipe::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenPHIRecipe::execute(), llvm::VPWidenRecipe::execute(), llvm::VPInterleaveBase::getAddr(), llvm::VPWidenMemoryRecipe::getAddr(), llvm::VPHeaderPHIRecipe::getBackedgeValue(), llvm::VPWidenCallRecipe::getCalledScalarFunction(), llvm::VPReductionRecipe::getChainOp(), 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::VPInstruction::getMask(), llvm::VPInterleaveBase::getMask(), llvm::VPReplicateRecipe::getMask(), llvm::VPWidenMemoryRecipe::getMask(), llvm::VPInstruction::getNumOperandsForOpcode(), llvm::VPVectorEndPointerRecipe::getOffset(), llvm::VPVectorPointerRecipe::getOffset(), llvm::VPExpressionRecipe::getOperandOfResultType(), llvm::VPVectorEndPointerRecipe::getPointer(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPScalarIVStepsRecipe::getStartIndex(), llvm::VPCanonicalIVPHIRecipe::getStartValue(), llvm::VPDerivedIVRecipe::getStartValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPWidenInductionRecipe::getStartValue(), llvm::VPWidenIntOrFpInductionRecipe::getStartValue(), llvm::VPDerivedIVRecipe::getStepValue(), llvm::VPScalarIVStepsRecipe::getStepValue(), llvm::VPWidenInductionRecipe::getStepValue(), llvm::VPWidenInductionRecipe::getStepValue(), llvm::VPWidenStoreEVLRecipe::getStoredValue(), llvm::VPWidenStoreRecipe::getStoredValue(), llvm::VPReductionRecipe::getVecOp(), llvm::VPScalarIVStepsRecipe::getVFValue(), llvm::VPVectorEndPointerRecipe::getVFValue(), llvm::VPWidenInductionRecipe::getVFValue(), llvm::VPWidenInductionRecipe::getVFValue(), handleFirstArgMinOrMax(), llvm::VPlanTransforms::handleMultiUseReductions(), llvm::vputils::isUniformAcrossVFsAndUFs(), llvm::VPlanTransforms::optimizeFindIVReductions(), preparePlanForEpilogueVectorLoop(), llvm::VPDerivedIVRecipe::printRecipe(), llvm::VPExpressionRecipe::printRecipe(), llvm::VPHistogramRecipe::printRecipe(), llvm::VPInterleaveEVLRecipe::printRecipe(), llvm::VPInterleaveRecipe::printRecipe(), llvm::VPWidenPointerInductionRecipe::printRecipe(), removeCommonBlendMask(), replaceUsesOfWith(), scalarizeVPWidenPointerInduction(), simplifyRecipe(), llvm::VPRecipeBuilder::tryToCreateWidenNonPhiRecipe(), llvm::VPInstruction::usesFirstLaneOnly(), and llvm::VPWidenRecipe::usesFirstLaneOnly().
|
inline |
Definition at line 360 of file VPlanValue.h.
Referenced by operands(), operands(), llvm::VPInstruction::operandsWithoutMask(), llvm::VPInstruction::operandsWithoutMask(), and llvm::VPReplicateRecipe::printRecipe().
|
inline |
Definition at line 361 of file VPlanValue.h.
|
inline |
Definition at line 362 of file VPlanValue.h.
Referenced by llvm::VPInterleaveBase::getStoredValues(), operands(), and operands().
|
inline |
Definition at line 363 of file VPlanValue.h.
|
inline |
Definition at line 364 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(), cloneForLane(), llvm::collectEphemeralRecipesForVPlan(), llvm::VPReplicateRecipe::computeCost(), llvm::VPWidenIntrinsicRecipe::computeCost(), createReplicateRegion(), llvm::VPExpressionRecipe::decompose(), llvm::VPlanTransforms::dropPoisonGeneratingRecipes(), llvm::VPIRPhi::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenIntrinsicRecipe::execute(), llvm::VPWidenRecipe::execute(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), hoistPreviousBeforeFORUsers(), llvm::vputils::isSingleScalar(), llvm::vputils::isUniformAcrossVFsAndUFs(), llvm::VPlanTransforms::optimizeFindIVReductions(), printOperands(), llvm::VPWidenIntrinsicRecipe::printRecipe(), scalarizeInstruction(), sinkScalarOperands(), llvm::VPBlendRecipe::usesFirstLaneOnly(), llvm::VPCanonicalIVPHIRecipe::usesFirstLaneOnly(), llvm::VPCurrentIterationPHIRecipe::usesFirstLaneOnly(), llvm::VPDerivedIVRecipe::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::VPWidenRecipe::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().
|
inline |
Definition at line 365 of file VPlanValue.h.
References op_begin(), and op_end().
|
protected |
Print the operands to O.
Definition at line 1474 of file VPlan.cpp.
References llvm::interleaveComma(), and operands().
Referenced by llvm::VPActiveLaneMaskPHIRecipe::printRecipe(), llvm::VPBranchOnMaskRecipe::printRecipe(), llvm::VPCanonicalIVPHIRecipe::printRecipe(), llvm::VPCurrentIterationPHIRecipe::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().
Replaces all uses of From in the VPUser with To.
Definition at line 1462 of file VPlan.cpp.
References getNumOperands(), getOperand(), and setOperand().
Definition at line 340 of file VPlanValue.h.
References I.
Referenced by createReplicateRegion(), createWidenInductionRecipe(), handleFirstArgMinOrMax(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::optimizeFindIVReductions(), preparePlanForEpilogueVectorLoop(), preparePlanForMainVectorLoop(), replaceUsesOfWith(), llvm::VPHeaderPHIRecipe::setBackedgeValue(), llvm::VPBlendRecipe::setMask(), llvm::VPScalarIVStepsRecipe::setStartIndex(), llvm::VPHeaderPHIRecipe::setStartValue(), and llvm::VPWidenInductionRecipe::setStepValue().
|
inline |
Swap operands of the VPUser. It must have exactly 2 operands.
Definition at line 347 of file VPlanValue.h.
References assert(), and std::swap().
Returns true if the VPUser only uses the first lane of operand Op.
Conservatively returns false.
Reimplemented in llvm::VPBlendRecipe, llvm::VPCanonicalIVPHIRecipe, llvm::VPCurrentIterationPHIRecipe, llvm::VPDerivedIVRecipe, 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::VPWidenRecipe, llvm::VPWidenStoreEVLRecipe, and llvm::VPWidenStoreRecipe.
Definition at line 379 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::VPCanonicalIVPHIRecipe, llvm::VPInstruction, llvm::VPIRInstruction, llvm::VPVectorEndPointerRecipe, and llvm::VPVectorPointerRecipe.
Definition at line 387 of file VPlanValue.h.
References assert(), llvm::is_contained(), and operands().
Returns true if the VPUser uses scalars of operand Op.
Conservatively returns if only first (scalar) lane is used, as default.
Reimplemented in llvm::VPBranchOnMaskRecipe, llvm::VPIRInstruction, llvm::VPPredInstPHIRecipe, and llvm::VPReplicateRecipe.
Definition at line 371 of file VPlanValue.h.
References assert(), llvm::is_contained(), operands(), and usesFirstLaneOnly().
|
friend |
Grant access to removeOperand for VPPhiAccessors, the only supported user.
Definition at line 298 of file VPlanValue.h.
References VPPhiAccessors.
Referenced by VPPhiAccessors.