LLVM 20.0.0git
|
This class augments a recipe with a set of VPValues defined by the recipe. More...
#include "Transforms/Vectorize/VPlanValue.h"
Public Types | |
using | VPRecipeTy = enum { VPBranchOnMaskSC, VPDerivedIVSC, VPExpandSCEVSC, VPIRInstructionSC, VPInstructionSC, VPInterleaveSC, VPReductionEVLSC, VPReductionSC, VPPartialReductionSC, VPReplicateSC, VPScalarCastSC, VPScalarIVStepsSC, VPVectorPointerSC, VPReverseVectorPointerSC, VPWidenCallSC, VPWidenCanonicalIVSC, VPWidenCastSC, VPWidenGEPSC, VPWidenIntrinsicSC, VPWidenLoadEVLSC, VPWidenLoadSC, VPWidenStoreEVLSC, VPWidenStoreSC, VPWidenSC, VPWidenEVLSC, VPWidenSelectSC, VPBlendSC, VPHistogramSC, VPWidenPHISC, VPPredInstPHISC, VPCanonicalIVPHISC, VPActiveLaneMaskPHISC, VPEVLBasedIVPHISC, VPFirstOrderRecurrencePHISC, VPWidenIntOrFpInductionSC, VPWidenPointerInductionSC, VPScalarPHISC, VPReductionPHISC, VPFirstPHISC=VPWidenPHISC, VPFirstHeaderPHISC=VPCanonicalIVPHISC, VPLastHeaderPHISC=VPReductionPHISC, VPLastPHISC=VPReductionPHISC, } |
An enumeration for keeping track of the concrete subclass of VPRecipeBase that is actually instantiated. | |
Public Member Functions | |
VPDef (const unsigned char SC) | |
virtual | ~VPDef () |
VPValue * | getVPSingleValue () |
Returns the only VPValue defined by the VPDef. | |
const VPValue * | getVPSingleValue () const |
VPValue * | getVPValue (unsigned I) |
Returns the VPValue with index I defined by the VPDef. | |
const VPValue * | getVPValue (unsigned I) const |
ArrayRef< VPValue * > | definedValues () |
Returns an ArrayRef of the values defined by the VPDef. | |
ArrayRef< VPValue * > | definedValues () const |
Returns an ArrayRef of the values defined by the VPDef. | |
unsigned | getNumDefinedValues () const |
Returns the number of values defined by the VPDef. | |
unsigned | getVPDefID () const |
void | dump () const |
Dump the VPDef to stderr (for debugging). | |
virtual void | print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const =0 |
Each concrete VPDef prints itself. | |
Friends | |
class | VPValue |
This class augments a recipe with a set of VPValues defined by the recipe.
It allows recipes to define zero, one or multiple VPValues. A VPDef owns the VPValues it defines and is responsible for deleting its defined values. Single-value VPDefs that also inherit from VPValue must make sure to inherit from VPDef before VPValue.
Definition at line 292 of file VPlanValue.h.
using llvm::VPDef::VPRecipeTy = enum { VPBranchOnMaskSC, VPDerivedIVSC, VPExpandSCEVSC, VPIRInstructionSC, VPInstructionSC, VPInterleaveSC, VPReductionEVLSC, VPReductionSC, VPPartialReductionSC, VPReplicateSC, VPScalarCastSC, VPScalarIVStepsSC, VPVectorPointerSC, VPReverseVectorPointerSC, VPWidenCallSC, VPWidenCanonicalIVSC, VPWidenCastSC, VPWidenGEPSC, VPWidenIntrinsicSC, VPWidenLoadEVLSC, VPWidenLoadSC, VPWidenStoreEVLSC, VPWidenStoreSC, VPWidenSC, VPWidenEVLSC, VPWidenSelectSC, VPBlendSC, VPHistogramSC, VPWidenPHISC, VPPredInstPHISC, VPCanonicalIVPHISC, VPActiveLaneMaskPHISC, VPEVLBasedIVPHISC, VPFirstOrderRecurrencePHISC, VPWidenIntOrFpInductionSC, VPWidenPointerInductionSC, VPScalarPHISC, VPReductionPHISC, VPFirstPHISC = VPWidenPHISC, VPFirstHeaderPHISC = VPCanonicalIVPHISC, VPLastHeaderPHISC = VPReductionPHISC, VPLastPHISC = VPReductionPHISC, } |
An enumeration for keeping track of the concrete subclass of VPRecipeBase that is actually instantiated.
Values of this enumeration are kept in the SubclassID field of the VPRecipeBase objects. They are used for concrete type identification.
Definition at line 323 of file VPlanValue.h.
Definition at line 373 of file VPlanValue.h.
|
inlinevirtual |
Definition at line 375 of file VPlanValue.h.
References assert(), D, and llvm::make_early_inc_range().
Returns an ArrayRef of the values defined by the VPDef.
Definition at line 410 of file VPlanValue.h.
Referenced by collectUsersRecursively(), and llvm::VPInterleaveRecipe::execute().
Returns an ArrayRef of the values defined by the VPDef.
Definition at line 412 of file VPlanValue.h.
void VPDef::dump | ( | ) | const |
Dump the VPDef to stderr (for debugging).
Definition at line 114 of file VPlan.cpp.
References llvm::dbgs(), and print().
Referenced by llvm::VPRecipeBase::cost(), and llvm::VPSingleDefRecipe::dump().
|
inline |
Returns the number of values defined by the VPDef.
Definition at line 415 of file VPlanValue.h.
References llvm::TinyPtrVector< EltTy >::size().
Referenced by llvm::VPInterleaveRecipe::computeCost(), hoistPreviousBeforeFORUsers(), sinkRecurrenceUsersAfterPrevious(), transformRecipestoEVLRecipes(), and llvm::VPlanTransforms::VPInstructionsToVPRecipes().
|
inline |
Definition at line 420 of file VPlanValue.h.
Referenced by llvm::VPRecipeBase::isPhi(), llvm::VPRecipeBase::mayHaveSideEffects(), llvm::VPRecipeBase::mayReadFromMemory(), and llvm::VPRecipeBase::mayWriteToMemory().
|
inline |
Returns the only VPValue defined by the VPDef.
Can only be called for VPDefs with a single defined value.
Definition at line 388 of file VPlanValue.h.
References assert(), and llvm::TinyPtrVector< EltTy >::size().
Referenced by llvm::VPlanTransforms::createInterleaveGroups(), llvm::VPRecipeBuilder::fixHeaderPhis(), hoistPreviousBeforeFORUsers(), llvm::VPRecipeBase::mayHaveSideEffects(), llvm::VPRecipeBase::mayReadFromMemory(), llvm::VPRecipeBase::mayWriteToMemory(), sinkRecurrenceUsersAfterPrevious(), transformRecipestoEVLRecipes(), and llvm::VPlanTransforms::VPInstructionsToVPRecipes().
Definition at line 393 of file VPlanValue.h.
References assert(), and llvm::TinyPtrVector< EltTy >::size().
Returns the VPValue with index I
defined by the VPDef.
Definition at line 400 of file VPlanValue.h.
Referenced by llvm::VPInterleaveRecipe::computeCost(), and llvm::VPInterleaveRecipe::print().
Definition at line 404 of file VPlanValue.h.
|
pure virtual |
Each concrete VPDef prints itself.
Implemented in llvm::VPInstruction, llvm::VPIRInstruction, llvm::VPWidenRecipe, llvm::VPWidenCastRecipe, llvm::VPScalarCastRecipe, llvm::VPWidenIntrinsicRecipe, llvm::VPWidenCallRecipe, llvm::VPHistogramRecipe, llvm::VPWidenSelectRecipe, llvm::VPWidenGEPRecipe, llvm::VPReverseVectorPointerRecipe, llvm::VPVectorPointerRecipe, llvm::VPWidenIntOrFpInductionRecipe, llvm::VPWidenPointerInductionRecipe, llvm::VPScalarPHIRecipe, llvm::VPWidenPHIRecipe, llvm::VPFirstOrderRecurrencePHIRecipe, llvm::VPReductionPHIRecipe, llvm::VPPartialReductionRecipe, llvm::VPBlendRecipe, llvm::VPInterleaveRecipe, llvm::VPReductionRecipe, llvm::VPReductionEVLRecipe, llvm::VPReplicateRecipe, llvm::VPBranchOnMaskRecipe, llvm::VPPredInstPHIRecipe, llvm::VPWidenLoadRecipe, llvm::VPWidenLoadEVLRecipe, llvm::VPWidenStoreRecipe, llvm::VPWidenStoreEVLRecipe, llvm::VPExpandSCEVRecipe, llvm::VPCanonicalIVPHIRecipe, llvm::VPActiveLaneMaskPHIRecipe, llvm::VPEVLBasedIVPHIRecipe, llvm::VPWidenCanonicalIVRecipe, llvm::VPDerivedIVRecipe, llvm::VPScalarIVStepsRecipe, llvm::VPWidenEVLRecipe, and llvm::VPHeaderPHIRecipe.
Referenced by dump(), and llvm::VPBasicBlock::print().
|
friend |
Definition at line 293 of file VPlanValue.h.