LLVM 20.0.0git
Public Types | Public Member Functions | Protected Member Functions | List of all members
llvm::VPUser Class Reference

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"

Inheritance diagram for llvm::VPUser:
Inheritance graph
[legend]

Public Types

typedef SmallVectorImpl< VPValue * >::iterator operand_iterator
 
typedef SmallVectorImpl< VPValue * >::const_iterator const_operand_iterator
 
typedef iterator_range< operand_iteratoroperand_range
 
typedef iterator_range< const_operand_iteratorconst_operand_range
 

Public Member Functions

 VPUser ()=delete
 
 VPUser (const VPUser &)=delete
 
VPUseroperator= (const VPUser &)=delete
 
virtual ~VPUser ()
 
void addOperand (VPValue *Operand)
 
unsigned getNumOperands () const
 
VPValuegetOperand (unsigned N) const
 
void setOperand (unsigned I, VPValue *New)
 
operand_iterator op_begin ()
 
const_operand_iterator op_begin () const
 
operand_iterator op_end ()
 
const_operand_iterator op_end () const
 
operand_range operands ()
 
const_operand_range operands () const
 
virtual bool usesScalars (const VPValue *Op) const
 Returns true if the VPUser uses scalars of operand Op.
 
virtual bool onlyFirstLaneUsed (const VPValue *Op) const
 Returns true if the VPUser only uses the first lane of operand Op.
 
virtual bool onlyFirstPartUsed (const VPValue *Op) const
 Returns true if the VPUser only uses the first part of operand Op.
 

Protected Member Functions

void printOperands (raw_ostream &O, VPSlotTracker &SlotTracker) const
 Print the operands to O.
 
 VPUser (ArrayRef< VPValue * > Operands)
 
 VPUser (std::initializer_list< VPValue * > Operands)
 
template<typename IterT >
 VPUser (iterator_range< IterT > Operands)
 

Detailed Description

This class augments VPValue with operands which provide the inverse def-use edges from VPValue's users to their defs.

Definition at line 200 of file VPlanValue.h.

Member Typedef Documentation

◆ const_operand_iterator

Definition at line 249 of file VPlanValue.h.

◆ const_operand_range

Definition at line 251 of file VPlanValue.h.

◆ operand_iterator

Definition at line 248 of file VPlanValue.h.

◆ operand_range

Definition at line 250 of file VPlanValue.h.

Constructor & Destructor Documentation

◆ VPUser() [1/5]

llvm::VPUser::VPUser ( ArrayRef< VPValue * >  Operands)
inlineprotected

Definition at line 209 of file VPlanValue.h.

References addOperand(), and Operands.

◆ VPUser() [2/5]

llvm::VPUser::VPUser ( std::initializer_list< VPValue * >  Operands)
inlineprotected

Definition at line 214 of file VPlanValue.h.

References Operands.

◆ VPUser() [3/5]

template<typename IterT >
llvm::VPUser::VPUser ( iterator_range< IterT >  Operands)
inlineprotected

Definition at line 217 of file VPlanValue.h.

References addOperand(), and Operands.

◆ VPUser() [4/5]

llvm::VPUser::VPUser ( )
delete

◆ VPUser() [5/5]

llvm::VPUser::VPUser ( const VPUser )
delete

◆ ~VPUser()

virtual llvm::VPUser::~VPUser ( )
inlinevirtual

Definition at line 226 of file VPlanValue.h.

References operands().

Member Function Documentation

◆ addOperand()

void llvm::VPUser::addOperand ( VPValue Operand)
inline

◆ getNumOperands()

unsigned llvm::VPUser::getNumOperands ( ) const
inline

◆ getOperand()

VPValue * llvm::VPUser::getOperand ( unsigned  N) const
inline

Definition at line 237 of file VPlanValue.h.

References assert(), N, and Operands.

Referenced by llvm::VPWidenCastRecipe::clone(), llvm::VPScalarCastRecipe::clone(), llvm::VPReverseVectorPointerRecipe::clone(), llvm::VPVectorPointerRecipe::clone(), llvm::VPWidenPointerInductionRecipe::clone(), llvm::VPFirstOrderRecurrencePHIRecipe::clone(), llvm::VPReductionPHIRecipe::clone(), llvm::VPBranchOnMaskRecipe::clone(), llvm::VPPredInstPHIRecipe::clone(), llvm::VPCanonicalIVPHIRecipe::clone(), llvm::VPActiveLaneMaskPHIRecipe::clone(), llvm::VPWidenCanonicalIVRecipe::clone(), llvm::VPDerivedIVRecipe::clone(), llvm::VPScalarIVStepsRecipe::clone(), llvm::VPWidenRecipe::computeCost(), llvm::VPWidenCastRecipe::computeCost(), llvm::VPWidenIntrinsicRecipe::computeCost(), llvm::VPHistogramRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), llvm::VPReductionRecipe::computeCost(), llvm::VPWidenRecipe::execute(), llvm::VPWidenCastRecipe::execute(), llvm::VPHistogramRecipe::execute(), llvm::VPWidenGEPRecipe::execute(), llvm::VPReverseVectorPointerRecipe::execute(), llvm::VPVectorPointerRecipe::execute(), llvm::VPWidenPointerInductionRecipe::execute(), llvm::VPWidenPHIRecipe::execute(), llvm::VPReplicateRecipe::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::VPWidenCanonicalIVRecipe::execute(), llvm::VPDerivedIVRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPWidenEVLRecipe::execute(), llvm::VPInterleaveRecipe::getAddr(), llvm::VPWidenMemoryRecipe::getAddr(), llvm::VPHeaderPHIRecipe::getBackedgeValue(), llvm::VPWidenCallRecipe::getCalledScalarFunction(), llvm::VPReductionRecipe::getChainOp(), llvm::VPWidenSelectRecipe::getCond(), llvm::VPReductionRecipe::getCondOp(), llvm::VPWidenEVLRecipe::getEVL(), llvm::VPReductionEVLRecipe::getEVL(), llvm::VPWidenLoadEVLRecipe::getEVL(), llvm::VPWidenStoreEVLRecipe::getEVL(), llvm::VPWidenPointerInductionRecipe::getFirstUnrolledPartOperand(), llvm::VPWidenPHIRecipe::getIncomingValue(), llvm::VPBlendRecipe::getIncomingValue(), llvm::VPWidenIntOrFpInductionRecipe::getLastUnrolledPartOperand(), llvm::VPReplicateRecipe::getMask(), llvm::VPHistogramRecipe::getMask(), llvm::VPInterleaveRecipe::getMask(), llvm::VPBranchOnMaskRecipe::getMask(), llvm::VPWidenMemoryRecipe::getMask(), llvm::VPBlendRecipe::getMask(), llvm::VPWidenIntOrFpInductionRecipe::getSplatVFValue(), llvm::VPHeaderPHIRecipe::getStartValue(), llvm::VPDerivedIVRecipe::getStartValue(), llvm::VPWidenInductionRecipe::getStepValue(), llvm::VPDerivedIVRecipe::getStepValue(), llvm::VPScalarIVStepsRecipe::getStepValue(), llvm::VPWidenStoreRecipe::getStoredValue(), llvm::VPWidenStoreEVLRecipe::getStoredValue(), llvm::VPReductionRecipe::getVecOp(), llvm::VPReverseVectorPointerRecipe::getVFValue(), llvm::VPWidenIntOrFpInductionRecipe::getVFValue(), llvm::VPWidenIntrinsicRecipe::onlyFirstLaneUsed(), llvm::VPHistogramRecipe::print(), llvm::VPWidenSelectRecipe::print(), llvm::VPWidenPointerInductionRecipe::print(), llvm::VPInterleaveRecipe::print(), and llvm::VPDerivedIVRecipe::print().

◆ onlyFirstLaneUsed()

virtual bool llvm::VPUser::onlyFirstLaneUsed ( const VPValue Op) const
inlinevirtual

◆ onlyFirstPartUsed()

virtual bool llvm::VPUser::onlyFirstPartUsed ( const VPValue Op) const
inlinevirtual

Returns true if the VPUser only uses the first part of operand Op.

Conservatively returns false.

Reimplemented in llvm::VPInstruction, llvm::VPIRInstruction, llvm::VPReverseVectorPointerRecipe, llvm::VPVectorPointerRecipe, and llvm::VPCanonicalIVPHIRecipe.

Definition at line 280 of file VPlanValue.h.

References assert(), llvm::is_contained(), and operands().

◆ op_begin() [1/2]

operand_iterator llvm::VPUser::op_begin ( )
inline

◆ op_begin() [2/2]

const_operand_iterator llvm::VPUser::op_begin ( ) const
inline

Definition at line 254 of file VPlanValue.h.

References Operands.

◆ op_end() [1/2]

operand_iterator llvm::VPUser::op_end ( )
inline

◆ op_end() [2/2]

const_operand_iterator llvm::VPUser::op_end ( ) const
inline

Definition at line 256 of file VPlanValue.h.

References Operands.

◆ operands() [1/2]

operand_range llvm::VPUser::operands ( )
inline

Definition at line 257 of file VPlanValue.h.

References op_begin(), and op_end().

Referenced by llvm::VPInstruction::clone(), llvm::VPIRInstruction::clone(), llvm::VPWidenRecipe::clone(), llvm::VPHistogramRecipe::clone(), llvm::VPWidenSelectRecipe::clone(), llvm::VPWidenGEPRecipe::clone(), llvm::VPBlendRecipe::clone(), llvm::VPReplicateRecipe::clone(), llvm::collectEphemeralRecipesForVPlan(), llvm::VPWidenIntrinsicRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), llvm::VPIRInstruction::execute(), llvm::VPWidenRecipe::execute(), llvm::VPWidenIntrinsicRecipe::execute(), hoistPreviousBeforeFORUsers(), onlyFirstLaneUsed(), llvm::VPInstruction::onlyFirstLaneUsed(), llvm::VPWidenEVLRecipe::onlyFirstLaneUsed(), llvm::VPScalarCastRecipe::onlyFirstLaneUsed(), llvm::VPWidenIntrinsicRecipe::onlyFirstLaneUsed(), llvm::VPReverseVectorPointerRecipe::onlyFirstLaneUsed(), llvm::VPVectorPointerRecipe::onlyFirstLaneUsed(), llvm::VPScalarPHIRecipe::onlyFirstLaneUsed(), llvm::VPBlendRecipe::onlyFirstLaneUsed(), llvm::VPInterleaveRecipe::onlyFirstLaneUsed(), llvm::VPReductionEVLRecipe::onlyFirstLaneUsed(), llvm::VPReplicateRecipe::onlyFirstLaneUsed(), llvm::VPWidenLoadRecipe::onlyFirstLaneUsed(), llvm::VPWidenLoadEVLRecipe::onlyFirstLaneUsed(), llvm::VPWidenStoreRecipe::onlyFirstLaneUsed(), llvm::VPWidenStoreEVLRecipe::onlyFirstLaneUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPEVLBasedIVPHIRecipe::onlyFirstLaneUsed(), llvm::VPDerivedIVRecipe::onlyFirstLaneUsed(), llvm::VPScalarIVStepsRecipe::onlyFirstLaneUsed(), onlyFirstPartUsed(), llvm::VPInstruction::onlyFirstPartUsed(), llvm::VPIRInstruction::onlyFirstPartUsed(), llvm::VPReverseVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPVectorPointerRecipe::onlyFirstPartUsed(), llvm::VPCanonicalIVPHIRecipe::onlyFirstPartUsed(), llvm::VPIRInstruction::print(), llvm::VPWidenIntrinsicRecipe::print(), llvm::InnerLoopVectorizer::scalarizeInstruction(), sinkScalarOperands(), transformRecipestoEVLRecipes(), usesScalars(), llvm::VPIRInstruction::usesScalars(), llvm::VPReplicateRecipe::usesScalars(), llvm::VPBranchOnMaskRecipe::usesScalars(), llvm::VPPredInstPHIRecipe::usesScalars(), and ~VPUser().

◆ operands() [2/2]

const_operand_range llvm::VPUser::operands ( ) const
inline

Definition at line 258 of file VPlanValue.h.

References op_begin(), and op_end().

◆ operator=()

VPUser & llvm::VPUser::operator= ( const VPUser )
delete

◆ printOperands()

void VPUser::printOperands ( raw_ostream O,
VPSlotTracker SlotTracker 
) const
protected

◆ setOperand()

void llvm::VPUser::setOperand ( unsigned  I,
VPValue New 
)
inline

◆ usesScalars()

virtual bool llvm::VPUser::usesScalars ( const VPValue Op) const
inlinevirtual

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 264 of file VPlanValue.h.

References assert(), llvm::is_contained(), onlyFirstLaneUsed(), and operands().


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