LLVM
8.0.1
|
#include "ARMFeatures.h"
#include "InstPrinter/ARMInstPrinter.h"
#include "Utils/ARMBaseInfo.h"
#include "MCTargetDesc/ARMAddressingModes.h"
#include "MCTargetDesc/ARMBaseInfo.h"
#include "MCTargetDesc/ARMMCExpr.h"
#include "MCTargetDesc/ARMMCTargetDesc.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/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/MCObjectFileInfo.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 | |
This class represents lattice values for constants. | |
Macros | |
#define | DEBUG_TYPE "asm-parser" |
#define | GET_OPERAND_DIAGNOSTIC_TYPES |
Auto-generated Match Functions | |
{ | |
#define | GET_ASSEMBLER_HEADER |
Enumerations | |
enum | ImplicitItModeTy |
enum | VectorLaneTy |
Functions | |
template<> | |
bool | llvm::IsCPSRDead< MCInst > (const MCInst *Instr) |
#define DEBUG_TYPE "asm-parser" |
Definition at line 68 of file ARMAsmParser.cpp.
#define GET_ASSEMBLER_HEADER |
Definition at line 521 of file ARMAsmParser.cpp.
#define GET_MATCHER_IMPLEMENTATION |
Definition at line 10371 of file ARMAsmParser.cpp.
#define GET_MNEMONIC_SPELL_CHECKER |
Definition at line 10372 of file ARMAsmParser.cpp.
#define GET_OPERAND_DIAGNOSTIC_TYPES |
Definition at line 577 of file ARMAsmParser.cpp.
#define GET_REGISTER_MATCHER |
Definition at line 10369 of file ARMAsmParser.cpp.
#define GET_SUBTARGET_FEATURE_NAME |
Definition at line 10370 of file ARMAsmParser.cpp.
|
strong |
Definition at line 74 of file ARMAsmParser.cpp.
enum VectorLaneTy |
Definition at line 91 of file ARMAsmParser.cpp.
|
static |
Referenced by doesIgnoreDataTypeSuffix().
|
static |
Referenced by llvm::IsCPSRDead< MCInst >().
|
static |
Definition at line 6312 of file ARMAsmParser.cpp.
References llvm::MCInst::getNumOperands(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), and llvm::isARMLowRegister().
Referenced by getRealVLDOpcode(), and instIsBreakpoint().
Definition at line 6009 of file ARMAsmParser.cpp.
References applyMnemonicAliases(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::MCRegisterClass::contains(), Features, llvm::AsmToken::getIdentifier(), llvm::MCRegisterClass::getRegister(), llvm::MCAsmParser::getTok(), llvm::GPR, llvm::AsmToken::Identifier, Info, llvm::SmallVectorImpl< T >::insert(), llvm::AsmToken::is(), isThumb(), MRI, llvm::SmallVectorBase::size(), and llvm::StringRef::startswith().
Definition at line 3735 of file ARMAsmParser.cpp.
References llvm::ARM_PROC::A, llvm::AsmToken::Caret, llvm::StringSwitch< T, R >::Case(), llvm::AsmToken::Comma, llvm::MCRegisterClass::contains(), contains(), llvm::ARM_TSB::CSYNC, llvm::StringSwitch< T, R >::Default(), llvm::AsmToken::Dollar, llvm::dyn_cast(), E, llvm::StringRef::equals_lower(), llvm::Error, llvm::ARM_PROC::F, llvm::AsmToken::getEndLoc(), llvm::AsmToken::getIntVal(), llvm::AsmToken::getLoc(), llvm::AsmToken::getString(), llvm::MCAsmParser::getTok(), llvm::MCConstantExpr::getValue(), llvm::AsmToken::Hash, llvm::ARM_PROC::I, llvm::AsmToken::Identifier, llvm::AsmToken::Integer, llvm::AsmToken::is(), llvm::ARM_MB::ISH, llvm::ARM_MB::ISHLD, llvm::ARM_MB::ISHST, llvm::AsmToken::isNot(), llvm::AsmToken::LBrac, llvm::AsmToken::LCurly, llvm::ARM_MB::LD, llvm::MCAsmParser::Lex(), llvm_unreachable, llvm::StringRef::lower(), llvm::BitmaskEnumDetail::Mask(), llvm::MatchOperand_NoMatch, llvm::MatchOperand_ParseFail, llvm::MatchOperand_Success, llvm::AsmToken::Minus, MRI, llvm::ARM_MB::NSH, llvm::ARM_MB::NSHLD, llvm::ARM_MB::NSHST, llvm::ARM_MB::OSH, llvm::ARM_MB::OSHLD, llvm::ARM_MB::OSHST, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), R2, R4, R6, llvm::AsmToken::RBrac, llvm::AsmToken::RCurly, Reg, llvm::ARM_MB::RESERVED_0, llvm::ARM_ISB::RESERVED_0, llvm::StringRef::size(), llvm::StringRef::slice(), llvm::ARM_MB::ST, llvm::StringRef::substr(), llvm::ARM_MB::SY, llvm::ARM_ISB::SY, and llvm::Warning.
Definition at line 7009 of file ARMAsmParser.cpp.
References llvm::MCInst::addOperand(), llvm::AArch64ISD::ADR, llvm::ARMCC::AL, llvm::ARM_AM::asr, assert(), llvm::MCInst::begin(), checkLowRegisterList(), llvm::MCConstantExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createAdd(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), llvm::MCStreamer::EmitLabel(), llvm::MCOperand::getExpr(), llvm::MCOperand::getImm(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), getRealVSTOpcode(), llvm::MCOperand::getReg(), llvm::ARM_AM::getSOImmVal(), llvm::ARM_AM::getSORegOffset(), llvm::ARM_AM::getSORegOpc(), llvm::ARM_AM::getSORegShOp(), llvm::ARM_AM::getT2SOImmVal(), llvm::getToken(), llvm::MCInstrDesc::hasOptionalDef(), I, llvm::MCInst::insert(), llvm::isARMLowRegister(), llvm::MCOperand::isExpr(), llvm::MCOperand::isImm(), llvm::MCOperandInfo::isOptionalDef(), isThumb(), llvm_unreachable, llvm::ARM_AM::lsl, llvm::ARM_AM::lsr, llvm::BitmaskEnumDetail::Mask(), llvm::MCInstrDesc::NumOperands, llvm::MCInstrDesc::OpInfo, llvm::MCOperandInfo::RegClass, llvm::ARM_AM::ror, llvm::ARM_AM::rotr32(), llvm::ARM_AM::rrx, llvm::MCOperand::setImm(), llvm::MCInst::setOpcode(), llvm::ARMII::ThumbArithFlagSetting, llvm::MCInstrDesc::TSFlags, and llvm::MCSymbolRefExpr::VK_None.
Definition at line 6900 of file ARMAsmParser.cpp.
References llvm_unreachable.
Referenced by getRealVLDOpcode().
Referenced by llvm::IsCPSRDead< MCInst >().
Definition at line 6340 of file ARMAsmParser.cpp.
References llvm::ARMCC::AL, llvm::ARMCondCodeToString(), llvm::SmallVectorTemplateCommon< T, typename >::back(), checkLowRegisterList(), llvm::dyn_cast(), E, llvm::Error, llvm::MCInstrDesc::findFirstPredOperandIdx(), llvm::MCOperand::getImm(), llvm::ARMMCExpr::getKind(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm::getToken(), I, llvm::X86II::Imm8, llvm::MCInstrDesc::isPredicable(), isThumb(), listContainsReg(), llvm::SPII::Load, llvm::BitmaskEnumDetail::Mask(), MRI, op, llvm::SmallVectorBase::size(), llvm::ARMMCExpr::VK_ARM_HI16, llvm::ARMMCExpr::VK_ARM_LO16, and llvm::Warning.
Definition at line 5997 of file ARMAsmParser.cpp.
Definition at line 6329 of file ARMAsmParser.cpp.
References llvm::MCInst::getNumOperands(), llvm::MCInst::getOperand(), and llvm::MCOperand::getReg().
Referenced by instIsBreakpoint().
void LLVMInitializeARMAsmParser | ( | ) |
Force static initialization.
Definition at line 10362 of file ARMAsmParser.cpp.
References B, llvm::getTheARMBETarget(), llvm::getTheARMLETarget(), llvm::getTheThumbBETarget(), llvm::getTheThumbLETarget(), X, and Y.
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 3596 of file ARMAsmParser.cpp.
References llvm::ARMCondCodeFromString(), llvm::StringRef::drop_front(), llvm::dyn_cast(), E, llvm::Error, llvm::AsmToken::getEndLoc(), llvm::AsmToken::getLoc(), llvm::AsmToken::getString(), llvm::MCAsmParser::getTok(), llvm::MCConstantExpr::getValue(), llvm::AsmToken::Identifier, llvm::AsmToken::is(), llvm::AsmToken::isNot(), llvm::AsmToken::LCurly, llvm::MCAsmParser::Lex(), llvm::MatchOperand_NoMatch, llvm::MatchOperand_ParseFail, llvm::MatchOperand_Success, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::AsmToken::RCurly, Reg, and llvm::StringRef::size().
const uint64_t ArchCheck |
Definition at line 10587 of file ARMAsmParser.cpp.
const { ... } Extensions[] |
Referenced by llvm::PassManagerBuilder::addExtension(), and llvm::PassManagerBuilder::populateModulePassManager().
const FeatureBitset Features |
Definition at line 10588 of file ARMAsmParser.cpp.
Referenced by llvm::lto::Config::addSaveTemps(), llvm::LTOCodeGenerator::compile(), llvm::TargetMachineBuilder::create(), llvm::Hexagon_MC::createHexagonMCSubtargetInfo(), doesIgnoreDataTypeSuffix(), llvm::MipsTargetStreamer::emitNop(), llvm::HexagonMCCodeEmitter::encodeInstruction(), ExpandCryptoAEK(), llvm::MipsTargetELFStreamer::finish(), llvm::object::ELFObjectFileBase::getARMFeatures(), getFeatures(), llvm::SubtargetFeatures::getFeatures(), llvm::NearMissInfo::getFeatures(), llvm::pdb::InfoStream::getHeader(), llvm::sys::detail::getHostCPUNameForBPF(), llvm::object::ELFObjectFileBase::getMIPSFeatures(), llvm::object::ELFObjectFileBase::getRISCVFeatures(), llvm::pdb::InfoStreamBuilder::getSignature(), getSpecialRegForName(), incrementLoc(), llvm::HexagonSubtarget::initializeSubtargetDependencies(), llvm::IsCPSRDead< MCInst >(), isThumbFunction(), LLVMGetHostCPUFeatures(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), parseBitcodeFileImpl(), llvm::RISCVTargetELFStreamer::RISCVTargetELFStreamer(), llvm::EngineBuilder::selectTarget(), and UsesVectorABI().
Definition at line 10586 of file ARMAsmParser.cpp.
Referenced by llvm::AttrBuilder::addAttribute(), llvm::CallBase::addDereferenceableOrNullAttr(), addForcedAttributes(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::SIScheduleBlock::addSucc(), llvm::AVRAsmBackend::adjustFixupValue(), llvm::ARMAsmBackend::adjustFixupValue(), adjustFixupValue(), llvm::DWARFDebugLine::LineTable::appendSequence(), llvm::MipsAsmBackend::applyFixup(), llvm::ARCMCInstLower::ARCMCInstLower(), llvm::ARMElfTargetObjectFile::ARMElfTargetObjectFile(), llvm::AVRAsmBackend::AVRAsmBackend(), llvm::CodeViewDebug::beginInstruction(), canGoAfterDWARF(), canUseLocalRelocation(), llvm::MCTargetAsmParser::checkTargetMatchPredicate(), llvm::combineMetadata(), llvm::SIInstrInfo::commuteOpcode(), convertGR16ToGR8(), llvm::pdb::SymbolCache::createGlobalsEnumerator(), llvm::createHexagonHardwareLoops(), llvm::createLVMissedAnalysis(), createRdxShuffleMask(), llvm::createRISCVMCCodeEmitter(), llvm::pdb::SymbolCache::createSymbol(), DeleteTriviallyDeadInstructions(), llvm::AsmToken::dump(), dumpRelocs(), llvm::ARMAsmPrinter::EmitConstantPool(), llvm::TargetLoweringObjectFile::emitModuleMetadata(), llvm::MCObjectStreamer::EmitRelocDirective(), llvm::AVRMCELFStreamer::EmitValueForModiferKind(), llvm::SystemZTTIImpl::enableInterleavedAccessVectorization(), llvm::HexagonTTIImpl::enableInterleavedAccessVectorization(), llvm::rdf::DeadCodeElimination::erase(), llvm::AVRMCExpr::evaluateAsRelocatableImpl(), llvm::TargetLowering::expandMUL(), extractBitsForFixup(), llvm::SourceMgr::FindLineNumber(), llvm::CodeViewYAML::detail::UnknownSymbolRecord::fromCodeViewSymbol(), FunctionNumber(), llvm::AttributeSetNode::get(), llvm::MCValue::getAccessVariant(), GetAEABIUnwindPersonalityName(), getARClassRegisterMask(), llvm::Argument::getArgNo(), getAttrFromCode(), getAttrKindEncoding(), llvm::objcarc::GetBasicARCInstKind(), llvm::AArch64RegisterInfo::getCSRFirstUseCost(), llvm::SIRegisterInfo::getCSRFirstUseCost(), llvm::TGLexer::getCurBinaryIntVal(), llvm::Check::FileCheckType::getDescription(), llvm::MCContext::getELFSection(), llvm::EnumAttributeImpl::getEnumKind(), llvm::NVPTXTargetObjectFile::getExplicitSectionGlobal(), llvm::MipsMCCodeEmitter::getExprOpValue(), llvm::NearMissInfo::getFeatures(), llvm::AVRMCExpr::getFixupKind(), llvm::MCAsmBackend::getFixupKindInfo(), getFixupKindLog2Size(), getFixupKindNumBytes(), llvm::HexagonFrameLowering::getFrameIndexReference(), llvm::DependenceInfo::getFunction(), getGNUBinOpPrecedence(), llvm::SIScheduleBlock::getID(), llvm::MCFragment::getKind(), llvm::MCSection::getKind(), llvm::coverage::Counter::getKind(), llvm::dwarf::FrameEntry::getKind(), llvm::DIContext::getKind(), llvm::SCEVPredicate::getKind(), llvm::NearMissInfo::getKind(), llvm::SMDiagnostic::getKind(), llvm::vfs::detail::InMemoryNode::getKind(), llvm::vfs::RedirectingFileSystem::Entry::getKind(), getLit64Encoding(), llvm::TGLexer::getLoc(), llvm::ARMTTIImpl::getMaxInterleaveFactor(), llvm::AVRMCExpr::getName(), llvm::rdf::DataFlowGraph::getNextShadow(), llvm::DWARFUnitHeader::getNextUnitOffset(), llvm::InstrProfRecord::getNumValueKinds(), llvm::NearMissInfo::getOpcode(), llvm::NearMissInfo::getOperandClass(), llvm::NearMissInfo::getOperandError(), llvm::NearMissInfo::getOperandIndex(), getOrInsertValueProfilingCall(), getPLTReloc(), llvm::MipsRegisterInfo::getPointerRegClass(), llvm::NearMissInfo::getPredicateError(), llvm::TargetLowering::getRecipEstimate(), getRelocType32(), llvm::TargetLoweringObjectFileCOFF::getSectionForJumpTable(), llvm::X86TTIImpl::getShuffleCost(), llvm::StringAttributeImpl::getStringKind(), getSubprogram(), llvm::GlobalValueSummary::getSummaryKind(), llvm::codeview::TypeTableCollection::getType(), llvm::SymbolRewriter::RewriteDescriptor::getType(), llvm::GCNTTIImpl::getVectorSplitCost(), getVFSEntries(), llvm::GlobalValueSummary::GVFlags::GVFlags(), handleFieldList(), llvm::AttributeImpl::hasAttribute(), llvm::AttributeSetNode::hasAttribute(), HasConditionalBranch(), llvm::Triple::hasDefaultEmulatedTLS(), llvm::DWARFDebugLine::LineTable::hasFileAtIndex(), llvm::AttributeListImpl::hasFnAttribute(), llvm::GlobalObject::hasMetadata(), llvm::ARMAsmBackend::hasNOP(), hasOnlyOneNonZeroIndex(), llvm::DomTreeUpdater::hasPendingDeletedBB(), HasSecRelSymbolRef(), llvm::HexagonMCCodeEmitter::HexagonMCCodeEmitter(), llvm::GCNRegPressure::inc(), incrementLoc(), llvm::XCoreMCInstLower::Initialize(), llvm::MipsMCInstLower::Initialize(), is_ns_word_char(), llvm::rdf::DataFlowGraph::IsCode(), isDbgValueDescribedByReg(), llvm::LanaiTargetObjectFile::isGlobalInSmallSection(), llvm::MipsTargetObjectFile::IsGlobalInSmallSection(), isImmValidForOpcode(), isIndirectBrTarget(), llvm::DWARFDie::isNULL(), llvm::rdf::DataFlowGraph::IsRef(), llvm::R600InstrInfo::isRegisterLoad(), llvm::FullDependence::isSplitable(), llvm::AttributeImpl::isStringAttribute(), llvm::CallInst::isTailCall(), isWeak(), llvm::PseudoSourceValue::kind(), llvm::ms_demangle::Node::kind(), loadObj(), llvm::SystemZMCInstLower::lowerOperand(), llvm::MipsMCInstLower::LowerOperand(), lowerSymbolOperand(), LowerSymbolOperand(), llvm::LanaiMCInstLower::LowerSymbolOperand(), makeCombineInst(), mapLeafRecordImpl(), mapMemberRecordImpl(), mapSymbolRecordImpl(), maybeLexSymbol(), maybePrintCallAddrSpace(), llvm::InstrProfRecord::merge(), llvm::MipsAsmBackend::MipsAsmBackend(), needsPCRel(), needsRuntimeRegistrationOfSectionRange(), llvm::NearMissInfo::operator bool(), llvm::Check::FileCheckType::operator FileCheckKind(), llvm::AttributeSet::operator!=(), llvm::rdf::operator<<(), llvm::opt::OptTable::OptTable(), llvm::CallBase::paramHasAttr(), parseAttrKind(), llvm::DWARFDebugLoclists::parseOneLocationList(), parseOptionalLinkageAux(), llvm::PPCTTIImpl::PPCTTIImpl(), printExpr(), llvm::AVRMCExpr::printImpl(), printMCExpr(), llvm::PrintMessage(), printNBits(), llvm::propagateMetadata(), raise_relocation_error(), llvm::codeview::readCVRecordFromStream(), readTriple(), llvm::xray::FunctionRecord::recordType(), llvm::MIRParserImpl::reportDiagnostic(), llvm::FaultMaps::reset(), llvm::MCAsmBackend::reset(), llvm::MIToken::reset(), resolveFwdRef(), llvm::SymbolRewriter::RewriteDescriptor::RewriteDescriptor(), llvm::InstrProfRecord::scale(), llvm::SDDbgValue::SDDbgValue(), selectI64Imm(), llvm::Check::FileCheckType::setCount(), llvm::MachineFrameInfo::setObjectSSPLayout(), setRequiredFeatureString(), shouldAlwaysEmitCompleteClassType(), shouldEmitUdt(), llvm::AArch64TTIImpl::shouldExpandReduction(), llvm::HexagonTargetObjectFile::shouldPutJumpTableInFunctionSection(), llvm::InstrProfRecord::sortValueData(), sumEdgeCount(), switchToSelect(), llvm::CodeViewYAML::detail::LeafRecordImpl< T >::toCodeViewRecord(), llvm::CodeViewYAML::detail::UnknownSymbolRecord::toCodeViewSymbol(), llvm::Twine::toNullTerminatedStringRef(), llvm::HexagonRegisterInfo::trackLivenessAfterRegAlloc(), truncateToSize(), tryToElideArgumentCopy(), unpackF64OnRV32DSoftABI(), UpdatePredRedefs(), llvm::codeview::CVRecord< TypeLeafKind >::valid(), llvm::DIContext::verify(), llvm::codeview::TypeDumpVisitor::visitMemberEnd(), llvm::codeview::visitMemberRecord(), writeRecordPrefix(), and llvm::X86TTIImpl::X86TTIImpl().