class VPUser

Declaration

class VPUser { /* full declaration omitted */ };

Description

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

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:207

Member Variables

private SmallVector<llvm::VPValue*, 2> Operands
private llvm::VPUser::VPUserID ID

Method Overview

  • protected VPUser(ArrayRef<llvm::VPValue *> Operands, llvm::VPUser::VPUserID ID)
  • protected template <typename IterT> VPUser(iterator_range<IterT> Operands, llvm::VPUser::VPUserID ID)
  • public VPUser(const llvm::VPUser &)
  • protected VPUser(std::initializer_list<VPValue *> Operands, llvm::VPUser::VPUserID ID)
  • public VPUser()
  • public void addOperand(llvm::VPValue * Operand)
  • public static inline bool classof(const llvm::VPDef * Recipe)
  • public unsigned int getNumOperands() const
  • public inline llvm::VPValue * getOperand(unsigned int N) const
  • public llvm::VPUser::VPUserID getVPUserID() const
  • public virtual bool onlyFirstLaneUsed(const llvm::VPValue * Op) const
  • public llvm::VPUser::operand_iterator op_begin()
  • public llvm::VPUser::const_operand_iterator op_begin() const
  • public llvm::VPUser::operand_iterator op_end()
  • public llvm::VPUser::const_operand_iterator op_end() const
  • public llvm::VPUser::operand_range operands()
  • public llvm::VPUser::const_operand_range operands() const
  • protected void printOperands(llvm::raw_ostream & O, llvm::VPSlotTracker & SlotTracker) const
  • public void removeLastOperand()
  • public void setOperand(unsigned int I, llvm::VPValue * New)
  • public virtual bool usesScalars(const llvm::VPValue * Op) const
  • public virtual ~VPUser()

Methods

VPUser(ArrayRef<llvm::VPValue*> Operands,
       llvm::VPUser::VPUserID ID)

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:226

Parameters

ArrayRef<llvm::VPValue*> Operands
llvm::VPUser::VPUserID ID

template <typename IterT>
VPUser(iterator_range<IterT> Operands,
       llvm::VPUser::VPUserID ID)

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:235

Templates

IterT

Parameters

iterator_range<IterT> Operands
llvm::VPUser::VPUserID ID

VPUser(const llvm::VPUser&)

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:242

Parameters

const llvm::VPUser&

VPUser(std::initializer_list<VPValue*> Operands,
       llvm::VPUser::VPUserID ID)

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:231

Parameters

std::initializer_list<VPValue*> Operands
llvm::VPUser::VPUserID ID

VPUser()

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:241

void addOperand(llvm::VPValue* Operand)

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:251

Parameters

llvm::VPValue* Operand

static inline bool classof(
    const llvm::VPDef* Recipe)

Description

Method to support type inquiry through isa, cast, and dyn_cast.

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:288

Parameters

const llvm::VPDef* Recipe

unsigned int getNumOperands() const

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:256

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

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:257

Parameters

unsigned int N

llvm::VPUser::VPUserID getVPUserID() const

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:249

virtual bool onlyFirstLaneUsed(
    const llvm::VPValue* Op) const

Description

Returns true if the VPUser only uses the first lane of operand \p Op. Conservatively returns false.

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:300

Parameters

const llvm::VPValue* Op

llvm::VPUser::operand_iterator op_begin()

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:278

llvm::VPUser::const_operand_iterator op_begin()
    const

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:279

llvm::VPUser::operand_iterator op_end()

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:280

llvm::VPUser::const_operand_iterator op_end()
    const

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:281

llvm::VPUser::operand_range operands()

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:282

llvm::VPUser::const_operand_range operands() const

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:283

void printOperands(
    llvm::raw_ostream& O,
    llvm::VPSlotTracker& SlotTracker) const

Description

Print the operands to \p O.

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:223

Parameters

llvm::raw_ostream& O
llvm::VPSlotTracker& SlotTracker

void removeLastOperand()

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:268

void setOperand(unsigned int I,
                llvm::VPValue* New)

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:262

Parameters

unsigned int I
llvm::VPValue* New

virtual bool usesScalars(
    const llvm::VPValue* Op) const

Description

Returns true if the VPUser uses scalars of operand \p Op. Conservatively returns if only first (scalar) lane is used, as default.

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:292

Parameters

const llvm::VPValue* Op

virtual ~VPUser()

Declared at: llvm/lib/Transforms/Vectorize/VPlanValue.h:244