LLVM 20.0.0git
|
!op (X, Y) - Combine two inits. More...
#include "llvm/TableGen/Record.h"
Public Types | |
enum | BinaryOp : uint8_t { ADD , SUB , MUL , DIV , AND , OR , XOR , SHL , SRA , SRL , LISTCONCAT , LISTSPLAT , LISTREMOVE , LISTELEM , LISTSLICE , RANGEC , STRCONCAT , INTERLEAVE , CONCAT , EQ , NE , LE , LT , GE , GT , GETDAGARG , GETDAGNAME , SETDAGOP } |
Public Member Functions | |
BinOpInit (const BinOpInit &)=delete | |
BinOpInit & | operator= (const BinOpInit &)=delete |
void | Profile (FoldingSetNodeID &ID) const |
const OpInit * | clone (ArrayRef< const Init * > Operands) const override |
unsigned | getNumOperands () const override |
const Init * | getOperand (unsigned i) const override |
BinaryOp | getOpcode () const |
const Init * | getLHS () const |
const Init * | getRHS () const |
std::optional< bool > | CompareInit (unsigned Opc, const Init *LHS, const Init *RHS) const |
const Init * | Fold (const Record *CurRec) const |
const Init * | resolveReferences (Resolver &R) const override |
This function is used by classes that refer to other variables which may not be defined at the time the expression is formed. | |
std::string | getAsString () const override |
Convert this value to a literal form. | |
Public Member Functions inherited from llvm::OpInit | |
OpInit (const OpInit &)=delete | |
OpInit & | operator= (OpInit &)=delete |
virtual const OpInit * | clone (ArrayRef< const Init * > Operands) const =0 |
virtual unsigned | getNumOperands () const =0 |
virtual const Init * | getOperand (unsigned i) const =0 |
const Init * | getBit (unsigned Bit) const override |
Get the Init value of the specified bit. | |
Public Member Functions inherited from llvm::TypedInit | |
TypedInit (const TypedInit &)=delete | |
TypedInit & | operator= (const TypedInit &)=delete |
const RecTy * | getType () const |
Get the type of the Init as a RecTy. | |
RecordKeeper & | getRecordKeeper () const |
Get the record keeper that initialized this Init. | |
const Init * | getCastTo (const RecTy *Ty) const override |
If this value is convertible to type Ty , return a value whose type is Ty , generating a !cast operation if required. | |
const Init * | convertInitializerTo (const RecTy *Ty) const override |
Convert to a value whose type is Ty , or return null if this is not possible. | |
const Init * | convertInitializerBitRange (ArrayRef< unsigned > Bits) const override |
This function is used to implement the bit range selection operator. | |
const RecTy * | getFieldType (const StringInit *FieldName) const override |
This method is used to implement the FieldInit class. | |
Public Member Functions inherited from llvm::Init | |
InitKind | getKind () const |
Get the kind (type) of the value. | |
RecordKeeper & | getRecordKeeper () const |
Get the record keeper that initialized this Init. | |
Init (const Init &)=delete | |
Init & | operator= (const Init &)=delete |
virtual | ~Init ()=default |
virtual bool | isComplete () const |
Is this a complete value with no unset (uninitialized) subvalues? | |
virtual bool | isConcrete () const |
Is this a concrete and fully resolved value without any references or stuck operations? Unset values are concrete. | |
void | print (raw_ostream &OS) const |
Print this value. | |
virtual std::string | getAsString () const =0 |
Convert this value to a literal form. | |
virtual std::string | getAsUnquotedString () const |
Convert this value to a literal form, without adding quotes around a string. | |
void | dump () const |
Debugging method that may be called through a debugger; just invokes print on stderr. | |
virtual const Init * | getCastTo (const RecTy *Ty) const =0 |
If this value is convertible to type Ty , return a value whose type is Ty , generating a !cast operation if required. | |
virtual const Init * | convertInitializerTo (const RecTy *Ty) const =0 |
Convert to a value whose type is Ty , or return null if this is not possible. | |
virtual const Init * | convertInitializerBitRange (ArrayRef< unsigned > Bits) const |
This function is used to implement the bit range selection operator. | |
virtual const RecTy * | getFieldType (const StringInit *FieldName) const |
This function is used to implement the FieldInit class. | |
virtual const Init * | resolveReferences (Resolver &R) const |
This function is used by classes that refer to other variables which may not be defined at the time the expression is formed. | |
virtual const Init * | getBit (unsigned Bit) const =0 |
Get the Init value of the specified bit. | |
Public Member Functions inherited from llvm::FoldingSetBase::Node | |
Node ()=default | |
void * | getNextInBucket () const |
void | SetNextInBucket (void *N) |
Static Public Member Functions | |
static bool | classof (const Init *I) |
static const BinOpInit * | get (BinaryOp opc, const Init *lhs, const Init *rhs, const RecTy *Type) |
static const Init * | getStrConcat (const Init *lhs, const Init *rhs) |
static const Init * | getListConcat (const TypedInit *lhs, const Init *rhs) |
Static Public Member Functions inherited from llvm::OpInit | |
static bool | classof (const Init *I) |
Static Public Member Functions inherited from llvm::TypedInit | |
static bool | classof (const Init *I) |
Additional Inherited Members | |
Protected Types inherited from llvm::Init | |
enum | InitKind : uint8_t { IK_First , IK_FirstTypedInit , IK_BitInit , IK_BitsInit , IK_DagInit , IK_DefInit , IK_FieldInit , IK_IntInit , IK_ListInit , IK_FirstOpInit , IK_BinOpInit , IK_TernOpInit , IK_UnOpInit , IK_LastOpInit , IK_CondOpInit , IK_FoldOpInit , IK_IsAOpInit , IK_ExistsOpInit , IK_AnonymousNameInit , IK_StringInit , IK_VarInit , IK_VarBitInit , IK_VarDefInit , IK_LastTypedInit , IK_UnsetInit , IK_ArgumentInit } |
Discriminator enum (for isa<>, dyn_cast<>, et al.) More... | |
Protected Member Functions inherited from llvm::OpInit | |
OpInit (InitKind K, const RecTy *Type, uint8_t Opc) | |
Protected Member Functions inherited from llvm::TypedInit | |
TypedInit (InitKind K, const RecTy *T, uint8_t Opc=0) | |
Protected Member Functions inherited from llvm::Init | |
Init (InitKind K, uint8_t Opc=0) | |
Protected Attributes inherited from llvm::Init | |
uint8_t | Opc |
enum llvm::BinOpInit::BinaryOp : uint8_t |
Definition at line 954 of file Record.h.
References I, and llvm::Init::IK_BinOpInit.
|
inlineoverridevirtual |
Implements llvm::OpInit.
Definition at line 966 of file Record.h.
References assert(), get(), getOpcode(), llvm::TypedInit::getType(), and Operands.
std::optional< bool > BinOpInit::CompareInit | ( | unsigned | Opc, |
const Init * | LHS, | ||
const Init * | RHS | ||
) | const |
Definition at line 1176 of file Record.cpp.
References EQ, GE, llvm::IntRecTy::get(), llvm::TypedInit::getRecordKeeper(), GT, LE, LHS, llvm_unreachable, LT, NE, llvm::Init::Opc, and RHS.
Referenced by Fold().
Definition at line 1286 of file Record.cpp.
References ADD, AND, llvm::append_range(), assert(), CompareInit(), CONCAT, ConcatStringInits(), llvm::Init::convertInitializerTo(), DIV, End, EQ, GE, llvm::ListInit::get(), llvm::DagInit::get(), llvm::IntRecTy::get(), llvm::UnsetInit::get(), llvm::BitInit::get(), llvm::IntInit::get(), GETDAGARG, getDagArgNoByKey(), GETDAGNAME, llvm::Record::getLoc(), getOpcode(), llvm::TypedInit::getRecordKeeper(), llvm::Value::getType(), llvm::TypedInit::getType(), GT, I, Idx, II, INT64_MIN, INTERLEAVE, interleaveIntList(), interleaveStringList(), LE, llvm::List, LISTCONCAT, LISTELEM, LISTREMOVE, LISTSLICE, LISTSPLAT, llvm_unreachable, LT, MUL, NE, OR, llvm::PrintError(), llvm::PrintFatalError(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), RANGEC, SETDAGOP, SHL, Size, SRA, SRL, STRCONCAT, SUB, and XOR.
|
static |
Definition at line 1078 of file Record.cpp.
References llvm::detail::RecordKeeperImpl::Allocator, I, LHS, llvm::Init::Opc, ProfileBinOpInit(), RHS, and llvm::detail::RecordKeeperImpl::TheBinOpInitPool.
Referenced by clone(), getListConcat(), getStrConcat(), and resolveReferences().
|
overridevirtual |
Convert this value to a literal form.
Implements llvm::Init.
Definition at line 1579 of file Record.cpp.
References ADD, AND, CONCAT, DIV, EQ, GE, llvm::RecTy::getAsString(), llvm::Init::getAsString(), GETDAGARG, GETDAGNAME, getOpcode(), llvm::TypedInit::getType(), GT, INTERLEAVE, LE, LISTCONCAT, LISTELEM, LISTREMOVE, LISTSLICE, LISTSPLAT, LT, MUL, NE, OR, RANGEC, SETDAGOP, SHL, SRA, SRL, STRCONCAT, SUB, and XOR.
Definition at line 1166 of file Record.cpp.
References assert(), ConcatListInits(), get(), llvm::Value::getType(), LHS, LISTCONCAT, and RHS.
|
inlineoverridevirtual |
Implements llvm::OpInit.
|
inline |
Definition at line 981 of file Record.h.
References llvm::Init::Opc.
Referenced by clone(), Fold(), getAsString(), Profile(), and resolveReferences().
Implements llvm::OpInit.
Definition at line 973 of file Record.h.
References getLHS(), getRHS(), and llvm_unreachable.
Definition at line 1149 of file Record.cpp.
References ConcatStringInits(), get(), llvm::StringRecTy::get(), llvm::Init::getRecordKeeper(), and STRCONCAT.
Referenced by QualifyName().
void BinOpInit::Profile | ( | FoldingSetNodeID & | ID | ) | const |
Definition at line 1093 of file Record.cpp.
References getLHS(), getOpcode(), getRHS(), llvm::TypedInit::getType(), and ProfileBinOpInit().
This function is used by classes that refer to other variables which may not be defined at the time the expression is formed.
If a value is set for the variable later, this method will be called on users of the value to allow the value to propagate out.
Reimplemented from llvm::Init.
Definition at line 1552 of file Record.cpp.
References AND, llvm::Init::convertInitializerTo(), get(), llvm::IntRecTy::get(), getOpcode(), llvm::TypedInit::getRecordKeeper(), llvm::TypedInit::getType(), llvm::Init::Opc, OR, and llvm::Init::resolveReferences().