92 MCOp = GetSymbolRef(MO,
96 MCOp = GetSymbolRef(MO,
129 bool EncodeImms =
false;
159 if (MCOp.
isImm() && EncodeImms) {
174 MI.
emitError(
"An attempt to perform XRay instrumentation for a" 175 " Thumb function (not supported). Detected when emitting a sled.");
178 static const int8_t NoopsInSledCount = 6;
213 for (int8_t
I = 0;
I < NoopsInSledCount;
I++)
unsigned getTargetFlags() const
bool lowerOperand(const MachineOperand &MO, MCOperand &MCOp)
MachineBasicBlock * getMBB() const
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
void emitError(StringRef Msg) const
Emit an error referring to the source location of this instruction.
MCSymbol * GetExternalSymbolSymbol(StringRef Sym) const
Return the MCSymbol for the specified ExternalSymbol.
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
This class represents lattice values for constants.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
MCContext & OutContext
This is the context for the output file that we are streaming.
static MCOperand createExpr(const MCExpr *Val)
const MCSubtargetInfo & getSubtargetInfo() const
Return information about subtarget.
unsigned getReg() const
getReg - Returns the register number.
Address of indexed Jump Table for switch.
unsigned getSubReg() const
MachineBasicBlock reference.
void LowerPATCHABLE_FUNCTION_EXIT(const MachineInstr &MI)
iterator_range< mop_iterator > operands()
bool genExecuteOnly() const
Mask of preserved registers.
const ARMBaseInstrInfo * getInstrInfo() const override
void recordSled(MCSymbol *Sled, const MachineInstr &MI, SledKind Kind, uint8_t Version=0)
MO_SBREL - On a symbol operand, this represents a static base relative relocation.
static MCOperand createReg(unsigned Reg)
const ConstantFP * getFPImm() const
Base class for the full range of assembler expressions which are needed for parsing.
Name of external global symbol.
unsigned getOpcode() const
Returns the opcode of this MachineInstr.
const char * getSymbolName() const
static const ARMMCExpr * createLower16(const MCExpr *Expr, MCContext &Ctx)
opStatus convert(const fltSemantics &ToSemantics, roundingMode RM, bool *losesInfo)
static bool isThumbFunction(Function *F, Triple::ArchType ModuleArch)
MCSymbol * GetCPISymbol(unsigned CPID) const override
Return the symbol for the specified constant pool entry.
static const fltSemantics & IEEEdouble() LLVM_READNONE
static const MCBinaryExpr * createAdd(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
Instances of this class represent a single low-level machine instruction.
void LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI)
Address of a global value.
MCSymbol * createTempSymbol(bool CanBeUnnamed=true)
Create and return a new assembler temporary symbol with a unique but unspecified name.
This file contains the declarations for the subclasses of Constant, which represent the different fla...
const GlobalValue * getGlobal() const
double convertToDouble() const
This file declares a class to represent arbitrary precision floating point values and provide a varie...
Address of a basic block.
Ty * getInfo()
getInfo - Keep track of various per-function pieces of information for backends that would like to do...
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
MO_LO16 - On a symbol operand, this represents a relocation containing lower 16 bit of the address...
const APFloat & getValueAPF() const
void setOpcode(unsigned Op)
MCSymbol * GetBlockAddressSymbol(const BlockAddress *BA) const
Return the MCSymbol used to satisfy BlockAddress uses of the specified basic block.
int getSOImmVal(unsigned Arg)
getSOImmVal - Given a 32-bit immediate, if it is something that can fit into an shifter_operand immed...
bool isJTI() const
isJTI - Tests if this is a MO_JumpTableIndex operand.
MachineOperand class - Representation of each machine instruction operand.
void EmitToStreamer(MCStreamer &S, const MCInst &Inst)
static MCOperand createFPImm(double Val)
Target - Wrapper for Target specific information.
void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, ARMAsmPrinter &AP)
void LowerPATCHABLE_FUNCTION_ENTER(const MachineInstr &MI)
const MachineBasicBlock * getParent() const
Representation of each machine instruction.
const MachineFunction * getParent() const
Return the MachineFunction containing this basic block.
MCSymbol * GetJTISymbol(unsigned JTID, bool isLinkerPrivate=false) const
Return the symbol for the specified jump table entry.
ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific in...
int64_t getOffset() const
Return the offset from the symbol in this operand.
const BlockAddress * getBlockAddress() const
MCSymbol * getSymbol() const
Return the MCSymbol for this basic block.
static const ARMMCExpr * createUpper16(const MCExpr *Expr, MCContext &Ctx)
MO_OPTION_MASK - Most flags are mutually exclusive; this mask selects just that part of the flag set...
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Floating-point immediate operand.
void addOperand(const MCOperand &Op)
Address of indexed Constant in Constant Pool.
Instances of this class represent operands of the MCInst class.
MachineOperandType getType() const
getType - Returns the MachineOperandType for this operand.
static MCOperand createImm(int64_t Val)
static const MCConstantExpr * create(int64_t Value, MCContext &Ctx)
MO_HI16 - On a symbol operand, this represents a relocation containing higher 16 bit of the address...