LLVM  3.7.0
Classes | Public Member Functions | Protected Attributes | List of all members
llvm::AArch64NamedImmMapper Struct Reference

Instances of this class can perform bidirectional mapping from random identifier strings to operand encodings. More...

#include <AArch64BaseInfo.h>

Inheritance diagram for llvm::AArch64NamedImmMapper:
[legend]
Collaboration diagram for llvm::AArch64NamedImmMapper:
[legend]

Classes

struct  Mapping
 

Public Member Functions

template<int N>
 AArch64NamedImmMapper (const Mapping(&Mappings)[N], uint32_t TooBigImm)
 
StringRef toString (uint32_t Value, const FeatureBitset &FeatureBits, bool &Valid) const
 
uint32_t fromString (StringRef Name, const FeatureBitset &FeatureBits, bool &Valid) const
 
bool validImm (uint32_t Value) const
 Many of the instructions allow an alternative assembly form consisting of a simple immediate. More...
 

Protected Attributes

const MappingMappings
 
size_t NumMappings
 
uint32_t TooBigImm
 

Detailed Description

Instances of this class can perform bidirectional mapping from random identifier strings to operand encodings.

For example "MSR" takes a named system-register which must be encoded somehow and decoded for printing. This central location means that the information for those transformations is not duplicated and remains in sync.

FIXME: currently the algorithm is a completely unoptimised linear search. Obviously this could be improved, but we would probably want to work out just how often these instructions are emitted before working on it. It might even be optimal to just reorder the tables for the common instructions rather than changing the algorithm.

Definition at line 280 of file AArch64BaseInfo.h.

Constructor & Destructor Documentation

template<int N>
llvm::AArch64NamedImmMapper::AArch64NamedImmMapper ( const Mapping(&)  Mappings[N],
uint32_t  TooBigImm 
)
inline

Definition at line 306 of file AArch64BaseInfo.h.

Member Function Documentation

uint32_t AArch64NamedImmMapper::fromString ( StringRef  Name,
const FeatureBitset FeatureBits,
bool Valid 
) const
StringRef AArch64NamedImmMapper::toString ( uint32_t  Value,
const FeatureBitset FeatureBits,
bool Valid 
) const
bool AArch64NamedImmMapper::validImm ( uint32_t  Value) const

Many of the instructions allow an alternative assembly form consisting of a simple immediate.

Currently the only valid forms are ranges [0, N) where N being 0 indicates no immediate syntax-form is allowed.

Definition at line 48 of file AArch64BaseInfo.cpp.

References TooBigImm.

Member Data Documentation

const Mapping* llvm::AArch64NamedImmMapper::Mappings
protected

Definition at line 321 of file AArch64BaseInfo.h.

Referenced by fromString(), and toString().

size_t llvm::AArch64NamedImmMapper::NumMappings
protected

Definition at line 322 of file AArch64BaseInfo.h.

Referenced by fromString(), and toString().

uint32_t llvm::AArch64NamedImmMapper::TooBigImm
protected

Definition at line 323 of file AArch64BaseInfo.h.

Referenced by validImm().


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