21 #ifndef LLVM_TRANSFORMS_VECTORIZE_VPLAN_VALUE_H 22 #define LLVM_TRANSFORMS_VECTORIZE_VPLAN_VALUE_H 46 const unsigned char SubclassID;
55 : SubclassID(SC), UnderlyingVal(UV) {}
69 assert(!UnderlyingVal &&
"Underlying Value is already set.");
90 OS <<
"%vp" << (
unsigned short)(
unsigned long long)
this;
139 for (
VPValue *Operand : Operands)
146 VPUser(std::initializer_list<VPValue *> Operands)
164 assert(N < Operands.
size() &&
"Operand index out of bounds");
178 const_operand_iterator
op_end()
const {
return Operands.
end(); }
179 operand_range
operands() {
return operand_range(op_begin(), op_end()); }
181 return const_operand_range(op_begin(), op_end());
187 #endif // LLVM_TRANSFORMS_VECTORIZE_VPLAN_VALUE_H iterator_range< user_iterator > user_range
DenseMap< VPValue *, Value * > VPValue2ValueTy
typename SuperClass::const_iterator const_iterator
This class represents lattice values for constants.
SmallVectorImpl< VPValue * >::const_iterator const_operand_iterator
void push_back(const T &Elt)
bool hasMoreThanOneUniqueUser()
Returns true if the value has more than one unique user.
void setUnderlyingValue(Value *Val)
iv Induction Variable Users
VPValue * getOperand(unsigned N) const
SmallVectorImpl< VPValue * >::iterator operand_iterator
VPValue(const unsigned char SC, Value *UV=nullptr)
static MCDisassembler::DecodeStatus addOperand(MCInst &Inst, const MCOperand &Opnd)
iterator_range< const_operand_iterator > const_operand_range
VPUser(const unsigned char SC)
SmallVectorImpl< VPUser * >::const_iterator const_user_iterator
const_operand_range operands() const
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
unsigned getVPValueID() const
operand_iterator op_end()
void setOperand(unsigned I, VPValue *New)
Value * getUnderlyingValue()
Return the underlying Value attached to this VPValue.
This class augments VPValue with operands which provide the inverse def-use edges from VPValue's user...
VPUser(const unsigned char SC, ArrayRef< VPValue *> Operands)
VPlan-based builder utility analogous to IRBuilder.
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator begin()
void addUser(VPUser &User)
user_iterator user_begin()
const_user_range users() const
void printAsOperand(raw_ostream &OS) const
const_user_iterator user_begin() const
const_operand_iterator op_begin() const
VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
CHAIN = SC CHAIN, Imm128 - System call.
const_operand_iterator op_end() const
A range adaptor for a pair of iterators.
iterator_range< const_user_iterator > const_user_range
VPValue & operator=(const VPValue &)=delete
iterator_range< operand_iterator > operand_range
typename SuperClass::iterator iterator
void replaceAllUsesWith(VPValue *New)
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator end()
static bool classof(const VPValue *V)
Method to support type inquiry through isa, cast, and dyn_cast.
VPUser(std::initializer_list< VPValue *> Operands)
operand_iterator op_begin()
DenseMap< Value *, VPValue * > Value2VPValueTy
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
unsigned getNumOperands() const
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
LLVM Value Representation.
unsigned getNumUsers() const
This class implements an extremely fast bulk output stream that can only output to a stream...
SmallVectorImpl< VPUser * >::iterator user_iterator
VPUser(ArrayRef< VPValue *> Operands)
VPValue(Value *UV=nullptr)
const_user_iterator user_end() const
void addOperand(VPValue *Operand)