LLVM 20.0.0git
|
X86Operand - Instances of this class represent a parsed X86 machine instruction. More...
#include "Target/X86/AsmParser/X86Operand.h"
Classes | |
struct | ImmOp |
struct | MemOp |
struct | PrefOp |
struct | RegOp |
struct | TokOp |
Public Types | |
enum | KindTy { Token , Register , Immediate , Memory , Prefix , DXRegister } |
Public Member Functions | |
X86Operand (KindTy K, SMLoc Start, SMLoc End) | |
StringRef | getSymName () override |
void * | getOpDecl () override |
SMLoc | getStartLoc () const override |
getStartLoc - Get the location of the first token of this operand. | |
SMLoc | getEndLoc () const override |
getEndLoc - Get the location of the last token of this operand. | |
SMRange | getLocRange () const |
getLocRange - Get the range between the first and last token of this operand. | |
SMLoc | getOffsetOfLoc () const override |
getOffsetOfLoc - Get the location of the offset operator. | |
void | print (raw_ostream &OS) const override |
print - Print a debug representation of the operand to the given stream. | |
StringRef | getToken () const |
void | setTokenValue (StringRef Value) |
MCRegister | getReg () const override |
unsigned | getPrefix () const |
const MCExpr * | getImm () const |
const MCExpr * | getMemDisp () const |
MCRegister | getMemSegReg () const |
MCRegister | getMemBaseReg () const |
MCRegister | getMemDefaultBaseReg () const |
MCRegister | getMemIndexReg () const |
unsigned | getMemScale () const |
unsigned | getMemModeSize () const |
unsigned | getMemFrontendSize () const |
bool | isMaybeDirectBranchDest () const |
bool | isToken () const override |
isToken - Is this a token operand? | |
bool | isImm () const override |
isImm - Is this an immediate operand? | |
bool | isImmSExti16i8 () const |
bool | isImmSExti32i8 () const |
bool | isImmSExti64i8 () const |
bool | isImmSExti64i32 () const |
bool | isImmUnsignedi4 () const |
bool | isImmUnsignedi8 () const |
bool | isOffsetOfLocal () const override |
isOffsetOfLocal - Do we need to emit code to get the offset of the local variable, rather than its value? Only valid when parsing MS-style inline assembly. | |
bool | needAddressOf () const override |
needAddressOf - Do we need to emit code to get the address of the variable/label? Only valid when parsing MS-style inline assembly. | |
bool | isMem () const override |
isMem - Is this a memory operand? | |
bool | isMemUnsized () const |
bool | isMem8 () const |
bool | isMem16 () const |
bool | isMem32 () const |
bool | isMem64 () const |
bool | isMem80 () const |
bool | isMem128 () const |
bool | isMem256 () const |
bool | isMem512 () const |
bool | isSibMem () const |
bool | isMemIndexReg (unsigned LowR, unsigned HighR) const |
bool | isMem64_RC128 () const |
bool | isMem128_RC128 () const |
bool | isMem128_RC256 () const |
bool | isMem256_RC128 () const |
bool | isMem256_RC256 () const |
bool | isMem64_RC128X () const |
bool | isMem128_RC128X () const |
bool | isMem128_RC256X () const |
bool | isMem256_RC128X () const |
bool | isMem256_RC256X () const |
bool | isMem256_RC512 () const |
bool | isMem512_RC256X () const |
bool | isMem512_RC512 () const |
bool | isMem512_GR16 () const |
bool | isMem512_GR32 () const |
bool | isMem512_GR64 () const |
bool | isAbsMem () const |
bool | isAVX512RC () const |
bool | isAbsMem16 () const |
bool | isMemUseUpRegs () const override |
isMemUseUpRegs - Is memory operand use up regs, for example, intel MS inline asm may use ARR[baseReg + IndexReg + ...] which may use up regs in [...] expr, so ARR[baseReg + IndexReg + ...] can not use extra reg for ARR. | |
bool | isSrcIdx () const |
bool | isSrcIdx8 () const |
bool | isSrcIdx16 () const |
bool | isSrcIdx32 () const |
bool | isSrcIdx64 () const |
bool | isDstIdx () const |
bool | isDstIdx8 () const |
bool | isDstIdx16 () const |
bool | isDstIdx32 () const |
bool | isDstIdx64 () const |
bool | isMemOffs () const |
bool | isMemOffs16_8 () const |
bool | isMemOffs16_16 () const |
bool | isMemOffs16_32 () const |
bool | isMemOffs32_8 () const |
bool | isMemOffs32_16 () const |
bool | isMemOffs32_32 () const |
bool | isMemOffs32_64 () const |
bool | isMemOffs64_8 () const |
bool | isMemOffs64_16 () const |
bool | isMemOffs64_32 () const |
bool | isMemOffs64_64 () const |
bool | isPrefix () const |
bool | isReg () const override |
isReg - Is this a register operand? | |
bool | isDXReg () const |
bool | isGR32orGR64 () const |
bool | isGR16orGR32orGR64 () const |
bool | isVectorReg () const |
bool | isVK1Pair () const |
bool | isVK2Pair () const |
bool | isVK4Pair () const |
bool | isVK8Pair () const |
bool | isVK16Pair () const |
void | addExpr (MCInst &Inst, const MCExpr *Expr) const |
void | addRegOperands (MCInst &Inst, unsigned N) const |
void | addGR32orGR64Operands (MCInst &Inst, unsigned N) const |
void | addGR16orGR32orGR64Operands (MCInst &Inst, unsigned N) const |
void | addAVX512RCOperands (MCInst &Inst, unsigned N) const |
void | addImmOperands (MCInst &Inst, unsigned N) const |
void | addMaskPairOperands (MCInst &Inst, unsigned N) const |
bool | isTILEPair () const |
void | addTILEPairOperands (MCInst &Inst, unsigned N) const |
void | addMemOperands (MCInst &Inst, unsigned N) const |
void | addAbsMemOperands (MCInst &Inst, unsigned N) const |
void | addSrcIdxOperands (MCInst &Inst, unsigned N) const |
void | addDstIdxOperands (MCInst &Inst, unsigned N) const |
void | addMemOffsOperands (MCInst &Inst, unsigned N) const |
Public Member Functions inherited from llvm::MCParsedAsmOperand | |
virtual | ~MCParsedAsmOperand ()=default |
void | setConstraint (StringRef C) |
StringRef | getConstraint () |
void | setMCOperandNum (unsigned OpNum) |
unsigned | getMCOperandNum () |
virtual StringRef | getSymName () |
virtual void * | getOpDecl () |
virtual bool | isToken () const =0 |
isToken - Is this a token operand? | |
virtual bool | isImm () const =0 |
isImm - Is this an immediate operand? | |
virtual bool | isReg () const =0 |
isReg - Is this a register operand? | |
virtual MCRegister | getReg () const =0 |
virtual bool | isMem () const =0 |
isMem - Is this a memory operand? | |
virtual bool | isMemUseUpRegs () const |
isMemUseUpRegs - Is memory operand use up regs, for example, intel MS inline asm may use ARR[baseReg + IndexReg + ...] which may use up regs in [...] expr, so ARR[baseReg + IndexReg + ...] can not use extra reg for ARR. | |
virtual SMLoc | getStartLoc () const =0 |
getStartLoc - Get the location of the first token of this operand. | |
virtual SMLoc | getEndLoc () const =0 |
getEndLoc - Get the location of the last token of this operand. | |
virtual bool | needAddressOf () const |
needAddressOf - Do we need to emit code to get the address of the variable/label? Only valid when parsing MS-style inline assembly. | |
virtual bool | isOffsetOfLocal () const |
isOffsetOfLocal - Do we need to emit code to get the offset of the local variable, rather than its value? Only valid when parsing MS-style inline assembly. | |
virtual SMLoc | getOffsetOfLoc () const |
getOffsetOfLoc - Get the location of the offset operator. | |
virtual void | print (raw_ostream &OS) const =0 |
print - Print a debug representation of the operand to the given stream. | |
virtual void | dump () const |
dump - Print to the debug stream. | |
Static Public Member Functions | |
static std::unique_ptr< X86Operand > | CreateToken (StringRef Str, SMLoc Loc) |
static std::unique_ptr< X86Operand > | CreateReg (MCRegister Reg, SMLoc StartLoc, SMLoc EndLoc, bool AddressOf=false, SMLoc OffsetOfLoc=SMLoc(), StringRef SymName=StringRef(), void *OpDecl=nullptr) |
static std::unique_ptr< X86Operand > | CreateDXReg (SMLoc StartLoc, SMLoc EndLoc) |
static std::unique_ptr< X86Operand > | CreatePrefix (unsigned Prefixes, SMLoc StartLoc, SMLoc EndLoc) |
static std::unique_ptr< X86Operand > | CreateImm (const MCExpr *Val, SMLoc StartLoc, SMLoc EndLoc, StringRef SymName=StringRef(), void *OpDecl=nullptr, bool GlobalRef=true) |
static std::unique_ptr< X86Operand > | CreateMem (unsigned ModeSize, const MCExpr *Disp, SMLoc StartLoc, SMLoc EndLoc, unsigned Size=0, StringRef SymName=StringRef(), void *OpDecl=nullptr, unsigned FrontendSize=0, bool UseUpRegs=false, bool MaybeDirectBranchDest=true) |
Create an absolute memory operand. | |
static std::unique_ptr< X86Operand > | CreateMem (unsigned ModeSize, MCRegister SegReg, const MCExpr *Disp, MCRegister BaseReg, MCRegister IndexReg, unsigned Scale, SMLoc StartLoc, SMLoc EndLoc, unsigned Size=0, MCRegister DefaultBaseReg=MCRegister(), StringRef SymName=StringRef(), void *OpDecl=nullptr, unsigned FrontendSize=0, bool UseUpRegs=false, bool MaybeDirectBranchDest=true) |
Create a generalized memory operand. | |
Public Attributes | |
enum llvm::X86Operand::KindTy | Kind |
SMLoc | StartLoc |
SMLoc | EndLoc |
SMLoc | OffsetOfLoc |
StringRef | SymName |
void * | OpDecl |
bool | AddressOf |
bool | UseUpRegs = false |
This used for inline asm which may specify base reg and index reg for MemOp. | |
union { | |
struct TokOp Tok | |
struct RegOp Reg | |
struct ImmOp Imm | |
struct MemOp Mem | |
struct PrefOp Pref | |
}; | |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::MCParsedAsmOperand | |
MCParsedAsmOperand ()=default | |
MCParsedAsmOperand (const MCParsedAsmOperand &RHS)=default | |
MCParsedAsmOperand & | operator= (const MCParsedAsmOperand &)=default |
X86Operand - Instances of this class represent a parsed X86 machine instruction.
Definition at line 31 of file X86Operand.h.
Enumerator | |
---|---|
Token | |
Register | |
Immediate | |
Memory | |
Prefix | |
DXRegister |
Definition at line 32 of file X86Operand.h.
Definition at line 90 of file X86Operand.h.
Definition at line 669 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), getMemDisp(), and N.
Definition at line 684 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), getMemBaseReg(), and N.
Definition at line 562 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createExpr(), and llvm::MCOperand::createImm().
Referenced by addAVX512RCOperands(), addImmOperands(), and addMemOperands().
Definition at line 583 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), contains(), llvm::MCOperand::createReg(), getReg(), llvm::getX86SubSuperRegister(), and N.
Definition at line 575 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), contains(), llvm::MCOperand::createReg(), getReg(), llvm::getX86SubSuperRegister(), and N.
Definition at line 602 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), getReg(), N, and Reg.
Definition at line 689 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), getMemDisp(), getMemSegReg(), and N.
Definition at line 657 of file X86Operand.h.
References addExpr(), llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), getMemBaseReg(), getMemDefaultBaseReg(), getMemDisp(), getMemIndexReg(), getMemScale(), getMemSegReg(), and N.
Definition at line 570 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), getReg(), and N.
Definition at line 678 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), getMemBaseReg(), getMemSegReg(), and N.
Definition at line 631 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), getReg(), llvm_unreachable, N, and Reg.
|
inlinestatic |
Definition at line 721 of file X86Operand.h.
References DXRegister, EndLoc, and StartLoc.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Definition at line 726 of file X86Operand.h.
|
inlinestatic |
Definition at line 708 of file X86Operand.h.
References AddressOf, EndLoc, OffsetOfLoc, OpDecl, Reg, StartLoc, and SymName.
|
inlinestatic |
Definition at line 699 of file X86Operand.h.
References EndLoc, llvm::SMLoc::getFromPointer(), llvm::SMLoc::getPointer(), and Token.
|
inlineoverridevirtual |
getEndLoc - Get the location of the last token of this operand.
Implements llvm::MCParsedAsmOperand.
Definition at line 101 of file X86Operand.h.
References EndLoc.
Definition at line 180 of file X86Operand.h.
References assert(), Imm, Immediate, Kind, and llvm::X86Operand::ImmOp::Val.
Referenced by addAVX512RCOperands(), addImmOperands(), isImmSExti16i8(), isImmSExti32i8(), isImmSExti64i32(), isImmSExti64i8(), isImmUnsignedi4(), and isImmUnsignedi8().
|
inline |
getLocRange - Get the range between the first and last token of this operand.
Definition at line 105 of file X86Operand.h.
|
inline |
Definition at line 193 of file X86Operand.h.
References assert(), llvm::X86Operand::MemOp::BaseReg, Kind, and Mem.
Referenced by addDstIdxOperands(), addMemOperands(), addSrcIdxOperands(), isAbsMem(), isDstIdx(), isMem512_GR16(), isMem512_GR32(), isMem512_GR64(), isMemOffs(), and isSrcIdx().
|
inline |
Definition at line 197 of file X86Operand.h.
References assert(), llvm::X86Operand::MemOp::DefaultBaseReg, Kind, and Mem.
Referenced by addMemOperands().
Definition at line 185 of file X86Operand.h.
References assert(), llvm::X86Operand::MemOp::Disp, Kind, and Mem.
Referenced by addAbsMemOperands(), addMemOffsOperands(), addMemOperands(), isDstIdx(), and isSrcIdx().
|
inline |
Definition at line 213 of file X86Operand.h.
References assert(), llvm::X86Operand::MemOp::FrontendSize, Kind, and Mem.
|
inline |
Definition at line 201 of file X86Operand.h.
References assert(), llvm::X86Operand::MemOp::IndexReg, Kind, and Mem.
Referenced by addMemOperands(), isAbsMem(), isDstIdx(), isMem512_GR32(), isMem512_GR64(), isMemOffs(), and isSrcIdx().
|
inline |
Definition at line 209 of file X86Operand.h.
References assert(), Kind, Mem, and llvm::X86Operand::MemOp::ModeSize.
|
inline |
Definition at line 205 of file X86Operand.h.
References assert(), Kind, Mem, and llvm::X86Operand::MemOp::Scale.
Referenced by addMemOperands(), isAbsMem(), isDstIdx(), isMemOffs(), and isSrcIdx().
|
inline |
Definition at line 189 of file X86Operand.h.
References assert(), Kind, Mem, and llvm::X86Operand::MemOp::SegReg.
Referenced by addMemOffsOperands(), addMemOperands(), addSrcIdxOperands(), isAbsMem(), and isDstIdx().
|
inlineoverridevirtual |
getOffsetOfLoc - Get the location of the offset operator.
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 108 of file X86Operand.h.
References OffsetOfLoc.
|
inlineoverridevirtual |
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 95 of file X86Operand.h.
References OpDecl.
|
inline |
Definition at line 175 of file X86Operand.h.
References assert(), Kind, Pref, Prefix, and llvm::X86Operand::PrefOp::Prefixes.
|
inlineoverridevirtual |
Implements llvm::MCParsedAsmOperand.
Definition at line 170 of file X86Operand.h.
References assert(), Kind, Reg, and llvm::X86Operand::RegOp::RegNo.
Referenced by addGR16orGR32orGR64Operands(), addGR32orGR64Operands(), addMaskPairOperands(), addRegOperands(), addTILEPairOperands(), isGR16orGR32orGR64(), isGR32orGR64(), isTILEPair(), isVectorReg(), isVK16Pair(), isVK1Pair(), isVK2Pair(), isVK4Pair(), and isVK8Pair().
|
inlineoverridevirtual |
getStartLoc - Get the location of the first token of this operand.
Implements llvm::MCParsedAsmOperand.
Definition at line 98 of file X86Operand.h.
References StartLoc.
|
inlineoverridevirtual |
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 94 of file X86Operand.h.
References SymName.
|
inline |
Definition at line 160 of file X86Operand.h.
References assert(), llvm::X86Operand::TokOp::Data, Kind, llvm::X86Operand::TokOp::Length, Tok, and Token.
|
inline |
Definition at line 418 of file X86Operand.h.
References getMemBaseReg(), getMemIndexReg(), getMemScale(), getMemSegReg(), isMaybeDirectBranchDest(), and Kind.
Referenced by isAbsMem16().
|
inline |
Definition at line 427 of file X86Operand.h.
References isAbsMem(), Mem, and llvm::X86Operand::MemOp::ModeSize.
|
inline |
Definition at line 423 of file X86Operand.h.
References isImm().
|
inline |
Definition at line 452 of file X86Operand.h.
References getMemBaseReg(), getMemDisp(), getMemIndexReg(), getMemScale(), and getMemSegReg().
Referenced by isDstIdx16(), isDstIdx32(), isDstIdx64(), and isDstIdx8().
|
inline |
Definition at line 463 of file X86Operand.h.
References isDstIdx(), and isMem16().
|
inline |
Definition at line 466 of file X86Operand.h.
References isDstIdx(), and isMem32().
|
inline |
Definition at line 469 of file X86Operand.h.
References isDstIdx(), and isMem64().
|
inline |
Definition at line 460 of file X86Operand.h.
References isDstIdx(), and isMem8().
|
inline |
Definition at line 514 of file X86Operand.h.
References DXRegister, and Kind.
|
inline |
Definition at line 522 of file X86Operand.h.
|
inline |
Definition at line 516 of file X86Operand.h.
|
inlineoverridevirtual |
isImm - Is this an immediate operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 224 of file X86Operand.h.
References Immediate, and Kind.
Referenced by isAVX512RC(), isImmSExti16i8(), isImmSExti32i8(), isImmSExti64i32(), isImmSExti64i8(), isImmUnsignedi4(), isImmUnsignedi8(), and isOffsetOfLocal().
|
inline |
Definition at line 226 of file X86Operand.h.
References getImm(), isImm(), and llvm::isImmSExti16i8Value().
|
inline |
Definition at line 240 of file X86Operand.h.
References getImm(), isImm(), and llvm::isImmSExti32i8Value().
|
inline |
Definition at line 268 of file X86Operand.h.
References getImm(), isImm(), and llvm::isImmSExti64i32Value().
|
inline |
Definition at line 254 of file X86Operand.h.
References getImm(), isImm(), and llvm::isImmSExti64i8Value().
|
inline |
Definition at line 283 of file X86Operand.h.
References getImm(), isImm(), and llvm::isImmUnsignedi4Value().
|
inline |
Definition at line 292 of file X86Operand.h.
References getImm(), isImm(), and llvm::isImmUnsignedi8Value().
|
inline |
Definition at line 217 of file X86Operand.h.
References assert(), Kind, llvm::X86Operand::MemOp::MaybeDirectBranchDest, and Mem.
Referenced by isAbsMem().
|
inlineoverridevirtual |
isMem - Is this a memory operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 305 of file X86Operand.h.
Referenced by isSibMem().
|
inline |
Definition at line 324 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isMem128_RC128(), isMem128_RC128X(), isMem128_RC256(), and isMem128_RC256X().
|
inline |
Definition at line 346 of file X86Operand.h.
References isMem128(), and isMemIndexReg().
|
inline |
Definition at line 362 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem128(), llvm::X86II::isXMMReg(), and Mem.
|
inline |
Definition at line 349 of file X86Operand.h.
References isMem128(), and isMemIndexReg().
|
inline |
Definition at line 365 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem128(), llvm::X86II::isYMMReg(), and Mem.
|
inline |
Definition at line 312 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx16(), and isSrcIdx16().
|
inline |
Definition at line 327 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isMem256_RC128(), isMem256_RC128X(), isMem256_RC256(), isMem256_RC256X(), and isMem256_RC512().
|
inline |
Definition at line 352 of file X86Operand.h.
References isMem256(), and isMemIndexReg().
|
inline |
Definition at line 368 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem256(), llvm::X86II::isXMMReg(), and Mem.
|
inline |
Definition at line 355 of file X86Operand.h.
References isMem256(), and isMemIndexReg().
|
inline |
Definition at line 371 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem256(), llvm::X86II::isYMMReg(), and Mem.
|
inline |
Definition at line 374 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem256(), llvm::X86II::isZMMReg(), and Mem.
|
inline |
Definition at line 315 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx32(), and isSrcIdx32().
|
inline |
Definition at line 330 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isMem512_GR16(), isMem512_GR32(), isMem512_GR64(), isMem512_RC256X(), and isMem512_RC512().
|
inline |
Definition at line 383 of file X86Operand.h.
References contains(), getMemBaseReg(), and isMem512().
|
inline |
Definition at line 391 of file X86Operand.h.
References contains(), getMemBaseReg(), getMemIndexReg(), and isMem512().
|
inline |
Definition at line 404 of file X86Operand.h.
References contains(), getMemBaseReg(), getMemIndexReg(), and isMem512().
|
inline |
Definition at line 377 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem512(), llvm::X86II::isYMMReg(), and Mem.
|
inline |
Definition at line 380 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem512(), llvm::X86II::isZMMReg(), and Mem.
|
inline |
Definition at line 318 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx64(), isMem64_RC128(), isMem64_RC128X(), and isSrcIdx64().
|
inline |
Definition at line 343 of file X86Operand.h.
References isMem64(), and isMemIndexReg().
|
inline |
Definition at line 359 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, isMem64(), llvm::X86II::isXMMReg(), and Mem.
|
inline |
Definition at line 309 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx8(), and isSrcIdx8().
|
inline |
Definition at line 321 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Definition at line 338 of file X86Operand.h.
References assert(), llvm::X86Operand::MemOp::IndexReg, Kind, and Mem.
Referenced by isMem128_RC128(), isMem128_RC256(), isMem256_RC128(), isMem256_RC256(), and isMem64_RC128().
|
inline |
Definition at line 473 of file X86Operand.h.
References getMemBaseReg(), getMemIndexReg(), getMemScale(), and Kind.
Referenced by isMemOffs16_16(), isMemOffs16_32(), isMemOffs16_8(), isMemOffs32_16(), isMemOffs32_32(), isMemOffs32_64(), isMemOffs32_8(), isMemOffs64_16(), isMemOffs64_32(), isMemOffs64_64(), and isMemOffs64_8().
|
inline |
Definition at line 481 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 484 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 478 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 490 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 493 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 496 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 487 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 502 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 505 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 508 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 499 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 306 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inlineoverridevirtual |
isMemUseUpRegs - Is memory operand use up regs, for example, intel MS inline asm may use ARR[baseReg + IndexReg + ...] which may use up regs in [...] expr, so ARR[baseReg + IndexReg + ...] can not use extra reg for ARR.
For example, calculating ARR address to a reg or use another base reg in PIC model.
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 431 of file X86Operand.h.
References UseUpRegs.
|
inlineoverridevirtual |
isOffsetOfLocal - Do we need to emit code to get the offset of the local variable, rather than its value? Only valid when parsing MS-style inline assembly.
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 301 of file X86Operand.h.
References Imm, isImm(), and llvm::X86Operand::ImmOp::LocalRef.
|
inline |
Definition at line 512 of file X86Operand.h.
|
inlineoverridevirtual |
isReg - Is this a register operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 513 of file X86Operand.h.
|
inline |
Definition at line 334 of file X86Operand.h.
References llvm::X86Operand::MemOp::BaseReg, isMem(), and Mem.
|
inline |
Definition at line 433 of file X86Operand.h.
References getMemBaseReg(), getMemDisp(), getMemIndexReg(), and getMemScale().
Referenced by isSrcIdx16(), isSrcIdx32(), isSrcIdx64(), and isSrcIdx8().
|
inline |
Definition at line 442 of file X86Operand.h.
References isMem16(), and isSrcIdx().
|
inline |
Definition at line 445 of file X86Operand.h.
References isMem32(), and isSrcIdx().
|
inline |
Definition at line 448 of file X86Operand.h.
References isMem64(), and isSrcIdx().
|
inline |
Definition at line 439 of file X86Operand.h.
References isMem8(), and isSrcIdx().
|
inline |
Definition at line 626 of file X86Operand.h.
|
inlineoverridevirtual |
isToken - Is this a token operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 222 of file X86Operand.h.
|
inline |
Definition at line 529 of file X86Operand.h.
|
inline |
Definition at line 557 of file X86Operand.h.
|
inline |
Definition at line 537 of file X86Operand.h.
|
inline |
Definition at line 542 of file X86Operand.h.
|
inline |
Definition at line 547 of file X86Operand.h.
|
inline |
Definition at line 552 of file X86Operand.h.
|
inlineoverridevirtual |
needAddressOf - Do we need to emit code to get the address of the variable/label? Only valid when parsing MS-style inline assembly.
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 303 of file X86Operand.h.
References AddressOf.
|
inlineoverridevirtual |
print - Print a debug representation of the operand to the given stream.
Implements llvm::MCParsedAsmOperand.
Definition at line 110 of file X86Operand.h.
References llvm::X86Operand::MemOp::BaseReg, llvm::MCExpr::Constant, llvm::X86Operand::TokOp::Data, llvm::X86Operand::MemOp::Disp, DXRegister, llvm::MCExpr::getKind(), llvm::X86IntelInstPrinter::getRegisterName(), Imm, Immediate, llvm::X86Operand::MemOp::IndexReg, Kind, Mem, Memory, llvm::X86Operand::MemOp::ModeSize, OS, Pref, Prefix, llvm::X86Operand::PrefOp::Prefixes, Reg, Register, llvm::X86Operand::RegOp::RegNo, llvm::X86Operand::MemOp::Scale, llvm::X86Operand::MemOp::SegReg, llvm::X86Operand::MemOp::Size, Sym, llvm::MCExpr::SymbolRef, Tok, Token, and llvm::X86Operand::ImmOp::Val.
|
inline |
Definition at line 164 of file X86Operand.h.
References assert(), llvm::X86Operand::TokOp::Data, Kind, llvm::X86Operand::TokOp::Length, Tok, and Token.
union { ... } llvm::X86Operand::@651 |
bool llvm::X86Operand::AddressOf |
Definition at line 38 of file X86Operand.h.
Referenced by CreateReg(), and needAddressOf().
SMLoc llvm::X86Operand::EndLoc |
Definition at line 34 of file X86Operand.h.
Referenced by CreateDXReg(), CreateImm(), CreateMem(), CreatePrefix(), CreateReg(), CreateToken(), getEndLoc(), and getLocRange().
struct ImmOp llvm::X86Operand::Imm |
Definition at line 85 of file X86Operand.h.
Referenced by getImm(), isOffsetOfLocal(), and print().
enum llvm::X86Operand::KindTy llvm::X86Operand::Kind |
Referenced by getImm(), getMemBaseReg(), getMemDefaultBaseReg(), getMemDisp(), getMemFrontendSize(), getMemIndexReg(), getMemModeSize(), getMemScale(), getMemSegReg(), getPrefix(), getReg(), getToken(), isAbsMem(), isDXReg(), isGR16orGR32orGR64(), isGR32orGR64(), isImm(), isMaybeDirectBranchDest(), isMem(), isMem128(), isMem16(), isMem256(), isMem32(), isMem512(), isMem64(), isMem8(), isMem80(), isMemIndexReg(), isMemOffs(), isMemUnsized(), isPrefix(), isReg(), isTILEPair(), isToken(), isVectorReg(), isVK16Pair(), isVK1Pair(), isVK2Pair(), isVK4Pair(), isVK8Pair(), print(), and setTokenValue().
struct MemOp llvm::X86Operand::Mem |
Definition at line 86 of file X86Operand.h.
Referenced by getMemBaseReg(), getMemDefaultBaseReg(), getMemDisp(), getMemFrontendSize(), getMemIndexReg(), getMemModeSize(), getMemScale(), getMemSegReg(), isAbsMem16(), isMaybeDirectBranchDest(), isMem128(), isMem128_RC128X(), isMem128_RC256X(), isMem16(), isMem256(), isMem256_RC128X(), isMem256_RC256X(), isMem256_RC512(), isMem32(), isMem512(), isMem512_RC256X(), isMem512_RC512(), isMem64(), isMem64_RC128X(), isMem8(), isMem80(), isMemIndexReg(), isMemOffs16_16(), isMemOffs16_32(), isMemOffs16_8(), isMemOffs32_16(), isMemOffs32_32(), isMemOffs32_64(), isMemOffs32_8(), isMemOffs64_16(), isMemOffs64_32(), isMemOffs64_64(), isMemOffs64_8(), isMemUnsized(), isSibMem(), and print().
SMLoc llvm::X86Operand::OffsetOfLoc |
Definition at line 35 of file X86Operand.h.
Referenced by CreateReg(), and getOffsetOfLoc().
void* llvm::X86Operand::OpDecl |
Definition at line 37 of file X86Operand.h.
Referenced by CreateImm(), CreateMem(), CreateReg(), and getOpDecl().
struct PrefOp llvm::X86Operand::Pref |
Definition at line 87 of file X86Operand.h.
Referenced by getPrefix(), and print().
struct RegOp llvm::X86Operand::Reg |
Definition at line 84 of file X86Operand.h.
Referenced by addMaskPairOperands(), addTILEPairOperands(), CreateReg(), getReg(), and print().
SMLoc llvm::X86Operand::StartLoc |
Definition at line 34 of file X86Operand.h.
Referenced by CreateDXReg(), CreateImm(), CreateMem(), CreatePrefix(), CreateReg(), getLocRange(), and getStartLoc().
StringRef llvm::X86Operand::SymName |
Definition at line 36 of file X86Operand.h.
Referenced by CreateImm(), CreateMem(), CreateReg(), and getSymName().
struct TokOp llvm::X86Operand::Tok |
Definition at line 83 of file X86Operand.h.
Referenced by getToken(), print(), and setTokenValue().
bool llvm::X86Operand::UseUpRegs = false |
This used for inline asm which may specify base reg and index reg for MemOp.
e.g. ARR[eax + ecx*4], so no extra reg can be used for MemOp.
Definition at line 42 of file X86Operand.h.
Referenced by CreateMem(), and isMemUseUpRegs().