LLVM 23.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/Enum.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.

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
constexpr EnumStringDef< FeatureBitsetExtensionDefs []
constexpr auto ExtensionMap = BUILD_ENUM_STRINGS(ExtensionDefs)
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 bool isMovPrfxable (unsigned TSFlags)
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 252 of file AArch64AsmParser.cpp.

◆ GET_MATCHER_IMPLEMENTATION

#define GET_MATCHER_IMPLEMENTATION

Definition at line 8415 of file AArch64AsmParser.cpp.

◆ GET_MNEMONIC_SPELL_CHECKER

#define GET_MNEMONIC_SPELL_CHECKER

Definition at line 8416 of file AArch64AsmParser.cpp.

◆ GET_OPERAND_DIAGNOSTIC_TYPES

#define GET_OPERAND_DIAGNOSTIC_TYPES

Definition at line 304 of file AArch64AsmParser.cpp.

◆ GET_REGISTER_MATCHER

#define GET_REGISTER_MATCHER

Definition at line 8413 of file AArch64AsmParser.cpp.

◆ GET_SUBTARGET_FEATURE_NAME

#define GET_SUBTARGET_FEATURE_NAME

Definition at line 8414 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

◆ ExpandCryptoAEK()

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

◆ getSubtargetFeatureName()

const char * getSubtargetFeatureName ( uint64_t Val)
static

◆ incrementLoc()

SMLoc incrementLoc ( SMLoc L,
int Offset )
static

Definition at line 7221 of file AArch64AsmParser.cpp.

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

◆ isMatchingOrAlias()

bool isMatchingOrAlias ( MCRegister ZReg,
MCRegister Reg )
inlinestatic

Definition at line 5404 of file AArch64AsmParser.cpp.

References assert(), and Reg.

◆ isMovPrfxable()

◆ isValidVectorKind()

bool isValidVectorKind ( StringRef Suffix,
RegKind VectorKind )
static

Definition at line 2721 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 2666 of file AArch64AsmParser.cpp.

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

Referenced by isValidVectorKind().

◆ setRequiredFeatureString()

Variable Documentation

◆ ExtensionDefs

EnumStringDef<FeatureBitset> ExtensionDefs[]
constexpr

Definition at line 3627 of file AArch64AsmParser.cpp.

◆ ExtensionMap

auto ExtensionMap = BUILD_ENUM_STRINGS(ExtensionDefs)
constexpr

Definition at line 3759 of file AArch64AsmParser.cpp.

Referenced by setRequiredFeatureString().