LLVM: llvm::ir2vec::Vocabulary Class Reference (original) (raw)

Class for storing and accessing the IR2Vec vocabulary. More...

#include "[llvm/Analysis/IR2Vec.h](IR2Vec%5F8h%5Fsource.html)"

Public Types
enum class CanonicalTypeID : unsigned { FloatTy, VoidTy, LabelTy, MetadataTy, VectorTy, TokenTy, IntegerTy, FunctionTy, PointerTy, StructTy, ArrayTy, UnknownTy, MaxCanonicalType }
Canonical type IDs supported by IR2Vec Vocabulary. More...
enum class OperandKind : unsigned { FunctionID, PointerID, ConstantID, VariableID, MaxOperandKind }
Operand kinds supported by IR2Vec Vocabulary. More...
using const_iterator = VocabStorage::const_iterator
Const Iterator type aliases.
Public Member Functions
Vocabulary ()=default
LLVM_ABI Vocabulary (VocabStorage &&Storage)
Vocabulary (const Vocabulary &)=delete
Vocabulary & operator= (const Vocabulary &)=delete
Vocabulary (Vocabulary &&)=default
Vocabulary & operator= (Vocabulary &&Other)=delete
LLVM_ABI bool isValid () const
LLVM_ABI unsigned getDimension () const
LLVM_ABI const ir2vec::Embedding & operator[] (unsigned Opcode) const
Accessors to get the embedding for a given entity.
LLVM_ABI const ir2vec::Embedding & operator[] (Type::TypeID TypeID) const
LLVM_ABI const ir2vec::Embedding & operator[] (const Value &Arg) const
LLVM_ABI const ir2vec::Embedding & operator[] (CmpInst::Predicate P) const
const_iterator begin () const
const_iterator cbegin () const
const_iterator end () const
const_iterator cend () const
LLVM_ABI bool invalidate (Module &M, const PreservedAnalyses &PA, ModuleAnalysisManager::Invalidator &Inv) const
Static Public Member Functions
static constexpr size_t getCanonicalSize ()
Total number of entries (opcodes + canonicalized types + operand kinds + predicates)
static LLVM_ABI StringRef getVocabKeyForOpcode (unsigned Opcode)
Function to get vocabulary key for a given Opcode.
static LLVM_ABI StringRef getVocabKeyForTypeID (Type::TypeID TypeID)
Function to get vocabulary key for a given TypeID.
static LLVM_ABI StringRef getVocabKeyForOperandKind (OperandKind Kind)
Function to get vocabulary key for a given OperandKind.
static LLVM_ABI OperandKind getOperandKind (const Value *Op)
Function to classify an operand into OperandKind.
static LLVM_ABI StringRef getVocabKeyForPredicate (CmpInst::Predicate P)
Function to get vocabulary key for a given predicate.
static LLVM_ABI unsigned getIndex (unsigned Opcode)
Functions to return flat index.
static LLVM_ABI unsigned getIndex (Type::TypeID TypeID)
static LLVM_ABI unsigned getIndex (const Value &Op)
static LLVM_ABI unsigned getIndex (CmpInst::Predicate P)
static LLVM_ABI StringRef getStringKey (unsigned Pos)
Returns the string key for a given index position in the vocabulary.
static LLVM_ABI VocabStorage createDummyVocabForTest (unsigned Dim=1)
Create a dummy vocabulary for testing purposes.
Friends
class llvm::IR2VecVocabAnalysis

Class for storing and accessing the IR2Vec vocabulary.

The Vocabulary class manages seed embeddings for LLVM IR entities. The seed embeddings are the initial learned representations of the entities of LLVM IR. The IR2Vec representation for a given IR is derived from these seed embeddings.

The vocabulary contains the seed embeddings for three types of entities: instruction opcodes, types, and operands. Types are grouped/canonicalized for better learning (e.g., all float variants map to FloatTy). The vocabulary abstracts away the canonicalization effectively, the exposed APIs handle all the known LLVM IR opcodes, types and operands.

This class helps populate the seed embeddings in an internal vector-based ADT. It provides logic to map every IR entity to a specific slot index or position in this vector, enabling O(1) embedding lookup while avoiding unnecessary computations involving string based lookups while generating the embeddings.

Definition at line 242 of file IR2Vec.h.

const_iterator

Const Iterator type aliases.

Definition at line 409 of file IR2Vec.h.

CanonicalTypeID

Canonical type IDs supported by IR2Vec Vocabulary.

Enumerator
FloatTy
VoidTy
LabelTy
MetadataTy
VectorTy
TokenTy
IntegerTy
FunctionTy
PointerTy
StructTy
ArrayTy
UnknownTy
MaxCanonicalType

Definition at line 281 of file IR2Vec.h.

OperandKind

Operand kinds supported by IR2Vec Vocabulary.

Enumerator
FunctionID
PointerID
ConstantID
VariableID
MaxOperandKind

Definition at line 298 of file IR2Vec.h.

llvm::ir2vec::Vocabulary::Vocabulary ( ) default

Referenced by operator=(), operator=(), Vocabulary(), and Vocabulary().

Vocabulary() [2/4]

Vocabulary() [3/4]

Vocabulary() [4/4]

llvm::ir2vec::Vocabulary::Vocabulary ( Vocabulary && ) default

References Vocabulary().

begin()

const_iterator llvm::ir2vec::Vocabulary::begin ( ) const inline

cbegin()

const_iterator llvm::ir2vec::Vocabulary::cbegin ( ) const inline

cend()

const_iterator llvm::ir2vec::Vocabulary::cend ( ) const inline

createDummyVocabForTest()

end()

const_iterator llvm::ir2vec::Vocabulary::end ( ) const inline

getCanonicalSize()

constexpr size_t llvm::ir2vec::Vocabulary::getCanonicalSize ( ) inlinestaticconstexpr

Total number of entries (opcodes + canonicalized types + operand kinds + predicates)

Definition at line 341 of file IR2Vec.h.

getDimension()

getIndex() [1/4]

getIndex() [2/4]

getIndex() [3/4]

getIndex() [4/4]

getOperandKind()

getStringKey()

getVocabKeyForOpcode()

getVocabKeyForOperandKind()

LLVM_ABI StringRef llvm::ir2vec::Vocabulary::getVocabKeyForOperandKind ( OperandKind Kind) inlinestatic

getVocabKeyForPredicate()

getVocabKeyForTypeID()

invalidate()

isValid()

LLVM_ABI bool llvm::ir2vec::Vocabulary::isValid ( ) const inline

operator=() [1/2]

operator=() [2/2]

operator[]() [1/4]

operator[]() [2/4]

operator[]() [3/4]

operator[]() [4/4]

llvm::IR2VecVocabAnalysis

MaxCanonicalTypeIDs

unsigned llvm::ir2vec::Vocabulary::MaxCanonicalTypeIDs staticconstexpr

MaxOperandKinds

unsigned llvm::ir2vec::Vocabulary::MaxOperandKinds staticconstexpr

MaxPredicateKinds

unsigned llvm::ir2vec::Vocabulary::MaxPredicateKinds staticconstexpr

MaxTypeIDs

unsigned llvm::ir2vec::Vocabulary::MaxTypeIDs = Type::TypeID::TargetExtTyID + 1 staticconstexpr

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