|
LLVM
4.0.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 | |
| }; | |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::MCParsedAsmOperand | |
| MCParsedAsmOperand (const MCParsedAsmOperand &RHS)=default | |
| MCParsedAsmOperand & | operator= (const MCParsedAsmOperand &)=default |
| MCParsedAsmOperand ()=default | |
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 440 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), and getMemDisp().
Definition at line 422 of file X86Operand.h.
Definition at line 454 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), and getMemBaseReg().
Definition at line 379 of file X86Operand.h.
References llvm::MCInst::addOperand(), llvm::MCOperand::createExpr(), and llvm::MCOperand::createImm().
Referenced by addAVX512RCOperands(), addImmOperands(), and addMemOperands().
Definition at line 415 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), contains(), llvm::MCOperand::createReg(), getGR32FromGR64(), and getReg().
Definition at line 426 of file X86Operand.h.
Definition at line 459 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), getMemDisp(), and getMemSegReg().
Definition at line 431 of file X86Operand.h.
References addExpr(), llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), getMemBaseReg(), getMemDisp(), getMemIndexReg(), getMemScale(), and getMemSegReg().
Definition at line 387 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), and getReg().
Definition at line 449 of file X86Operand.h.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createReg(), getMemBaseReg(), and getMemSegReg().
|
inlinestatic |
Definition at line 490 of file X86Operand.h.
|
inlinestatic |
Definition at line 478 of file X86Operand.h.
References AddressOf, EndLoc, OffsetOfLoc, OpDecl, Register, StartLoc, and SymName.
|
inlinestatic |
Definition at line 469 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 392 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 assert(), 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 assert(), 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 assert(), 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 assert(), llvm::X86Operand::MemOp::IndexReg, Kind, and Mem.
Referenced by addMemOperands(), isAbsMem(), isDstIdx(), isMemOffs(), and isSrcIdx().
|
inline |
Definition at line 127 of file X86Operand.h.
References assert(), Kind, Mem, and llvm::X86Operand::MemOp::ModeSize.
|
inline |
Definition at line 123 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 111 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 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 assert(), 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 assert(), llvm::X86Operand::TokOp::Data, Kind, llvm::X86Operand::TokOp::Length, Tok, and Token.
|
inline |
Definition at line 281 of file X86Operand.h.
References getMemBaseReg(), getMemIndexReg(), getMemScale(), getMemSegReg(), and Kind.
Referenced by isAbsMem16().
|
inline |
Definition at line 289 of file X86Operand.h.
References isAbsMem(), Mem, and llvm::X86Operand::MemOp::ModeSize.
|
inline |
Definition at line 285 of file X86Operand.h.
References isImm().
|
inline |
Definition at line 312 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 322 of file X86Operand.h.
References isDstIdx(), and isMem16().
|
inline |
Definition at line 325 of file X86Operand.h.
References isDstIdx(), and isMem32().
|
inline |
Definition at line 328 of file X86Operand.h.
References isDstIdx(), and isMem64().
|
inline |
Definition at line 319 of file X86Operand.h.
References isDstIdx(), and isMem8().
|
inline |
Definition at line 373 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 210 of file X86Operand.h.
|
inline |
Definition at line 229 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 246 of file X86Operand.h.
References isMem128(), and isMemIndexReg().
|
inline |
Definition at line 262 of file X86Operand.h.
References isMem128(), and isMemIndexReg().
|
inline |
Definition at line 249 of file X86Operand.h.
References isMem128(), and isMemIndexReg().
|
inline |
Definition at line 265 of file X86Operand.h.
References isMem128(), and isMemIndexReg().
|
inline |
Definition at line 217 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx16(), and isSrcIdx16().
|
inline |
Definition at line 232 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isMem256_RC128(), isMem256_RC128X(), isMem256_RC256(), and isMem256_RC256X().
|
inline |
Definition at line 252 of file X86Operand.h.
References isMem256(), and isMemIndexReg().
|
inline |
Definition at line 268 of file X86Operand.h.
References isMem256(), and isMemIndexReg().
|
inline |
Definition at line 255 of file X86Operand.h.
References isMem256(), and isMemIndexReg().
|
inline |
Definition at line 271 of file X86Operand.h.
References isMem256(), and isMemIndexReg().
|
inline |
Definition at line 220 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx32(), and isSrcIdx32().
|
inline |
Definition at line 235 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isMem512_RC256X(), and isMem512_RC512().
|
inline |
Definition at line 274 of file X86Operand.h.
References isMem512(), and isMemIndexReg().
|
inline |
Definition at line 277 of file X86Operand.h.
References isMem512(), and isMemIndexReg().
|
inline |
Definition at line 223 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 243 of file X86Operand.h.
References isMem64(), and isMemIndexReg().
|
inline |
Definition at line 259 of file X86Operand.h.
References isMem64(), and isMemIndexReg().
|
inline |
Definition at line 214 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Referenced by isDstIdx8(), and isSrcIdx8().
|
inline |
Definition at line 226 of file X86Operand.h.
References Kind, Mem, and llvm::X86Operand::MemOp::Size.
Definition at line 238 of file X86Operand.h.
References assert(), llvm::X86Operand::MemOp::IndexReg, Kind, and Mem.
Referenced by isMem128_RC128(), isMem128_RC128X(), isMem128_RC256(), isMem128_RC256X(), isMem256_RC128(), isMem256_RC128X(), isMem256_RC256(), isMem256_RC256X(), isMem512_RC256X(), isMem512_RC512(), isMem64_RC128(), and isMem64_RC128X().
|
inline |
Definition at line 332 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 340 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 337 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 355 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 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 367 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 211 of file X86Operand.h.
References 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 202 of file X86Operand.h.
References llvm::SMLoc::getPointer(), and OffsetOfLoc.
|
inlineoverridevirtual |
isReg - Is this a register operand?
Implements llvm::MCParsedAsmOperand.
Definition at line 371 of file X86Operand.h.
|
inline |
Definition at line 293 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 302 of file X86Operand.h.
References isMem16(), and isSrcIdx().
|
inline |
Definition at line 305 of file X86Operand.h.
References isMem32(), and isSrcIdx().
|
inline |
Definition at line 308 of file X86Operand.h.
References isMem64(), and isSrcIdx().
|
inline |
Definition at line 299 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 206 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 assert(), 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(), isMemIndexReg(), isMemOffs(), isMemUnsized(), 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(), isMemIndexReg(), isMemOffs16_16(), isMemOffs16_32(), isMemOffs16_8(), isMemOffs32_16(), isMemOffs32_32(), isMemOffs32_64(), isMemOffs32_8(), isMemOffs64_16(), isMemOffs64_32(), isMemOffs64_64(), isMemOffs64_8(), and isMemUnsized().
| 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