LLVM 20.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
llvm::X86Operand Struct Referencefinal

X86Operand - Instances of this class represent a parsed X86 machine instruction. More...

#include "Target/X86/AsmParser/X86Operand.h"

Inheritance diagram for llvm::X86Operand:
Inheritance graph
[legend]

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 MCExprgetImm () const
 
const MCExprgetMemDisp () 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< X86OperandCreateToken (StringRef Str, SMLoc Loc)
 
static std::unique_ptr< X86OperandCreateReg (MCRegister Reg, SMLoc StartLoc, SMLoc EndLoc, bool AddressOf=false, SMLoc OffsetOfLoc=SMLoc(), StringRef SymName=StringRef(), void *OpDecl=nullptr)
 
static std::unique_ptr< X86OperandCreateDXReg (SMLoc StartLoc, SMLoc EndLoc)
 
static std::unique_ptr< X86OperandCreatePrefix (unsigned Prefixes, SMLoc StartLoc, SMLoc EndLoc)
 
static std::unique_ptr< X86OperandCreateImm (const MCExpr *Val, SMLoc StartLoc, SMLoc EndLoc, StringRef SymName=StringRef(), void *OpDecl=nullptr, bool GlobalRef=true)
 
static std::unique_ptr< X86OperandCreateMem (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< X86OperandCreateMem (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
 
MCParsedAsmOperandoperator= (const MCParsedAsmOperand &)=default
 

Detailed Description

X86Operand - Instances of this class represent a parsed X86 machine instruction.

Definition at line 31 of file X86Operand.h.

Member Enumeration Documentation

◆ KindTy

Enumerator
Token 
Register 
Immediate 
Memory 
Prefix 
DXRegister 

Definition at line 32 of file X86Operand.h.

Constructor & Destructor Documentation

◆ X86Operand()

llvm::X86Operand::X86Operand ( KindTy  K,
SMLoc  Start,
SMLoc  End 
)
inline

Definition at line 90 of file X86Operand.h.

Member Function Documentation

◆ addAbsMemOperands()

void llvm::X86Operand::addAbsMemOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addAVX512RCOperands()

void llvm::X86Operand::addAVX512RCOperands ( MCInst Inst,
unsigned  N 
) const
inline

Definition at line 592 of file X86Operand.h.

References addExpr(), assert(), getImm(), and N.

◆ addDstIdxOperands()

void llvm::X86Operand::addDstIdxOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addExpr()

void llvm::X86Operand::addExpr ( MCInst Inst,
const MCExpr Expr 
) const
inline

◆ addGR16orGR32orGR64Operands()

void llvm::X86Operand::addGR16orGR32orGR64Operands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addGR32orGR64Operands()

void llvm::X86Operand::addGR32orGR64Operands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addImmOperands()

void llvm::X86Operand::addImmOperands ( MCInst Inst,
unsigned  N 
) const
inline

Definition at line 597 of file X86Operand.h.

References addExpr(), assert(), getImm(), and N.

◆ addMaskPairOperands()

void llvm::X86Operand::addMaskPairOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addMemOffsOperands()

void llvm::X86Operand::addMemOffsOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addMemOperands()

void llvm::X86Operand::addMemOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addRegOperands()

void llvm::X86Operand::addRegOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addSrcIdxOperands()

void llvm::X86Operand::addSrcIdxOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ addTILEPairOperands()

void llvm::X86Operand::addTILEPairOperands ( MCInst Inst,
unsigned  N 
) const
inline

◆ CreateDXReg()

static std::unique_ptr< X86Operand > llvm::X86Operand::CreateDXReg ( SMLoc  StartLoc,
SMLoc  EndLoc 
)
inlinestatic

Definition at line 721 of file X86Operand.h.

References DXRegister, EndLoc, and StartLoc.

◆ CreateImm()

static std::unique_ptr< X86Operand > llvm::X86Operand::CreateImm ( const MCExpr Val,
SMLoc  StartLoc,
SMLoc  EndLoc,
StringRef  SymName = StringRef(),
void *  OpDecl = nullptr,
bool  GlobalRef = true 
)
inlinestatic

Definition at line 732 of file X86Operand.h.

References EndLoc, Immediate, OpDecl, StartLoc, and SymName.

◆ CreateMem() [1/2]

static std::unique_ptr< X86Operand > llvm::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 
)
inlinestatic

Create an absolute memory operand.

Definition at line 748 of file X86Operand.h.

References EndLoc, OpDecl, Size, StartLoc, SymName, and UseUpRegs.

◆ CreateMem() [2/2]

static std::unique_ptr< X86Operand > llvm::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 
)
inlinestatic

Create a generalized memory operand.

Definition at line 772 of file X86Operand.h.

References assert(), EndLoc, OpDecl, Size, StartLoc, SymName, and UseUpRegs.

◆ CreatePrefix()

static std::unique_ptr< X86Operand > llvm::X86Operand::CreatePrefix ( unsigned  Prefixes,
SMLoc  StartLoc,
SMLoc  EndLoc 
)
inlinestatic

Definition at line 726 of file X86Operand.h.

References EndLoc, Prefix, and StartLoc.

◆ CreateReg()

static std::unique_ptr< X86Operand > llvm::X86Operand::CreateReg ( MCRegister  Reg,
SMLoc  StartLoc,
SMLoc  EndLoc,
bool  AddressOf = false,
SMLoc  OffsetOfLoc = SMLoc(),
StringRef  SymName = StringRef(),
void *  OpDecl = nullptr 
)
inlinestatic

Definition at line 708 of file X86Operand.h.

References AddressOf, EndLoc, OffsetOfLoc, OpDecl, Reg, StartLoc, and SymName.

◆ CreateToken()

static std::unique_ptr< X86Operand > llvm::X86Operand::CreateToken ( StringRef  Str,
SMLoc  Loc 
)
inlinestatic

Definition at line 699 of file X86Operand.h.

References EndLoc, llvm::SMLoc::getFromPointer(), llvm::SMLoc::getPointer(), and Token.

◆ getEndLoc()

SMLoc llvm::X86Operand::getEndLoc ( ) const
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.

◆ getImm()

const MCExpr * llvm::X86Operand::getImm ( ) const
inline

◆ getLocRange()

SMRange llvm::X86Operand::getLocRange ( ) const
inline

getLocRange - Get the range between the first and last token of this operand.

Definition at line 105 of file X86Operand.h.

References EndLoc, and StartLoc.

◆ getMemBaseReg()

MCRegister llvm::X86Operand::getMemBaseReg ( ) const
inline

◆ getMemDefaultBaseReg()

MCRegister llvm::X86Operand::getMemDefaultBaseReg ( ) const
inline

Definition at line 197 of file X86Operand.h.

References assert(), llvm::X86Operand::MemOp::DefaultBaseReg, Kind, and Mem.

Referenced by addMemOperands().

◆ getMemDisp()

const MCExpr * llvm::X86Operand::getMemDisp ( ) const
inline

◆ getMemFrontendSize()

unsigned llvm::X86Operand::getMemFrontendSize ( ) const
inline

Definition at line 213 of file X86Operand.h.

References assert(), llvm::X86Operand::MemOp::FrontendSize, Kind, and Mem.

◆ getMemIndexReg()

MCRegister llvm::X86Operand::getMemIndexReg ( ) const
inline

◆ getMemModeSize()

unsigned llvm::X86Operand::getMemModeSize ( ) const
inline

Definition at line 209 of file X86Operand.h.

References assert(), Kind, Mem, and llvm::X86Operand::MemOp::ModeSize.

◆ getMemScale()

unsigned llvm::X86Operand::getMemScale ( ) const
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().

◆ getMemSegReg()

MCRegister llvm::X86Operand::getMemSegReg ( ) const
inline

◆ getOffsetOfLoc()

SMLoc llvm::X86Operand::getOffsetOfLoc ( ) const
inlineoverridevirtual

getOffsetOfLoc - Get the location of the offset operator.

Reimplemented from llvm::MCParsedAsmOperand.

Definition at line 108 of file X86Operand.h.

References OffsetOfLoc.

◆ getOpDecl()

void * llvm::X86Operand::getOpDecl ( )
inlineoverridevirtual

Reimplemented from llvm::MCParsedAsmOperand.

Definition at line 95 of file X86Operand.h.

References OpDecl.

◆ getPrefix()

unsigned llvm::X86Operand::getPrefix ( ) const
inline

Definition at line 175 of file X86Operand.h.

References assert(), Kind, Pref, Prefix, and llvm::X86Operand::PrefOp::Prefixes.

◆ getReg()

MCRegister llvm::X86Operand::getReg ( ) const
inlineoverridevirtual

◆ getStartLoc()

SMLoc llvm::X86Operand::getStartLoc ( ) const
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.

◆ getSymName()

StringRef llvm::X86Operand::getSymName ( )
inlineoverridevirtual

Reimplemented from llvm::MCParsedAsmOperand.

Definition at line 94 of file X86Operand.h.

References SymName.

◆ getToken()

StringRef llvm::X86Operand::getToken ( ) const
inline

◆ isAbsMem()

bool llvm::X86Operand::isAbsMem ( ) const
inline

◆ isAbsMem16()

bool llvm::X86Operand::isAbsMem16 ( ) const
inline

Definition at line 427 of file X86Operand.h.

References isAbsMem(), Mem, and llvm::X86Operand::MemOp::ModeSize.

◆ isAVX512RC()

bool llvm::X86Operand::isAVX512RC ( ) const
inline

Definition at line 423 of file X86Operand.h.

References isImm().

◆ isDstIdx()

bool llvm::X86Operand::isDstIdx ( ) const
inline

◆ isDstIdx16()

bool llvm::X86Operand::isDstIdx16 ( ) const
inline

Definition at line 463 of file X86Operand.h.

References isDstIdx(), and isMem16().

◆ isDstIdx32()

bool llvm::X86Operand::isDstIdx32 ( ) const
inline

Definition at line 466 of file X86Operand.h.

References isDstIdx(), and isMem32().

◆ isDstIdx64()

bool llvm::X86Operand::isDstIdx64 ( ) const
inline

Definition at line 469 of file X86Operand.h.

References isDstIdx(), and isMem64().

◆ isDstIdx8()

bool llvm::X86Operand::isDstIdx8 ( ) const
inline

Definition at line 460 of file X86Operand.h.

References isDstIdx(), and isMem8().

◆ isDXReg()

bool llvm::X86Operand::isDXReg ( ) const
inline

Definition at line 514 of file X86Operand.h.

References DXRegister, and Kind.

◆ isGR16orGR32orGR64()

bool llvm::X86Operand::isGR16orGR32orGR64 ( ) const
inline

Definition at line 522 of file X86Operand.h.

References getReg(), and Kind.

◆ isGR32orGR64()

bool llvm::X86Operand::isGR32orGR64 ( ) const
inline

Definition at line 516 of file X86Operand.h.

References getReg(), and Kind.

◆ isImm()

bool llvm::X86Operand::isImm ( ) const
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().

◆ isImmSExti16i8()

bool llvm::X86Operand::isImmSExti16i8 ( ) const
inline

Definition at line 226 of file X86Operand.h.

References getImm(), isImm(), and llvm::isImmSExti16i8Value().

◆ isImmSExti32i8()

bool llvm::X86Operand::isImmSExti32i8 ( ) const
inline

Definition at line 240 of file X86Operand.h.

References getImm(), isImm(), and llvm::isImmSExti32i8Value().

◆ isImmSExti64i32()

bool llvm::X86Operand::isImmSExti64i32 ( ) const
inline

Definition at line 268 of file X86Operand.h.

References getImm(), isImm(), and llvm::isImmSExti64i32Value().

◆ isImmSExti64i8()

bool llvm::X86Operand::isImmSExti64i8 ( ) const
inline

Definition at line 254 of file X86Operand.h.

References getImm(), isImm(), and llvm::isImmSExti64i8Value().

◆ isImmUnsignedi4()

bool llvm::X86Operand::isImmUnsignedi4 ( ) const
inline

Definition at line 283 of file X86Operand.h.

References getImm(), isImm(), and llvm::isImmUnsignedi4Value().

◆ isImmUnsignedi8()

bool llvm::X86Operand::isImmUnsignedi8 ( ) const
inline

Definition at line 292 of file X86Operand.h.

References getImm(), isImm(), and llvm::isImmUnsignedi8Value().

◆ isMaybeDirectBranchDest()

bool llvm::X86Operand::isMaybeDirectBranchDest ( ) const
inline

Definition at line 217 of file X86Operand.h.

References assert(), Kind, llvm::X86Operand::MemOp::MaybeDirectBranchDest, and Mem.

Referenced by isAbsMem().

◆ isMem()

bool llvm::X86Operand::isMem ( ) const
inlineoverridevirtual

isMem - Is this a memory operand?

Implements llvm::MCParsedAsmOperand.

Definition at line 305 of file X86Operand.h.

References Kind, and Memory.

Referenced by isSibMem().

◆ isMem128()

bool llvm::X86Operand::isMem128 ( ) const
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().

◆ isMem128_RC128()

bool llvm::X86Operand::isMem128_RC128 ( ) const
inline

Definition at line 346 of file X86Operand.h.

References isMem128(), and isMemIndexReg().

◆ isMem128_RC128X()

bool llvm::X86Operand::isMem128_RC128X ( ) const
inline

◆ isMem128_RC256()

bool llvm::X86Operand::isMem128_RC256 ( ) const
inline

Definition at line 349 of file X86Operand.h.

References isMem128(), and isMemIndexReg().

◆ isMem128_RC256X()

bool llvm::X86Operand::isMem128_RC256X ( ) const
inline

◆ isMem16()

bool llvm::X86Operand::isMem16 ( ) const
inline

Definition at line 312 of file X86Operand.h.

References Kind, Mem, and llvm::X86Operand::MemOp::Size.

Referenced by isDstIdx16(), and isSrcIdx16().

◆ isMem256()

bool llvm::X86Operand::isMem256 ( ) const
inline

◆ isMem256_RC128()

bool llvm::X86Operand::isMem256_RC128 ( ) const
inline

Definition at line 352 of file X86Operand.h.

References isMem256(), and isMemIndexReg().

◆ isMem256_RC128X()

bool llvm::X86Operand::isMem256_RC128X ( ) const
inline

◆ isMem256_RC256()

bool llvm::X86Operand::isMem256_RC256 ( ) const
inline

Definition at line 355 of file X86Operand.h.

References isMem256(), and isMemIndexReg().

◆ isMem256_RC256X()

bool llvm::X86Operand::isMem256_RC256X ( ) const
inline

◆ isMem256_RC512()

bool llvm::X86Operand::isMem256_RC512 ( ) const
inline

◆ isMem32()

bool llvm::X86Operand::isMem32 ( ) const
inline

Definition at line 315 of file X86Operand.h.

References Kind, Mem, and llvm::X86Operand::MemOp::Size.

Referenced by isDstIdx32(), and isSrcIdx32().

◆ isMem512()

bool llvm::X86Operand::isMem512 ( ) const
inline

◆ isMem512_GR16()

bool llvm::X86Operand::isMem512_GR16 ( ) const
inline

Definition at line 383 of file X86Operand.h.

References contains(), getMemBaseReg(), and isMem512().

◆ isMem512_GR32()

bool llvm::X86Operand::isMem512_GR32 ( ) const
inline

Definition at line 391 of file X86Operand.h.

References contains(), getMemBaseReg(), getMemIndexReg(), and isMem512().

◆ isMem512_GR64()

bool llvm::X86Operand::isMem512_GR64 ( ) const
inline

Definition at line 404 of file X86Operand.h.

References contains(), getMemBaseReg(), getMemIndexReg(), and isMem512().

◆ isMem512_RC256X()

bool llvm::X86Operand::isMem512_RC256X ( ) const
inline

◆ isMem512_RC512()

bool llvm::X86Operand::isMem512_RC512 ( ) const
inline

◆ isMem64()

bool llvm::X86Operand::isMem64 ( ) const
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().

◆ isMem64_RC128()

bool llvm::X86Operand::isMem64_RC128 ( ) const
inline

Definition at line 343 of file X86Operand.h.

References isMem64(), and isMemIndexReg().

◆ isMem64_RC128X()

bool llvm::X86Operand::isMem64_RC128X ( ) const
inline

◆ isMem8()

bool llvm::X86Operand::isMem8 ( ) const
inline

Definition at line 309 of file X86Operand.h.

References Kind, Mem, and llvm::X86Operand::MemOp::Size.

Referenced by isDstIdx8(), and isSrcIdx8().

◆ isMem80()

bool llvm::X86Operand::isMem80 ( ) const
inline

Definition at line 321 of file X86Operand.h.

References Kind, Mem, and llvm::X86Operand::MemOp::Size.

◆ isMemIndexReg()

bool llvm::X86Operand::isMemIndexReg ( unsigned  LowR,
unsigned  HighR 
) const
inline

◆ isMemOffs()

bool llvm::X86Operand::isMemOffs ( ) const
inline

◆ isMemOffs16_16()

bool llvm::X86Operand::isMemOffs16_16 ( ) const
inline

◆ isMemOffs16_32()

bool llvm::X86Operand::isMemOffs16_32 ( ) const
inline

◆ isMemOffs16_8()

bool llvm::X86Operand::isMemOffs16_8 ( ) const
inline

◆ isMemOffs32_16()

bool llvm::X86Operand::isMemOffs32_16 ( ) const
inline

◆ isMemOffs32_32()

bool llvm::X86Operand::isMemOffs32_32 ( ) const
inline

◆ isMemOffs32_64()

bool llvm::X86Operand::isMemOffs32_64 ( ) const
inline

◆ isMemOffs32_8()

bool llvm::X86Operand::isMemOffs32_8 ( ) const
inline

◆ isMemOffs64_16()

bool llvm::X86Operand::isMemOffs64_16 ( ) const
inline

◆ isMemOffs64_32()

bool llvm::X86Operand::isMemOffs64_32 ( ) const
inline

◆ isMemOffs64_64()

bool llvm::X86Operand::isMemOffs64_64 ( ) const
inline

◆ isMemOffs64_8()

bool llvm::X86Operand::isMemOffs64_8 ( ) const
inline

◆ isMemUnsized()

bool llvm::X86Operand::isMemUnsized ( ) const
inline

Definition at line 306 of file X86Operand.h.

References Kind, Mem, and llvm::X86Operand::MemOp::Size.

◆ isMemUseUpRegs()

bool llvm::X86Operand::isMemUseUpRegs ( ) const
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.

◆ isOffsetOfLocal()

bool llvm::X86Operand::isOffsetOfLocal ( ) const
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.

◆ isPrefix()

bool llvm::X86Operand::isPrefix ( ) const
inline

Definition at line 512 of file X86Operand.h.

References Kind, and Prefix.

◆ isReg()

bool llvm::X86Operand::isReg ( ) const
inlineoverridevirtual

isReg - Is this a register operand?

Implements llvm::MCParsedAsmOperand.

Definition at line 513 of file X86Operand.h.

References Kind, and Register.

◆ isSibMem()

bool llvm::X86Operand::isSibMem ( ) const
inline

Definition at line 334 of file X86Operand.h.

References llvm::X86Operand::MemOp::BaseReg, isMem(), and Mem.

◆ isSrcIdx()

bool llvm::X86Operand::isSrcIdx ( ) const
inline

Definition at line 433 of file X86Operand.h.

References getMemBaseReg(), getMemDisp(), getMemIndexReg(), and getMemScale().

Referenced by isSrcIdx16(), isSrcIdx32(), isSrcIdx64(), and isSrcIdx8().

◆ isSrcIdx16()

bool llvm::X86Operand::isSrcIdx16 ( ) const
inline

Definition at line 442 of file X86Operand.h.

References isMem16(), and isSrcIdx().

◆ isSrcIdx32()

bool llvm::X86Operand::isSrcIdx32 ( ) const
inline

Definition at line 445 of file X86Operand.h.

References isMem32(), and isSrcIdx().

◆ isSrcIdx64()

bool llvm::X86Operand::isSrcIdx64 ( ) const
inline

Definition at line 448 of file X86Operand.h.

References isMem64(), and isSrcIdx().

◆ isSrcIdx8()

bool llvm::X86Operand::isSrcIdx8 ( ) const
inline

Definition at line 439 of file X86Operand.h.

References isMem8(), and isSrcIdx().

◆ isTILEPair()

bool llvm::X86Operand::isTILEPair ( ) const
inline

Definition at line 626 of file X86Operand.h.

References getReg(), and Kind.

◆ isToken()

bool llvm::X86Operand::isToken ( ) const
inlineoverridevirtual

isToken - Is this a token operand?

Implements llvm::MCParsedAsmOperand.

Definition at line 222 of file X86Operand.h.

References Kind, and Token.

◆ isVectorReg()

bool llvm::X86Operand::isVectorReg ( ) const
inline

Definition at line 529 of file X86Operand.h.

References getReg(), and Kind.

◆ isVK16Pair()

bool llvm::X86Operand::isVK16Pair ( ) const
inline

Definition at line 557 of file X86Operand.h.

References getReg(), and Kind.

◆ isVK1Pair()

bool llvm::X86Operand::isVK1Pair ( ) const
inline

Definition at line 537 of file X86Operand.h.

References getReg(), and Kind.

◆ isVK2Pair()

bool llvm::X86Operand::isVK2Pair ( ) const
inline

Definition at line 542 of file X86Operand.h.

References getReg(), and Kind.

◆ isVK4Pair()

bool llvm::X86Operand::isVK4Pair ( ) const
inline

Definition at line 547 of file X86Operand.h.

References getReg(), and Kind.

◆ isVK8Pair()

bool llvm::X86Operand::isVK8Pair ( ) const
inline

Definition at line 552 of file X86Operand.h.

References getReg(), and Kind.

◆ needAddressOf()

bool llvm::X86Operand::needAddressOf ( ) const
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.

◆ print()

void llvm::X86Operand::print ( raw_ostream OS) const
inlineoverridevirtual

◆ setTokenValue()

void llvm::X86Operand::setTokenValue ( StringRef  Value)
inline

Member Data Documentation

◆ 

union { ... } llvm::X86Operand::@651

◆ AddressOf

bool llvm::X86Operand::AddressOf

Definition at line 38 of file X86Operand.h.

Referenced by CreateReg(), and needAddressOf().

◆ EndLoc

SMLoc llvm::X86Operand::EndLoc

◆ Imm

struct ImmOp llvm::X86Operand::Imm

Definition at line 85 of file X86Operand.h.

Referenced by getImm(), isOffsetOfLocal(), and print().

◆ Kind

enum llvm::X86Operand::KindTy llvm::X86Operand::Kind

◆ Mem

struct MemOp llvm::X86Operand::Mem

◆ OffsetOfLoc

SMLoc llvm::X86Operand::OffsetOfLoc

Definition at line 35 of file X86Operand.h.

Referenced by CreateReg(), and getOffsetOfLoc().

◆ OpDecl

void* llvm::X86Operand::OpDecl

Definition at line 37 of file X86Operand.h.

Referenced by CreateImm(), CreateMem(), CreateReg(), and getOpDecl().

◆ Pref

struct PrefOp llvm::X86Operand::Pref

Definition at line 87 of file X86Operand.h.

Referenced by getPrefix(), and print().

◆ Reg

struct RegOp llvm::X86Operand::Reg

Definition at line 84 of file X86Operand.h.

Referenced by addMaskPairOperands(), addTILEPairOperands(), CreateReg(), getReg(), and print().

◆ StartLoc

SMLoc llvm::X86Operand::StartLoc

◆ SymName

StringRef llvm::X86Operand::SymName

Definition at line 36 of file X86Operand.h.

Referenced by CreateImm(), CreateMem(), CreateReg(), and getSymName().

◆ Tok

struct TokOp llvm::X86Operand::Tok

Definition at line 83 of file X86Operand.h.

Referenced by getToken(), print(), and setTokenValue().

◆ UseUpRegs

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().


The documentation for this struct was generated from the following file: