LLVM 24.0.0git
llvm::VPMultiDefValue Class Reference

A VPRecipeValue defined by a multi-def recipe, stores a pointer to it. More...

#include "Transforms/Vectorize/VPlanValue.h"

Inheritance diagram for llvm::VPMultiDefValue:
[legend]

Public Member Functions

LLVM_ABI_FOR_TEST VPMultiDefValue (VPRecipeBase *Def, Value *UV, Type *Ty)
 ~VPMultiDefValue () override
VPRecipeBase * getDef () const
Public Member Functions inherited from llvm::VPRecipeValue
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)
Static Public Member Functions inherited from llvm::VPRecipeValue
static bool classof (const VPValue *V)

Friends

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
Protected Member Functions inherited from llvm::VPRecipeValue
 VPRecipeValue (unsigned char SC, Value *UV, Type *Ty=nullptr)

Detailed Description

A VPRecipeValue defined by a multi-def recipe, stores a pointer to it.

Definition at line 381 of file VPlanValue.h.

Constructor & Destructor Documentation

◆ VPMultiDefValue()

VPMultiDefValue::VPMultiDefValue ( VPRecipeBase * Def,
Value * UV,
Type * Ty )

◆ ~VPMultiDefValue()

VPMultiDefValue::~VPMultiDefValue ( )
override

Definition at line 183 of file VPlan.cpp.

References llvm::VPValue::getDefiningRecipe().

Member Function Documentation

◆ classof()

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

◆ getDef()

VPRecipeBase * llvm::VPMultiDefValue::getDef ( ) const
inline

Definition at line 392 of file VPlanValue.h.

◆ VPDef

friend class VPDef
friend

Definition at line 382 of file VPlanValue.h.

References LLVM_ABI_FOR_TEST, and VPDef.

Referenced by VPDef.


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