LLVM 22.0.0git
|
A vector constant whose element type is a simple 1/2/4/8-byte integer or float/double, and whose elements are just simple data values (i.e. More...
#include "llvm/SandboxIR/Constant.h"
Public Member Functions | |
bool | isSplat () const |
Returns true if this is a splat constant, meaning that all elements have the same value. | |
Constant * | getSplatValue () const |
If this is a splat constant, meaning that all of the elements have the same value, return that value. | |
FixedVectorType * | getType () const |
Specialize the getType() method to always return a FixedVectorType, which reduces the amount of casting needed in parts of the compiler. | |
![]() | |
uint64_t | getElementAsInteger (unsigned ElmIdx) const |
If this is a sequential container of integers (of any size), return the specified element in the low bits of a uint64_t. | |
APInt | getElementAsAPInt (unsigned ElmIdx) const |
If this is a sequential container of integers (of any size), return the specified element as an APInt. | |
APFloat | getElementAsAPFloat (unsigned ElmIdx) const |
If this is a sequential container of floating point type, return the specified element as an APFloat. | |
float | getElementAsFloat (unsigned ElmIdx) const |
If this is an sequential container of floats, return the specified element as a float. | |
double | getElementAsDouble (unsigned ElmIdx) const |
If this is an sequential container of doubles, return the specified element as a double. | |
Constant * | getElementAsConstant (unsigned ElmIdx) const |
Return a Constant for a specified index's element. | |
Type * | getElementType () const |
Return the element type of the array/vector. | |
unsigned | getNumElements () const |
Return the number of elements in the array or vector. | |
uint64_t | getElementByteSize () const |
Return the size (in bytes) of each element in the array/vector. | |
bool | isString (unsigned CharSize=8) const |
This method returns true if this is an array of CharSize integers. | |
bool | isCString () const |
This method returns true if the array "isString", ends with a null byte, and does not contains any other null bytes. | |
StringRef | getAsString () const |
If this array is isString(), then this method returns the array as a StringRef. | |
StringRef | getAsCString () const |
If this array is isCString(), then this method returns the array (without the trailing null byte) as a StringRef. | |
StringRef | getRawDataValues () const |
Return the raw, underlying, bytes of this data. | |
![]() | |
sandboxir::Context & | getParent () const |
unsigned | getUseOperandNo (const Use &Use) const override |
\Returns the operand index of Use . | |
void | verify () const override |
Should crash if there is something wrong with the instruction. | |
void | dumpOS (raw_ostream &OS) const override |
![]() | |
virtual op_iterator | op_begin () |
virtual op_iterator | op_end () |
virtual const_op_iterator | op_begin () const |
virtual const_op_iterator | op_end () const |
op_range | operands () |
const_op_range | operands () const |
Value * | getOperand (unsigned OpIdx) const |
Use | getOperandUse (unsigned OpIdx) const |
\Returns the operand edge for OpIdx . | |
virtual unsigned | getNumOperands () const |
virtual void | setOperand (unsigned OperandIdx, Value *Operand) |
bool | replaceUsesOfWith (Value *FromV, Value *ToV) |
Replaces any operands that match FromV with ToV . | |
void | verify () const override |
Should crash if there is something wrong with the instruction. | |
void | dumpCommonHeader (raw_ostream &OS) const final |
void | dumpOS (raw_ostream &OS) const override |
![]() | |
virtual | ~Value ()=default |
ClassID | getSubclassID () const |
LLVM_ABI use_iterator | use_begin () |
const_use_iterator | use_begin () const |
use_iterator | use_end () |
const_use_iterator | use_end () const |
iterator_range< use_iterator > | uses () |
iterator_range< const_use_iterator > | uses () const |
LLVM_ABI user_iterator | user_begin () |
user_iterator | user_end () |
const_user_iterator | user_begin () const |
const_user_iterator | user_end () const |
iterator_range< user_iterator > | users () |
iterator_range< const_user_iterator > | users () const |
LLVM_ABI unsigned | getNumUses () const |
\Returns the number of user edges (not necessarily to unique users). | |
bool | hasNUsesOrMore (unsigned Num) const |
Return true if this value has N uses or more. | |
bool | hasNUses (unsigned Num) const |
Return true if this Value has exactly N uses. | |
LLVM_ABI Type * | getType () const |
Context & | getContext () const |
LLVM_ABI void | replaceUsesWithIf (Value *OtherV, llvm::function_ref< bool(const Use &)> ShouldReplace) |
LLVM_ABI void | replaceAllUsesWith (Value *Other) |
StringRef | getName () const |
\Returns the LLVM IR name of the bottom-most LLVM value. | |
virtual void | verify () const =0 |
Should crash if there is something wrong with the instruction. | |
std::string | getUid () const |
Returns the unique id in the form 'SB<number>.' like 'SB1.'. | |
virtual void | dumpCommonHeader (raw_ostream &OS) const |
void | dumpCommonFooter (raw_ostream &OS) const |
void | dumpCommonPrefix (raw_ostream &OS) const |
void | dumpCommonSuffix (raw_ostream &OS) const |
void | printAsOperandCommon (raw_ostream &OS) const |
virtual void | dumpOS (raw_ostream &OS) const =0 |
LLVM_DUMP_METHOD void | dump () const |
Static Public Member Functions | |
static bool | classof (const Value *From) |
Methods for support type inquiry through isa, cast, and dyn_cast: | |
static Constant * | get (Context &Ctx, ArrayRef< uint8_t > Elts) |
get() constructors - Return a constant with vector type with an element count and element type matching the ArrayRef passed in. | |
static Constant * | get (Context &Ctx, ArrayRef< uint16_t > Elts) |
static Constant * | get (Context &Ctx, ArrayRef< uint32_t > Elts) |
static Constant * | get (Context &Ctx, ArrayRef< uint64_t > Elts) |
static Constant * | get (Context &Ctx, ArrayRef< float > Elts) |
static Constant * | get (Context &Ctx, ArrayRef< double > Elts) |
static Constant * | getRaw (StringRef Data, uint64_t NumElements, Type *ElementTy) |
getRaw() constructor - Return a constant with vector type with an element count and element type matching the NumElements and ElementTy parameters passed in. | |
static Constant * | getFP (Type *ElementType, ArrayRef< uint16_t > Elts) |
getFP() constructors - Return a constant of vector type with a float element type taken from argument ‘ElementType’, and count taken from argument ‘Elts’. | |
static Constant * | getFP (Type *ElementType, ArrayRef< uint32_t > Elts) |
static Constant * | getFP (Type *ElementType, ArrayRef< uint64_t > Elts) |
static Constant * | getSplat (unsigned NumElts, Constant *Elt) |
Return a ConstantVector with the specified constant in each element. | |
![]() | |
static bool | isElementTypeCompatible (Type *Ty) |
Return true if a ConstantDataSequential can be formed with a vector or array of the specified element type. | |
static bool | classof (const Value *From) |
![]() | |
static bool | classof (const sandboxir::Value *From) |
For isa/dyn_cast. | |
![]() | |
static bool | classof (const Value *From) |
For isa/dyn_cast. | |
Friends | |
class | Context |
A vector constant whose element type is a simple 1/2/4/8-byte integer or float/double, and whose elements are just simple data values (i.e.
ConstantInt/ConstantFP). This Constant node has no operands because it stores all of the elements of the constant as densely packed data, instead of as Value*'s.
Definition at line 669 of file Constant.h.
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 676 of file Constant.h.
References From.
|
inlinestatic |
Definition at line 702 of file Constant.h.
References llvm::sandboxir::Value::Ctx, llvm::ConstantDataVector::get(), llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Context::LLVMCtx.
|
inlinestatic |
Definition at line 698 of file Constant.h.
References llvm::sandboxir::Value::Ctx, llvm::ConstantDataVector::get(), llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Context::LLVMCtx.
|
inlinestatic |
Definition at line 686 of file Constant.h.
References llvm::sandboxir::Value::Ctx, llvm::ConstantDataVector::get(), llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Context::LLVMCtx.
|
inlinestatic |
Definition at line 690 of file Constant.h.
References llvm::sandboxir::Value::Ctx, llvm::ConstantDataVector::get(), llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Context::LLVMCtx.
|
inlinestatic |
Definition at line 694 of file Constant.h.
References llvm::sandboxir::Value::Ctx, llvm::ConstantDataVector::get(), llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Context::LLVMCtx.
|
inlinestatic |
get() constructors - Return a constant with vector type with an element count and element type matching the ArrayRef passed in.
Note that this can return a ConstantAggregateZero object.
Definition at line 682 of file Constant.h.
References llvm::sandboxir::Value::Ctx, llvm::ConstantDataVector::get(), llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Context::LLVMCtx.
|
inlinestatic |
getFP() constructors - Return a constant of vector type with a float element type taken from argument ‘ElementType’, and count taken from argument ‘Elts’.
The amount of bits of the contained type must match the number of bits of the type contained in the passed in ArrayRef. (i.e. half or bfloat for 16bits, float for 32bits, double for 64bits) Note that this can return a ConstantAggregateZero object.
Definition at line 725 of file Constant.h.
References llvm::ConstantDataVector::getFP().
|
inlinestatic |
Definition at line 729 of file Constant.h.
References llvm::ConstantDataVector::getFP().
|
inlinestatic |
Definition at line 733 of file Constant.h.
References llvm::ConstantDataVector::getFP().
|
inlinestatic |
getRaw() constructor - Return a constant with vector type with an element count and element type matching the NumElements and ElementTy parameters passed in.
Note that this can return a ConstantAggregateZero object. ElementTy must be one of i8/i16/i32/i64/half/bfloat/float/double. Data is the buffer containing the elements. Be careful to make sure Data uses the right endianness, the buffer will be used as-is.
Definition at line 713 of file Constant.h.
References llvm::Data, llvm::sandboxir::Type::getContext(), llvm::sandboxir::Context::getOrCreateConstant(), llvm::ConstantDataVector::getRaw(), and llvm::sandboxir::Type::LLVMTy.
|
inlinestatic |
Return a ConstantVector with the specified constant in each element.
The specified constant has to be a of a compatible type (i8/i16/ i32/i64/half/bfloat/float/double) and must be a ConstantFP or ConstantInt.
Definition at line 741 of file Constant.h.
References llvm::sandboxir::Value::getContext(), llvm::sandboxir::Context::getOrCreateConstant(), llvm::ConstantDataVector::getSplat(), and llvm::sandboxir::Value::Val.
|
inline |
If this is a splat constant, meaning that all of the elements have the same value, return that value.
Otherwise return NULL.
Definition at line 755 of file Constant.h.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getOrCreateConstant(), getSplatValue(), and llvm::sandboxir::Value::Val.
Referenced by getSplatValue().
|
inline |
Specialize the getType() method to always return a FixedVectorType, which reduces the amount of casting needed in parts of the compiler.
Definition at line 762 of file Constant.h.
References llvm::sandboxir::Value::getType().
|
inline |
Returns true if this is a splat constant, meaning that all elements have the same value.
Definition at line 749 of file Constant.h.
References llvm::sandboxir::Value::Val.
|
friend |
Definition at line 672 of file Constant.h.