LLVM  13.0.0git
Namespaces | Macros | Functions | Variables
ARMAsmParser.cpp File Reference
#include "ARMFeatures.h"
#include "ARMBaseInstrInfo.h"
#include "Utils/ARMBaseInfo.h"
#include "MCTargetDesc/ARMAddressingModes.h"
#include "MCTargetDesc/ARMBaseInfo.h"
#include "MCTargetDesc/ARMInstPrinter.h"
#include "MCTargetDesc/ARMMCExpr.h"
#include "MCTargetDesc/ARMMCTargetDesc.h"
#include "TargetInfo/ARMTargetInfo.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/None.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Triple.h"
#include "llvm/ADT/Twine.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCParser/MCAsmLexer.h"
#include "llvm/MC/MCParser/MCAsmParser.h"
#include "llvm/MC/MCParser/MCAsmParserExtension.h"
#include "llvm/MC/MCParser/MCAsmParserUtils.h"
#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSection.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/SubtargetFeature.h"
#include "llvm/Support/ARMBuildAttributes.h"
#include "llvm/Support/ARMEHABI.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/SMLoc.h"
#include "llvm/Support/TargetParser.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <limits>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "ARMGenAsmMatcher.inc"

Go to the source code of this file.

Namespaces

 llvm
 

Macros

#define DEBUG_TYPE   "asm-parser"
 
#define GET_OPERAND_DIAGNOSTIC_TYPES
 
Auto-generated Match Functions

{

#define GET_ASSEMBLER_HEADER
 

Functions

template<>
bool llvm::IsCPSRDead< MCInst > (const MCInst *Instr)
 

Variables

const MCInstrDesc llvm::ARMInsts []
 

Auto-generated Match Functions

{

#define GET_REGISTER_MATCHER
 
#define GET_SUBTARGET_FEATURE_NAME
 
#define GET_MATCHER_IMPLEMENTATION
 
#define GET_MNEMONIC_SPELL_CHECKER
 
static unsigned MatchRegisterName (StringRef Name)
 
static int MatchCoprocessorOperandName (StringRef Name, char CoprocOp)
 MatchCoprocessorOperandName - Try to parse an coprocessor related instruction with a symbolic operand name. More...
 
static unsigned getNextRegister (unsigned Reg)
 
static bool insertNoDuplicates (SmallVectorImpl< std::pair< unsigned, unsigned >> &Regs, unsigned Enc, unsigned Reg)
 
static bool isDataTypeToken (StringRef Tok)
 
static bool doesIgnoreDataTypeSuffix (StringRef Mnemonic, StringRef DT)
 
static void applyMnemonicAliases (StringRef &Mnemonic, const FeatureBitset &Features, unsigned VariantID)
 
static bool checkLowRegisterList (const MCInst &Inst, unsigned OpNo, unsigned Reg, unsigned HiReg, bool &containsReg)
 
static bool listContainsReg (const MCInst &Inst, unsigned OpNo, unsigned Reg)
 
static bool instIsBreakpoint (const MCInst &Inst)
 
static int findFirstVectorPredOperandIdx (const MCInstrDesc &MCID)
 
static bool isVectorPredicable (const MCInstrDesc &MCID)
 
static unsigned getRealVSTOpcode (unsigned Opc, unsigned &Spacing)
 
static unsigned getRealVLDOpcode (unsigned Opc, unsigned &Spacing)
 
static std::string ARMMnemonicSpellCheck (StringRef S, const FeatureBitset &FBS, unsigned VariantID=0)
 
static const char * getSubtargetFeatureName (uint64_t Val)
 
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARMAsmParser ()
 Force static initialization. More...
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "asm-parser"

Definition at line 69 of file ARMAsmParser.cpp.

◆ GET_ASSEMBLER_HEADER

#define GET_ASSEMBLER_HEADER

Definition at line 607 of file ARMAsmParser.cpp.

◆ GET_MATCHER_IMPLEMENTATION

#define GET_MATCHER_IMPLEMENTATION

Definition at line 12020 of file ARMAsmParser.cpp.

◆ GET_MNEMONIC_SPELL_CHECKER

#define GET_MNEMONIC_SPELL_CHECKER

Definition at line 12021 of file ARMAsmParser.cpp.

◆ GET_OPERAND_DIAGNOSTIC_TYPES

#define GET_OPERAND_DIAGNOSTIC_TYPES

Definition at line 665 of file ARMAsmParser.cpp.

◆ GET_REGISTER_MATCHER

#define GET_REGISTER_MATCHER

Definition at line 12018 of file ARMAsmParser.cpp.

◆ GET_SUBTARGET_FEATURE_NAME

#define GET_SUBTARGET_FEATURE_NAME

Definition at line 12019 of file ARMAsmParser.cpp.

Function Documentation

◆ applyMnemonicAliases()

static void applyMnemonicAliases ( StringRef Mnemonic,
const FeatureBitset Features,
unsigned  VariantID 
)
static

◆ ARMMnemonicSpellCheck()

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

◆ checkLowRegisterList()

static bool checkLowRegisterList ( const MCInst Inst,
unsigned  OpNo,
unsigned  Reg,
unsigned  HiReg,
bool &  containsReg 
)
static

◆ doesIgnoreDataTypeSuffix()

static bool doesIgnoreDataTypeSuffix ( StringRef  Mnemonic,
StringRef  DT 
)
static

Definition at line 6921 of file ARMAsmParser.cpp.

References llvm::StringRef::startswith().

◆ findFirstVectorPredOperandIdx()

static int findFirstVectorPredOperandIdx ( const MCInstrDesc MCID)
static

◆ getNextRegister()

static unsigned getNextRegister ( unsigned  Reg)
static

Definition at line 4428 of file ARMAsmParser.cpp.

References contains(), llvm_unreachable, R2, R4, R6, and Reg.

◆ getRealVLDOpcode()

static unsigned getRealVLDOpcode ( unsigned  Opc,
unsigned &  Spacing 
)
static

Definition at line 8511 of file ARMAsmParser.cpp.

References llvm_unreachable.

◆ getRealVSTOpcode()

static unsigned getRealVSTOpcode ( unsigned  Opc,
unsigned &  Spacing 
)
static

Definition at line 8402 of file ARMAsmParser.cpp.

References llvm_unreachable.

◆ getSubtargetFeatureName()

static const char* getSubtargetFeatureName ( uint64_t  Val)
static

◆ insertNoDuplicates()

static bool insertNoDuplicates ( SmallVectorImpl< std::pair< unsigned, unsigned >> &  Regs,
unsigned  Enc,
unsigned  Reg 
)
static

Definition at line 4450 of file ARMAsmParser.cpp.

References E, I, Reg, and std::swap().

◆ instIsBreakpoint()

static bool instIsBreakpoint ( const MCInst Inst)
static

Definition at line 7485 of file ARMAsmParser.cpp.

References llvm::MCInst::getOpcode().

◆ isDataTypeToken()

static bool isDataTypeToken ( StringRef  Tok)
static

Definition at line 6909 of file ARMAsmParser.cpp.

◆ isVectorPredicable()

static bool isVectorPredicable ( const MCInstrDesc MCID)
static

Definition at line 7598 of file ARMAsmParser.cpp.

References findFirstVectorPredOperandIdx().

◆ listContainsReg()

static bool listContainsReg ( const MCInst Inst,
unsigned  OpNo,
unsigned  Reg 
)
static

◆ LLVMInitializeARMAsmParser()

LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARMAsmParser ( )

Force static initialization.

Definition at line 12011 of file ARMAsmParser.cpp.

References B, llvm::getTheARMBETarget(), llvm::getTheARMLETarget(), llvm::getTheThumbBETarget(), llvm::getTheThumbLETarget(), X, and Y.

◆ MatchCoprocessorOperandName()

static int MatchCoprocessorOperandName ( StringRef  Name,
char  CoprocOp 
)
static

MatchCoprocessorOperandName - Try to parse an coprocessor related instruction with a symbolic operand name.

We accept "crN" syntax for GAS compatibility. <operand-name> ::= <prefix><number> If CoprocOp is 'c', then: <prefix> ::= c | cr If CoprocOp is 'p', then : <prefix> ::= p <number> ::= integer in range [0, 15]

Definition at line 4290 of file ARMAsmParser.cpp.

◆ MatchRegisterName()

static unsigned MatchRegisterName ( StringRef  Name)
static