|
LLVM
3.7.0
|
X86Operand - Instances of this class represent a parsed X86 machine instruction. More...
#include <X86Operand.h>
Classes | |
| struct | ImmOp |
| struct | MemOp |
| struct | RegOp |
| struct | TokOp |
Public Types | |
| enum | KindTy { Token, Register, Immediate, Memory } |
Static Public Member Functions | |
| static unsigned | getGR32FromGR64 (unsigned RegNo) |
| static std::unique_ptr < X86Operand > | CreateToken (StringRef Str, SMLoc Loc) |
| static std::unique_ptr < X86Operand > | CreateReg (unsigned RegNo, SMLoc StartLoc, SMLoc EndLoc, bool AddressOf=false, SMLoc OffsetOfLoc=SMLoc(), StringRef SymName=StringRef(), void *OpDecl=nullptr) |
| static std::unique_ptr < X86Operand > | CreateImm (const MCExpr *Val, SMLoc StartLoc, SMLoc EndLoc) |
| static std::unique_ptr < X86Operand > | CreateMem (unsigned ModeSize, const MCExpr *Disp, SMLoc StartLoc, SMLoc EndLoc, unsigned Size=0, StringRef SymName=StringRef(), void *OpDecl=nullptr) |
| Create an absolute memory operand. More... | |
| static std::unique_ptr < X86Operand > | CreateMem (unsigned ModeSize, unsigned SegReg, const MCExpr *Disp, unsigned BaseReg, unsigned IndexReg, unsigned Scale, SMLoc StartLoc, SMLoc EndLoc, unsigned Size=0, StringRef SymName=StringRef(), void *OpDecl=nullptr) |
| Create a generalized memory operand. More... | |
Public Attributes | |
| enum llvm::X86Operand::KindTy | Kind |
| SMLoc | StartLoc |
| SMLoc | EndLoc |
| SMLoc | OffsetOfLoc |
| StringRef | SymName |
| void * | OpDecl |
| bool | AddressOf |
| union { | |
| struct TokOp Tok | |
| struct RegOp Reg | |
| struct ImmOp Imm | |
| struct MemOp Mem | |
| }; | |
X86Operand - Instances of this class represent a parsed X86 machine instruction.
Definition at line 25 of file X86Operand.h.
| Enumerator | |
|---|---|
| Token | |
| Register | |
| Immediate | |
| Memory | |
Definition at line 26 of file X86Operand.h.
Definition at line 69 of file X86Operand.h.
Definition at line 437 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), and getMemDisp().
Definition at line 419 of file X86Operand.h.
Definition at line 451 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), and getMemBaseReg().
Definition at line 376 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createExpr(), and llvm::MCOperand::createImm().
Referenced by addAVX512RCOperands(), addImmOperands(), and addMemOperands().
Definition at line 412 of file X86Operand.h.
References llvm::MCInst::addOperand(), contains(), llvm::MCOperand::createReg(), getGR32FromGR64(), and getReg().
Definition at line 423 of file X86Operand.h.
Definition at line 456 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), getMemDisp(), and getMemSegReg().
Definition at line 428 of file X86Operand.h.
References addExpr(), llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), getMemBaseReg(), getMemDisp(), getMemIndexReg(), getMemScale(), and getMemSegReg().
Definition at line 384 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), and getReg().
Definition at line 446 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), getMemBaseReg(), and getMemSegReg().
|
inlinestatic |
Definition at line 487 of file X86Operand.h.
|
inlinestatic |
Definition at line 475 of file X86Operand.h.
References AddressOf, EndLoc, OffsetOfLoc, OpDecl, Register, StartLoc, and SymName.
|
inlinestatic |
Definition at line 466 of file X86Operand.h.
References llvm::StringRef::data(), EndLoc, llvm::SMLoc::getFromPointer(), llvm::SMLoc::getPointer(), llvm::StringRef::size(), and Token.
|
inlineoverridevirtual |
getEndLoc - Get the location of the last token of this operand.
Implements llvm::MCParsedAsmOperand.
Definition at line 78 of file X86Operand.h.
References EndLoc.
Definition at line 389 of file X86Operand.h.
References llvm::N86::EAX, llvm::N86::EBP, llvm::N86::EBX, llvm::N86::ECX, llvm::N86::EDI, llvm::N86::EDX, llvm::N86::ESI, llvm::N86::ESP, and llvm_unreachable.
Referenced by addGR32orGR64Operands().
Definition at line 102 of file X86Operand.h.
References Imm, Immediate, Kind, and llvm::X86Operand::ImmOp::Val.
Referenced by addAVX512RCOperands(), addImmOperands(), isImmSExti16i8(), isImmSExti32i8(), isImmSExti64i32(), isImmSExti64i8(), and isImmUnsignedi8().
|
inline |
getLocRange - Get the range between the first and last token of this operand.
Definition at line 81 of file X86Operand.h.
|
inline |
Definition at line 115 of file X86Operand.h.
References llvm::X86Operand::MemOp::BaseReg, Kind, and Mem.
Referenced by addDstIdxOperands(), addMemOperands(), addSrcIdxOperands(), isAbsMem(), isDstIdx(), isMemOffs(), and isSrcIdx().
Definition at line 107 of file X86Operand.h.
References llvm::X86Operand::MemOp::Disp, Kind, and Mem.
Referenced by addAbsMemOperands(), addMemOffsOperands(), addMemOperands(), isDstIdx(), and isSrcIdx().
|
inline |
Definition at line 119 of file X86Operand.h.
References llvm::X86Operand::MemOp::IndexReg, Kind, and Mem.
Referenced by addMemOperands(), isAbsMem(), isDstIdx(), isMemOffs(), isMemVX32(), isMemVX32X(), isMemVX64(), isMemVX64X(), isMemVY32(), isMemVY32X(), isMemVY64(), isMemVY64X(), isMemVZ32(), isMemVZ64(), and isSrcIdx().
|
inline |
Definition at line 127 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::ModeSize.
|
inline |
Definition at line 123 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Scale.
Referenced by addMemOperands(), isAbsMem(), isDstIdx(), isMemOffs(), and isSrcIdx().
|
inline |
Definition at line 111 of file X86Operand.h.
References 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 83 of file X86Operand.h.
References OffsetOfLoc.
|
inlineoverridevirtual |
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 73 of file X86Operand.h.
References OpDecl.
|
inlineoverridevirtual |
Implements llvm::MCParsedAsmOperand.
Definition at line 97 of file X86Operand.h.
References Kind, Reg, Register, and llvm::X86Operand::RegOp::RegNo.
Referenced by addGR32orGR64Operands(), addRegOperands(), and isGR32orGR64().
|
inlineoverridevirtual |
getStartLoc - Get the location of the first token of this operand.
Implements llvm::MCParsedAsmOperand.
Definition at line 76 of file X86Operand.h.
References StartLoc.
|
inlineoverridevirtual |
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 72 of file X86Operand.h.
References SymName.
|
inline |
Definition at line 87 of file X86Operand.h.
References llvm::X86Operand::TokOp::Data, Kind, llvm::X86Operand::TokOp::Length, Tok, and Token.
|
inline |
Definition at line 278 of file X86Operand.h.
References getMemBaseReg(), getMemIndexReg(), getMemScale(), getMemSegReg(), and Kind.
Referenced by isAbsMem16().
|
inline |
Definition at line 286 of file X86Operand.h.
References isAbsMem(), Mem, and llvm::X86Operand::MemOp::ModeSize.
|
inline |
Definition at line 282 of file X86Operand.h.
References isImm().
|
inline |
Definition at line 309 of file X86Operand.h.
References llvm::N86::EDI, getMemBaseReg(), getMemDisp(), getMemIndexReg(), getMemScale(), and getMemSegReg().
Referenced by isDstIdx16(), isDstIdx32(), isDstIdx64(), and isDstIdx8().
|
inline |
Definition at line 319 of file X86Operand.h.
References isDstIdx(), and isMem16().
|
inline |
Definition at line 322 of file X86Operand.h.
References isDstIdx(), and isMem32().
|
inline |
Definition at line 325 of file X86Operand.h.
References isDstIdx(), and isMem64().
|
inline |
Definition at line 316 of file X86Operand.h.
References isDstIdx(), and isMem8().
|
inline |
Definition at line 370 of file X86Operand.h.
|
inlineoverridevirtual |
isImm - Is this an immediate operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 134 of file X86Operand.h.
References Immediate, and Kind.
Referenced by isAVX512RC(), isImmSExti16i8(), isImmSExti32i8(), isImmSExti64i32(), isImmSExti64i8(), and isImmUnsignedi8().
|
inline |
Definition at line 136 of file X86Operand.h.
References llvm::dyn_cast(), getImm(), llvm::MCConstantExpr::getValue(), isImm(), and llvm::isImmSExti16i8Value().
|
inline |
Definition at line 150 of file X86Operand.h.
References llvm::dyn_cast(), getImm(), llvm::MCConstantExpr::getValue(), isImm(), and llvm::isImmSExti32i8Value().
|
inline |
Definition at line 178 of file X86Operand.h.
References llvm::dyn_cast(), getImm(), llvm::MCConstantExpr::getValue(), isImm(), and llvm::isImmSExti64i32Value().
|
inline |
Definition at line 164 of file X86Operand.h.
References llvm::dyn_cast(), getImm(), llvm::MCConstantExpr::getValue(), isImm(), and llvm::isImmSExti64i8Value().
|
inline |
Definition at line 193 of file X86Operand.h.
References llvm::dyn_cast(), getImm(), llvm::MCConstantExpr::getValue(), isImm(), and llvm::isImmUnsignedi8Value().
|
inlineoverridevirtual |
isMem - Is this a memory operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 208 of file X86Operand.h.
|
inline |
Definition at line 227 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 215 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx16(), and isSrcIdx16().
|
inline |
Definition at line 230 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 218 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx32(), and isSrcIdx32().
|
inline |
Definition at line 233 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 221 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx64(), and isSrcIdx64().
|
inline |
Definition at line 212 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx8(), and isSrcIdx8().
|
inline |
Definition at line 224 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 329 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 337 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 340 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 334 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 346 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 349 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 352 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 343 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 358 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 361 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 364 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 355 of file X86Operand.h.
References isMemOffs(), Mem, llvm::X86Operand::MemOp::ModeSize, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 209 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 237 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 241 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 253 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 257 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 245 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 249 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 261 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 265 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 269 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inline |
Definition at line 273 of file X86Operand.h.
References getMemIndexReg(), Kind, Mem, and llvm::X86Operand::MemOp::Size.
|
inlineoverridevirtual |
isOffsetOf - Do we need to emit code to get the offset of the variable, rather then the value of the variable? Only valid when parsing MS-style inline assembly.
Reimplemented from llvm::MCParsedAsmOperand.
Definition at line 200 of file X86Operand.h.
References llvm::SMLoc::getPointer(), and OffsetOfLoc.
|
inlineoverridevirtual |
isReg - Is this a register operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 368 of file X86Operand.h.
|
inline |
Definition at line 290 of file X86Operand.h.
References llvm::N86::ESI, getMemBaseReg(), getMemDisp(), getMemIndexReg(), getMemScale(), and SI.
Referenced by isSrcIdx16(), isSrcIdx32(), isSrcIdx64(), and isSrcIdx8().
|
inline |
Definition at line 299 of file X86Operand.h.
References isMem16(), and isSrcIdx().
|
inline |
Definition at line 302 of file X86Operand.h.
References isMem32(), and isSrcIdx().
|
inline |
Definition at line 305 of file X86Operand.h.
References isMem64(), and isSrcIdx().
|
inline |
Definition at line 296 of file X86Operand.h.
References isMem8(), and isSrcIdx().
|
inlineoverridevirtual |
isToken - Is this a token operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 132 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 204 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 85 of file X86Operand.h.
|
inline |
Definition at line 91 of file X86Operand.h.
References llvm::X86Operand::TokOp::Data, llvm::StringRef::data(), Kind, llvm::X86Operand::TokOp::Length, llvm::StringRef::size(), Tok, and Token.
| union { ... } |
| bool llvm::X86Operand::AddressOf |
Definition at line 37 of file X86Operand.h.
Referenced by CreateReg(), and needAddressOf().
| SMLoc llvm::X86Operand::EndLoc |
Definition at line 33 of file X86Operand.h.
Referenced by CreateImm(), CreateMem(), CreateReg(), CreateToken(), getEndLoc(), and getLocRange().
| struct ImmOp llvm::X86Operand::Imm |
Definition at line 65 of file X86Operand.h.
Referenced by getImm().
| enum llvm::X86Operand::KindTy llvm::X86Operand::Kind |
Referenced by getImm(), getMemBaseReg(), getMemDisp(), getMemIndexReg(), getMemModeSize(), getMemScale(), getMemSegReg(), getReg(), getToken(), isAbsMem(), isGR32orGR64(), isImm(), isMem(), isMem128(), isMem16(), isMem256(), isMem32(), isMem512(), isMem64(), isMem8(), isMem80(), isMemOffs(), isMemUnsized(), isMemVX32(), isMemVX32X(), isMemVX64(), isMemVX64X(), isMemVY32(), isMemVY32X(), isMemVY64(), isMemVY64X(), isMemVZ32(), isMemVZ64(), isReg(), isToken(), and setTokenValue().
| struct MemOp llvm::X86Operand::Mem |
Definition at line 66 of file X86Operand.h.
Referenced by getMemBaseReg(), getMemDisp(), getMemIndexReg(), getMemModeSize(), getMemScale(), getMemSegReg(), isAbsMem16(), isMem128(), isMem16(), isMem256(), isMem32(), isMem512(), isMem64(), isMem8(), isMem80(), isMemOffs16_16(), isMemOffs16_32(), isMemOffs16_8(), isMemOffs32_16(), isMemOffs32_32(), isMemOffs32_64(), isMemOffs32_8(), isMemOffs64_16(), isMemOffs64_32(), isMemOffs64_64(), isMemOffs64_8(), isMemUnsized(), isMemVX32(), isMemVX32X(), isMemVX64(), isMemVX64X(), isMemVY32(), isMemVY32X(), isMemVY64(), isMemVY64X(), isMemVZ32(), and isMemVZ64().
| SMLoc llvm::X86Operand::OffsetOfLoc |
Definition at line 34 of file X86Operand.h.
Referenced by CreateReg(), getOffsetOfLoc(), and isOffsetOf().
| void* llvm::X86Operand::OpDecl |
Definition at line 36 of file X86Operand.h.
Referenced by CreateMem(), CreateReg(), and getOpDecl().
| struct RegOp llvm::X86Operand::Reg |
Definition at line 64 of file X86Operand.h.
Referenced by getReg().
| SMLoc llvm::X86Operand::StartLoc |
Definition at line 33 of file X86Operand.h.
Referenced by CreateImm(), CreateMem(), CreateReg(), getLocRange(), and getStartLoc().
| StringRef llvm::X86Operand::SymName |
Definition at line 35 of file X86Operand.h.
Referenced by CreateMem(), CreateReg(), and getSymName().
| struct TokOp llvm::X86Operand::Tok |
Definition at line 63 of file X86Operand.h.
Referenced by getToken(), and setTokenValue().
1.8.6