LLVM 24.0.0git
llvm::VPRecipeValue Class Referenceabstract

Abstract base class for VPValues defined by a VPRecipeBase. More...

#include "Transforms/Vectorize/VPlanValue.h"

Inheritance diagram for llvm::VPRecipeValue:
[legend]

Public Member Functions

virtual LLVM_ABI_FOR_TEST ~VPRecipeValue ()=0
Type * getScalarType () const
 Returns the scalar type of this VPRecipeValue.
Public Member Functions inherited from llvm::VPValue
Value * getUnderlyingValue () const
 Return the underlying Value attached to this VPValue.
Value * getLiveInIRValue () const
 Return the underlying IR value for a VPIRValue.
 VPValue (const VPValue &)=delete
VPValue & operator= (const VPValue &)=delete
virtual ~VPValue ()
unsigned getVPValueID () const
void printAsOperand (raw_ostream &OS, VPSlotTracker &Tracker) const
void print (raw_ostream &OS, VPSlotTracker &Tracker) const
void dump () const
 Dump the value to stderr (for debugging).
void assertNotMaterialized () const
 Assert that this VPValue has not been materialized, if it is a VPSymbolicValue.
unsigned getNumUsers () const
void addUser (VPUser &User)
void removeUser (VPUser &User)
 Remove a single User from the list of users.
user_iterator user_begin ()
const_user_iterator user_begin () const
user_iterator user_end ()
const_user_iterator user_end () const
user_range users ()
const_user_range users () const
bool user_empty () const
bool hasMoreThanOneUniqueUser () const
 Returns true if the value has more than one unique user.
bool hasOneUse () const
VPUser * getSingleUser ()
 Return the single user of this value, or nullptr if there is not exactly one user.
const VPUser * getSingleUser () const
void replaceAllUsesWith (VPValue *New)
void replaceUsesWithIf (VPValue *New, llvm::function_ref< bool(VPUser &U, unsigned Idx)> ShouldReplace)
 Go through the uses list for this VPValue and make each use point to New if the callback ShouldReplace returns true for the given use specified by a pair of (VPUser, the use index).
VPRecipeBase * getDefiningRecipe ()
 Returns the recipe defining this VPValue or nullptr if it is not defined by a recipe, i.e.
const VPRecipeBase * getDefiningRecipe () const
Type * getScalarType () const
 Returns the scalar type of this VPValue, dispatching based on the concrete subclass.
bool hasDefiningRecipe () const
 Returns true if this VPValue is defined by a recipe.
bool isDefinedOutsideLoopRegions () const
 Returns true if the VPValue is defined outside any loop.
void setUnderlyingValue (Value *Val)

Static Public Member Functions

static bool classof (const VPValue *V)

Protected Member Functions

 VPRecipeValue (unsigned char SC, Value *UV, Type *Ty=nullptr)

Friends

class VPValue
class VPDef

Additional Inherited Members

Public Types inherited from llvm::VPValue
enum  {
  VPVIRValueSC , VPVSymbolicSC , VPVSingleDefValueSC , VPVMultiDefValueSC ,
  VPRegionValueSC
}
 An enumeration for keeping track of the concrete subclass of VPValue that are actually instantiated. More...
typedef SmallVectorImpl< VPUser * >::iterator user_iterator
typedef SmallVectorImpl< VPUser * >::const_iterator const_user_iterator
typedef iterator_range< user_iterator > user_range
typedef iterator_range< const_user_iterator > const_user_range

Detailed Description

Abstract base class for VPValues defined by a VPRecipeBase.

Definition at line 332 of file VPlanValue.h.

Constructor & Destructor Documentation

◆ VPRecipeValue()

llvm::VPRecipeValue::VPRecipeValue ( unsigned char SC,
Value * UV,
Type * Ty = nullptr )
inlineprotected

◆ ~VPRecipeValue()

VPRecipeValue::~VPRecipeValue ( )
pure virtual

Definition at line 162 of file VPlan.cpp.

References assert().

Member Function Documentation

◆ classof()

bool llvm::VPRecipeValue::classof ( const VPValue * V)
inlinestatic

◆ getScalarType()

Type * llvm::VPRecipeValue::getScalarType ( ) const
inline

Returns the scalar type of this VPRecipeValue.

Definition at line 354 of file VPlanValue.h.

Referenced by llvm::VPHeaderPHIRecipe::addBackedgeValue(), llvm::VPInstruction::addOperand(), llvm::VPWidenCanonicalIVRecipe::addPerPartStep(), llvm::VPWidenInductionRecipe::addUnrolledPartOperands(), llvm::VPInstruction::clone(), llvm::VPWidenCastRecipe::clone(), llvm::VPWidenIntrinsicRecipe::clone(), llvm::VPWidenMemIntrinsicRecipe::clone(), llvm::VPBlendRecipe::computeCost(), llvm::VPExpressionRecipe::computeCost(), llvm::VPInstruction::computeCost(), llvm::VPReductionRecipe::computeCost(), llvm::VPReplicateRecipe::computeCost(), llvm::VPWidenIntOrFpInductionRecipe::computeCost(), llvm::VPWidenLoadEVLRecipe::computeCost(), llvm::VPWidenMemIntrinsicRecipe::computeCost(), llvm::vputils::createScalarIVSteps(), llvm::VPWidenIntrinsicRecipe::createVectorCall(), decideCallWidening(), llvm::VPInstruction::execute(), llvm::VPReplicateRecipe::execute(), llvm::VPWidenCastRecipe::execute(), llvm::VPWidenLoadEVLRecipe::execute(), llvm::VPWidenLoadRecipe::execute(), llvm::VPWidenRecipe::execute(), expandVPWidenIntOrFpInduction(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), handleFirstArgMinOrMax(), handleUncountableExitsWithSideEffects(), llvm::VPWidenIntOrFpInductionRecipe::isCanonical(), llvm::VPlanTransforms::makeMemOpWideningDecisions(), llvm::VPVectorEndPointerRecipe::materializeOffset(), llvm::VPInstruction::opcodeMayReadOrWriteFromMemory(), optimizeLatchExitInductionUser(), optimizeVectorInductionWidthForTCAndVFUF(), llvm::VPInstruction::printRecipe(), llvm::VPReplicateRecipe::printRecipe(), llvm::VPWidenCastRecipe::printRecipe(), llvm::VPWidenIntrinsicRecipe::printRecipe(), tryToComputeEndValueForInduction(), llvm::VPRecipeBuilder::tryToCreateWidenNonPhiRecipe(), tryToMatchAndCreateMulAccumulateReduction(), llvm::VPBlendRecipe::VPBlendRecipe(), llvm::VPHeaderPHIRecipe::VPHeaderPHIRecipe(), llvm::VPInstruction::VPInstruction(), llvm::VPPredInstPHIRecipe::VPPredInstPHIRecipe(), llvm::VPReductionRecipe::VPReductionRecipe(), llvm::VPWidenInductionRecipe::VPWidenInductionRecipe(), llvm::VPWidenIntOrFpInductionRecipe::VPWidenIntOrFpInductionRecipe(), and llvm::VPWidenPHIRecipe::VPWidenPHIRecipe().

◆ VPDef

friend class VPDef
friend

Definition at line 334 of file VPlanValue.h.

References D(), and VPDef.

Referenced by VPDef.

◆ VPValue

friend class VPValue
friend

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