LLVM
8.0.1
|
#include "MCTargetDesc/MipsABIFlagsSection.h"
#include "MCTargetDesc/MipsABIInfo.h"
#include "MCTargetDesc/MipsBaseInfo.h"
#include "MCTargetDesc/MipsMCExpr.h"
#include "MCTargetDesc/MipsMCTargetDesc.h"
#include "MipsTargetStreamer.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Triple.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCInstrDesc.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/MCParsedAsmOperand.h"
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
#include "llvm/MC/MCSectionELF.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/MCSymbolELF.h"
#include "llvm/MC/MCValue.h"
#include "llvm/MC/SubtargetFeature.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/SMLoc.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <memory>
#include <string>
#include <utility>
#include "MipsGenAsmMatcher.inc"
Go to the source code of this file.
Namespaces | |
llvm | |
This class represents lattice values for constants. | |
Macros | |
#define | DEBUG_TYPE "mips-asm-parser" |
#define | GET_ASSEMBLER_HEADER |
#define | GET_OPERAND_DIAGNOSTIC_TYPES |
#define | GET_REGISTER_MATCHER |
#define | GET_MATCHER_IMPLEMENTATION |
#define | GET_MNEMONIC_SPELL_CHECKER |
Functions | |
static const MCInstrDesc & | getInstDesc (unsigned Opcode) |
static bool | hasShortDelaySlot (MCInst &Inst) |
static const MCSymbol * | getSingleMCSymbol (const MCExpr *Expr) |
static unsigned | countMCSymbolRefExpr (const MCExpr *Expr) |
template<unsigned N> | |
static bool | isShiftedUIntAtAnyPosition (uint64_t x) |
Can the value be represented by a unsigned N-bit value and a shift left? More... | |
static unsigned | nextReg (unsigned Reg) |
static unsigned | getRegisterForMxtrDSP (MCInst &Inst, bool IsMFDSP) |
static unsigned | getRegisterForMxtrFP (MCInst &Inst, bool IsMFTC1) |
static unsigned | getRegisterForMxtrC0 (MCInst &Inst, bool IsMFTC0) |
static SMLoc | RefineErrorLoc (const SMLoc Loc, const OperandVector &Operands, uint64_t ErrorInfo) |
static std::string | MipsMnemonicSpellCheck (StringRef S, uint64_t FBS, unsigned VariantID=0) |
void | LLVMInitializeMipsAsmParser () |
Variables | |
cl::opt< bool > | EmitJalrReloc |
const MCInstrDesc | llvm::MipsInsts [] |
#define DEBUG_TYPE "mips-asm-parser" |
Definition at line 60 of file MipsAsmParser.cpp.
#define GET_ASSEMBLER_HEADER |
Definition at line 161 of file MipsAsmParser.cpp.
#define GET_MATCHER_IMPLEMENTATION |
Definition at line 8215 of file MipsAsmParser.cpp.
#define GET_MNEMONIC_SPELL_CHECKER |
Definition at line 8216 of file MipsAsmParser.cpp.
#define GET_OPERAND_DIAGNOSTIC_TYPES |
Definition at line 478 of file MipsAsmParser.cpp.
#define GET_REGISTER_MATCHER |
Definition at line 8214 of file MipsAsmParser.cpp.
Definition at line 1757 of file MipsAsmParser.cpp.
References llvm::MCInst::addOperand(), llvm::MipsABIInfo::ArePtrs64bit(), assert(), llvm::SmallVectorTemplateCommon< T >::back(), contains(), llvm::MipsMCExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCOperand::createExpr(), llvm::MCOperand::createReg(), llvm::MipsTargetStreamer::emitDirectiveSetNoReorder(), llvm::MipsTargetStreamer::emitDirectiveSetReorder(), llvm::MipsTargetStreamer::emitEmptyDelaySlot(), llvm::MipsTargetStreamer::emitGPRestore(), llvm::MCStreamer::EmitInstruction(), llvm::MCStreamer::EmitLabel(), llvm::MCStreamer::EmitRelocDirective(), llvm::MipsTargetStreamer::emitRRI(), llvm::MipsTargetStreamer::emitRRX(), llvm::Error, llvm::MCOperand::getExpr(), llvm::MCOperand::getImm(), getInstDesc(), llvm::MCExpr::getKind(), llvm::MCSymbolRefExpr::getKind(), llvm::MCInst::getNumOperands(), llvm::MCInstrDesc::getNumOperands(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), getRegClass(), getSingleMCSymbol(), llvm::MCTargetStreamer::getStreamer(), llvm::MCInstrDesc::hasDelaySlot(), hasShortDelaySlot(), llvm::MCInstrDesc::isBranch(), llvm::MCInstrDesc::isCall(), llvm::MCSymbol::isELF(), llvm::MCOperand::isExpr(), llvm::MCOperand::isImm(), llvm::MCSymbol::isInSection(), llvm::isInt< 16 >(), llvm::isInt< 8 >(), llvm::isIntN(), llvm::MipsII::IsPCRelativeLoad, llvm::MCOperand::isReg(), llvm::MCSymbol::isTemporary(), llvm::isUInt< 16 >(), llvm::ARM_MB::LD, LLVM_FALLTHROUGH, llvm::MCInstrDesc::mayLoad(), llvm::MCInstrDesc::mayStore(), llvm::MipsMCExpr::MEK_GOT, llvm::MipsMCExpr::MEK_GOT_CALL, llvm::MipsMCExpr::MEK_GOT_DISP, llvm::MipsMCExpr::MEK_LO, llvm::OffsetToAlignment(), llvm::MCOI::OPERAND_MEMORY, llvm::MCOI::OPERAND_UNKNOWN, llvm::MCOperandInfo::OperandType, llvm::MCInstrDesc::OpInfo, RA, llvm::AVRISD::ROL, llvm::AArch64_AM::ROR, llvm::ISD::SDIV, llvm::MCOperand::setImm(), llvm::MCInst::setLoc(), llvm::MCInst::setOpcode(), llvm::MipsTargetStreamer::setUsesMicroMips(), llvm::ELF::STB_LOCAL, llvm::MCExpr::SymbolRef, llvm::MCInstrDesc::TSFlags, llvm::ISD::UDIV, llvm::MipsTargetStreamer::updateABIInfo(), llvm::MCSymbolRefExpr::VK_None, and llvm::Warning.
|
static |
Definition at line 1707 of file MipsAsmParser.cpp.
References llvm::MipsInsts.
Referenced by countMCSymbolRefExpr(), getRegisterForMxtrC0(), and nextReg().
Definition at line 5033 of file MipsAsmParser.cpp.
References assert(), llvm::MipsTargetStreamer::emitRRIII(), llvm::MCOperand::getImm(), getInstDesc(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), getRegisterForMxtrDSP(), getRegisterForMxtrFP(), llvm::MipsII::HasFCCRegOperand, llvm::MCOperand::isImm(), LLVM_FALLTHROUGH, llvm_unreachable, RA, Size, T1, and llvm::X86II::T8.
Definition at line 4940 of file MipsAsmParser.cpp.
References llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm_unreachable, and T1.
Referenced by getRegisterForMxtrC0().
Definition at line 4994 of file MipsAsmParser.cpp.
References llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm_unreachable, RA, T1, and llvm::X86II::T8.
Referenced by getRegisterForMxtrC0().
Definition at line 1733 of file MipsAsmParser.cpp.
Referenced by countMCSymbolRefExpr().
Definition at line 1711 of file MipsAsmParser.cpp.
References llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), and llvm::MCOperand::isReg().
Referenced by countMCSymbolRefExpr(), and llvm::MipsTargetStreamer::setPic().
|
static |
Can the value be represented by a unsigned N-bit value and a shift left?
Definition at line 2617 of file MipsAsmParser.cpp.
References llvm::MipsABIInfo::ArePtrs64bit(), assert(), llvm::tgtok::Bits, llvm::MipsMCExpr::create(), llvm::MCConstantExpr::create(), llvm::MCOperand::createExpr(), llvm::MipsTargetStreamer::emitDSLL(), llvm::MipsTargetStreamer::emitRI(), llvm::MipsTargetStreamer::emitRRI(), llvm::MipsTargetStreamer::emitRRR(), llvm::MipsTargetStreamer::emitRRX(), llvm::MipsTargetStreamer::emitRX(), llvm::Error, llvm::MCExpr::evaluateAsRelocatable(), llvm::findFirstSet(), llvm::findLastSet(), llvm::MCValue::getConstant(), llvm::MCOperand::getExpr(), llvm::MipsABIInfo::GetGlobalPtr(), llvm::MCOperand::getImm(), llvm::MipsABIInfo::GetNullPtr(), llvm::MCInst::getOperand(), llvm::MipsABIInfo::GetPtrAdduOp(), llvm::MCValue::getSymA(), llvm::MCValue::getSymB(), llvm::MCSymbolRefExpr::getSymbol(), llvm::MipsABIInfo::GetZeroReg(), llvm::MCSymbol::isELF(), llvm::MCOperand::isImm(), llvm::MCSymbol::isInSection(), llvm::isInt< 16 >(), llvm::isInt< 32 >(), llvm::MipsABIInfo::IsO32(), llvm::MCSymbol::isTemporary(), llvm::isUInt< 16 >(), llvm::isUInt< 32 >(), llvm::ARM_MB::LD, llvm::MipsMCExpr::MEK_GOT, llvm::MipsMCExpr::MEK_GOT_CALL, llvm::MipsMCExpr::MEK_GOT_DISP, llvm::MipsMCExpr::MEK_HI, llvm::MipsMCExpr::MEK_HIGHER, llvm::MipsMCExpr::MEK_HIGHEST, llvm::MipsMCExpr::MEK_LO, and llvm::ELF::STB_LOCAL.
void LLVMInitializeMipsAsmParser | ( | ) |
Definition at line 8207 of file MipsAsmParser.cpp.
References B, llvm::getTheMips64elTarget(), llvm::getTheMips64Target(), llvm::getTheMipselTarget(), llvm::getTheMipsTarget(), X, and Y.
|
static |
Referenced by RefineErrorLoc().
Definition at line 3154 of file MipsAsmParser.cpp.
References llvm::ISD::ADD, llvm::MCInst::addOperand(), llvm::ISD::AND, llvm::MipsABIInfo::ArePtrs64bit(), assert(), llvm::SmallVectorTemplateCommon< T >::back(), llvm::APFloat::bitcastToAPInt(), llvm::BitsToDouble(), llvm::MCInst::clear(), contains(), Context, llvm::MipsMCExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), llvm::MCContext::createTempSymbol(), llvm::MipsTargetStreamer::emitDSLL(), llvm::MipsTargetStreamer::emitEmptyDelaySlot(), llvm::MipsTargetStreamer::emitII(), llvm::MCStreamer::EmitInstruction(), llvm::MCStreamer::EmitLabel(), llvm::MipsTargetStreamer::emitLoadWithSymOffset(), llvm::MipsTargetStreamer::emitNop(), llvm::MipsTargetStreamer::emitR(), llvm::MipsTargetStreamer::emitRI(), llvm::MipsTargetStreamer::emitRR(), llvm::MipsTargetStreamer::emitRRI(), llvm::MipsTargetStreamer::emitRRR(), llvm::MipsTargetStreamer::emitRRX(), llvm::MipsTargetStreamer::emitRX(), llvm::MipsTargetStreamer::emitStoreWithSymOffset(), llvm::Error, llvm::FloatToBits(), llvm::MCStreamer::getContext(), llvm::MCOperand::getExpr(), llvm::MCOperand::getImm(), getInstDesc(), llvm::MCInst::getLoc(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm::MCTargetStreamer::getStreamer(), llvm::APInt::getZExtValue(), llvm::MCInstrDesc::hasDelaySlot(), llvm::APFloatBase::IEEEdouble(), llvm::MCOperand::isImm(), llvm::isInt< 16 >(), llvm::isInt< 32 >(), llvm::MCOperand::isReg(), llvm::isUInt< 16 >(), llvm::isUInt< 32 >(), llvm::ARM_MB::LD, llvm_unreachable, llvm::MipsISD::LWL, llvm::MipsISD::LWR, llvm::MipsMCExpr::MEK_GOT, llvm::MipsMCExpr::MEK_HI, llvm::MipsMCExpr::MEK_HIGHER, llvm::MipsMCExpr::MEK_HIGHEST, llvm::MipsMCExpr::MEK_LO, llvm::MipsISD::MFHI, llvm::MipsISD::MFLO, llvm::MipsISD::MULT, llvm::OffsetToAlignment(), llvm::MCInstrDesc::OpInfo, OR, RA, Reg, llvm::MCOperandInfo::RegClass, llvm::AVRISD::ROL, llvm::AArch64_AM::ROR, llvm::ISD::ROTR, llvm::ISD::SDIV, llvm::MCInst::setOpcode(), llvm::ELF::SHF_ALLOC, llvm::ELF::SHT_PROGBITS, Signed, llvm::ISD::SRA, llvm::ISD::SRL, llvm::ISD::SUB, std::swap(), llvm::MipsISD::SWL, llvm::MipsISD::SWR, T1, llvm::X86II::T8, llvm::ISD::UDIV, llvm::MCSymbolRefExpr::VK_None, llvm::Warning, and llvm::ISD::XOR.
Referenced by RefineErrorLoc().
|
static |
Definition at line 5298 of file MipsAsmParser.cpp.
References llvm::MCBinaryExpr::Add, llvm::MCInst::addOperand(), llvm::AsmToken::Amp, llvm::MCBinaryExpr::And, assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorTemplateCommon< T >::back(), llvm::MCExpr::Binary, llvm::AsmToken::Caret, llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Cases(), llvm::SmallVectorImpl< T >::clear(), llvm::AsmToken::Comma, llvm::MCExpr::Constant, llvm::MCConstantExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::create(), llvm::MCOperand::createReg(), llvm::dbgs(), llvm::StringSwitch< T, R >::Default(), llvm::MCBinaryExpr::Div, llvm::SourceMgr::DK_Warning, llvm::AsmToken::Dollar, llvm::StringRef::drop_front(), llvm::dyn_cast(), E, llvm::MCAsmParser::eatToEndOfStatement(), llvm::StringRef::empty(), llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::AsmToken::EndOfStatement, llvm::AsmToken::Equal, llvm::Error, llvm::StringMap< ValueTy, AllocatorTy >::find(), llvm::StringRef::front(), llvm::SmallVectorTemplateCommon< T >::front(), llvm::StringRef::getAsInteger(), llvm::SMLoc::getFromPointer(), llvm::AsmToken::getIdentifier(), llvm::AsmToken::getIntVal(), llvm::MCExpr::getKind(), llvm::AsmToken::getKind(), llvm::MCAsmParser::getLexer(), llvm::MCBinaryExpr::getLHS(), llvm::AsmToken::getLoc(), llvm::MCAsmLexer::getLoc(), llvm::AsmToken::getLocRange(), llvm::MCSymbol::getName(), llvm::MCInst::getOpcode(), llvm::SMLoc::getPointer(), getReg(), llvm::MCBinaryExpr::getRHS(), llvm::AsmToken::getString(), llvm::MCSymbolRefExpr::getSymbol(), llvm::MCAsmParser::getTok(), llvm::MCConstantExpr::getValue(), llvm::MCSymbol::getVariableValue(), llvm::AsmToken::GreaterGreater, llvm::AsmToken::Identifier, Info, llvm::AsmToken::Integer, llvm::tgtok::IntVal, llvm::AsmToken::is(), llvm::MCAsmLexer::is(), llvm::AsmToken::isNot(), llvm::MCAsmLexer::isNot(), llvm::MCSymbol::isUnset(), llvm::MCSymbol::isVariable(), llvm::AsmToken::LBrac, llvm::AsmToken::LessLess, llvm::MCAsmParser::Lex(), LLVM_DEBUG, llvm_unreachable, llvm::AsmToken::LParen, llvm::MCBinaryExpr::LShr, llvm::MatchOperand_NoMatch, llvm::MatchOperand_ParseFail, llvm::MatchOperand_Success, llvm::AsmToken::Minus, MipsMnemonicSpellCheck(), llvm::MCBinaryExpr::Mod, llvm::MCBinaryExpr::Mul, Name, nextReg(), op, llvm::MCBinaryExpr::Or, llvm::MCAsmParser::parseExpression(), llvm::MCAsmParser::parseIdentifier(), llvm::MCAsmLexer::peekTok(), llvm::AsmToken::Percent, llvm::AsmToken::Pipe, llvm::AsmToken::Plus, llvm::SmallVectorTemplateBase< T >::pop_back(), llvm::SmallVectorTemplateBase< T, bool >::pop_back(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), RA, llvm::AsmToken::RBrac, llvm::Ref, Reg, llvm::AsmToken::RParen, llvm::MipsABIFlagsSection::S32, llvm::MipsABIFlagsSection::S64, llvm::ARMBuildAttrs::Section, llvm::MCSubtargetInfo::setFeatureBits(), llvm::MCSymbol::setVariableValue(), llvm::ELF::SHF_ALLOC, llvm::ELF::SHF_MIPS_GPREL, llvm::ELF::SHF_WRITE, llvm::MCBinaryExpr::Shl, llvm::ELF::SHT_NOBITS, llvm::ELF::SHT_PROGBITS, llvm::SmallVectorBase::size(), llvm::AsmToken::Slash, llvm::AsmToken::Star, llvm::SMRange::Start, llvm::StringRef::startswith(), llvm::MCBinaryExpr::Sub, llvm::StringRef::substr(), llvm::AMDGPU::HSAMD::Kernel::Key::SymbolName, llvm::MCExpr::SymbolRef, llvm::MCExpr::Target, llvm::MCExpr::Unary, llvm::MCSymbolRefExpr::VK_None, llvm::Warning, llvm::MCBinaryExpr::Xor, and llvm::MipsABIFlagsSection::XX.