LLVM 22.0.0git
AArch64AsmParser.cpp File Reference
#include "AArch64InstrInfo.h"
#include "MCTargetDesc/AArch64AddressingModes.h"
#include "MCTargetDesc/AArch64InstPrinter.h"
#include "MCTargetDesc/AArch64MCAsmInfo.h"
#include "MCTargetDesc/AArch64MCTargetDesc.h"
#include "MCTargetDesc/AArch64TargetStreamer.h"
#include "TargetInfo/AArch64TargetInfo.h"
#include "Utils/AArch64BaseInfo.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCLinkerOptimizationHint.h"
#include "llvm/MC/MCObjectFileInfo.h"
#include "llvm/MC/MCParser/AsmLexer.h"
#include "llvm/MC/MCParser/MCAsmParser.h"
#include "llvm/MC/MCParser/MCAsmParserExtension.h"
#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/MC/MCValue.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/AArch64BuildAttributes.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/SMLoc.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/AArch64TargetParser.h"
#include "llvm/TargetParser/SubtargetFeature.h"
#include <cassert>
#include <cctype>
#include <cstdint>
#include <cstdio>
#include <optional>
#include <string>
#include <tuple>
#include <utility>
#include <vector>
#include "AArch64GenAsmMatcher.inc"

Go to the source code of this file.

Classes

struct  Extension

Macros

#define GET_OPERAND_DIAGNOSTIC_TYPES
#define MATCH_HASH(N)
#define MATCH_HASH_MINUS(N)
Auto-generated Match Functions

{

#define GET_ASSEMBLER_HEADER

Auto-generated Match Functions

{

#define GET_REGISTER_MATCHER
#define GET_SUBTARGET_FEATURE_NAME
#define GET_MATCHER_IMPLEMENTATION
#define GET_MNEMONIC_SPELL_CHECKER
static const struct Extension ExtensionMap []
static MCRegister MatchRegisterName (StringRef Name)
static unsigned MatchNeonVectorRegName (StringRef Name)
 }
static std::optional< std::pair< int, int > > parseVectorKind (StringRef Suffix, RegKind VectorKind)
 Returns an optional pair of (#elements, element-width) if Suffix is a valid vector kind.
static bool isValidVectorKind (StringRef Suffix, RegKind VectorKind)
static unsigned matchSVEDataVectorRegName (StringRef Name)
static unsigned matchSVEPredicateVectorRegName (StringRef Name)
static unsigned matchSVEPredicateAsCounterRegName (StringRef Name)
static unsigned matchMatrixTileListRegName (StringRef Name)
static unsigned matchMatrixRegName (StringRef Name)
static void setRequiredFeatureString (FeatureBitset FBS, std::string &Str)
static bool isMatchingOrAlias (MCRegister ZReg, MCRegister Reg)
static std::string AArch64MnemonicSpellCheck (StringRef S, const FeatureBitset &FBS, unsigned VariantID=0)
static const chargetSubtargetFeatureName (uint64_t Val)
static void ExpandCryptoAEK (const AArch64::ArchInfo &ArchInfo, SmallVector< StringRef, 4 > &RequestedExtensions)
static SMLoc incrementLoc (SMLoc L, int Offset)
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64AsmParser ()
 Force static initialization.

Macro Definition Documentation

◆ GET_ASSEMBLER_HEADER

#define GET_ASSEMBLER_HEADER

Definition at line 249 of file AArch64AsmParser.cpp.

◆ GET_MATCHER_IMPLEMENTATION

#define GET_MATCHER_IMPLEMENTATION

Definition at line 8350 of file AArch64AsmParser.cpp.

◆ GET_MNEMONIC_SPELL_CHECKER

#define GET_MNEMONIC_SPELL_CHECKER

Definition at line 8351 of file AArch64AsmParser.cpp.

◆ GET_OPERAND_DIAGNOSTIC_TYPES

#define GET_OPERAND_DIAGNOSTIC_TYPES

Definition at line 303 of file AArch64AsmParser.cpp.

◆ GET_REGISTER_MATCHER

#define GET_REGISTER_MATCHER

Definition at line 8348 of file AArch64AsmParser.cpp.

◆ GET_SUBTARGET_FEATURE_NAME

#define GET_SUBTARGET_FEATURE_NAME

Definition at line 8349 of file AArch64AsmParser.cpp.

◆ MATCH_HASH

#define MATCH_HASH ( N)
Value:
case MCK__HASH_##N: \
return MatchesOpImmediate(N);
#define N

◆ MATCH_HASH_MINUS

#define MATCH_HASH_MINUS ( N)
Value:
case MCK__HASH__MINUS_##N: \
return MatchesOpImmediate(-N);

Function Documentation

◆ AArch64MnemonicSpellCheck()

std::string AArch64MnemonicSpellCheck ( StringRef S,
const FeatureBitset & FBS,
unsigned VariantID = 0 )
static

References Operands.

◆ ExpandCryptoAEK()

void ExpandCryptoAEK ( const AArch64::ArchInfo & ArchInfo,
SmallVector< StringRef, 4 > & RequestedExtensions )
static

◆ getSubtargetFeatureName()

const char * getSubtargetFeatureName ( uint64_t Val)
static

References Operands.

◆ incrementLoc()

SMLoc incrementLoc ( SMLoc L,
int Offset )
static

Definition at line 7173 of file AArch64AsmParser.cpp.

References llvm::SMLoc::getFromPointer(), and llvm::Offset.

◆ isMatchingOrAlias()

bool isMatchingOrAlias ( MCRegister ZReg,
MCRegister Reg )
inlinestatic

Definition at line 5380 of file AArch64AsmParser.cpp.

References assert(), and Reg.

◆ isValidVectorKind()

bool isValidVectorKind ( StringRef Suffix,
RegKind VectorKind )
static

Definition at line 2793 of file AArch64AsmParser.cpp.

References parseVectorKind().

◆ LLVMInitializeAArch64AsmParser()

◆ matchMatrixRegName()

unsigned matchMatrixRegName ( StringRef Name)
static

◆ matchMatrixTileListRegName()

unsigned matchMatrixTileListRegName ( StringRef Name)
static

◆ MatchNeonVectorRegName()

unsigned MatchNeonVectorRegName ( StringRef Name)
static

◆ MatchRegisterName()

◆ matchSVEDataVectorRegName()

unsigned matchSVEDataVectorRegName ( StringRef Name)
static

◆ matchSVEPredicateAsCounterRegName()

unsigned matchSVEPredicateAsCounterRegName ( StringRef Name)
static

◆ matchSVEPredicateVectorRegName()

unsigned matchSVEPredicateVectorRegName ( StringRef Name)
static

◆ parseVectorKind()

std::optional< std::pair< int, int > > parseVectorKind ( StringRef Suffix,
RegKind VectorKind )
static

Returns an optional pair of (#elements, element-width) if Suffix is a valid vector kind.

Where the number of elements in a vector or the vector width is implicit or explicitly unknown (but still a valid suffix kind), 0 is used.

Definition at line 2738 of file AArch64AsmParser.cpp.

References llvm::StringSwitch< T, R >::Case(), Default, llvm_unreachable, and llvm::StringRef::lower().

Referenced by isValidVectorKind().

◆ setRequiredFeatureString()

Variable Documentation

◆ ExtensionMap

const struct Extension ExtensionMap[]
static