17 #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86BASEINFO_H 18 #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86BASEINFO_H 685 "Instruction with 2 defs isn't gather?")
720 return 1 + HasVEX_4V + HasEVEX_K;
723 return 1 + HasEVEX_K;
743 return 0 + HasVEX_4V + HasEVEX_K;
773 if ((RegNo >= X86::XMM8 && RegNo <= X86::XMM31) ||
774 (RegNo >= X86::YMM8 && RegNo <= X86::YMM31) ||
775 (RegNo >= X86::ZMM8 && RegNo <= X86::ZMM31))
780 case X86::R8:
case X86::R9:
case X86::R10:
case X86::R11:
781 case X86::R12:
case X86::R13:
case X86::R14:
case X86::R15:
782 case X86::R8D:
case X86::R9D:
case X86::R10D:
case X86::R11D:
783 case X86::R12D:
case X86::R13D:
case X86::R14D:
case X86::R15D:
784 case X86::R8W:
case X86::R9W:
case X86::R10W:
case X86::R11W:
785 case X86::R12W:
case X86::R13W:
case X86::R14W:
case X86::R15W:
786 case X86::R8B:
case X86::R9B:
case X86::R10B:
case X86::R11B:
787 case X86::R12B:
case X86::R13B:
case X86::R14B:
case X86::R15B:
788 case X86::CR8:
case X86::CR9:
case X86::CR10:
case X86::CR11:
789 case X86::CR12:
case X86::CR13:
case X86::CR14:
case X86::CR15:
790 case X86::DR8:
case X86::DR9:
case X86::DR10:
case X86::DR11:
791 case X86::DR12:
case X86::DR13:
case X86::DR14:
case X86::DR15:
800 return ((RegNo >= X86::XMM16 && RegNo <= X86::XMM31) ||
801 (RegNo >= X86::YMM16 && RegNo <= X86::YMM31) ||
802 (RegNo >= X86::ZMM16 && RegNo <= X86::ZMM31));
807 return (reg == X86::SPL || reg == X86::BPL ||
808 reg == X86::SIL || reg == X86::DIL);
MO_SECREL - On a symbol operand this indicates that the immediate is the offset from beginning of sec...
MRMSrcRegOp4 - This form is used for instructions that use the Mod/RM byte to specify the fourth sour...
MO_COFFSTUB - On a symbol operand "FOO", this indicates that the reference is actually to the "...
bool isX86_64NonExtLowByteReg(unsigned reg)
Explicitly specified rounding control.
This class represents lattice values for constants.
MO_TLSLD - On a symbol operand this indicates that the immediate is the offset of the GOT entry with ...
MO_TLVP_PIC_BASE - On a symbol operand this indicates that the immediate is some TLS offset from the ...
Describe properties that are true of each instruction in the target description file.
RawFrmDstSrc - This form is for instructions that use the source index register SI/ESI/RSI with a pos...
RawFrmMemOffs - This form is for instructions that store an absolute memory offset as an immediate wi...
AddrNumOperands - Total number of operands in a memory reference.
VEX_L - Stands for a bit in the VEX opcode prefix meaning the current instruction uses 256-bit wide r...
MO_GOTPCREL - On a symbol operand this indicates that the immediate is offset to the GOT entry for th...
MO_DTPOFF - On a symbol operand this indicates that the immediate is the offset of the GOT entry with...
MRMXm - This form is used for instructions that use the Mod/RM byte to specify a memory source...
MRM[0-7][rm] - These forms are used to represent instructions that use a Mod/RM byte, and use the middle field to hold extended opcode information.
MRM_XX - A mod/rm byte of exactly 0xXX.
RawFrmDst - This form is for instructions that use the destination index register DI/EDI/RDI...
unsigned isImmPCRel(uint64_t TSFlags)
isImmPCRel - Return true if the immediate of the specified instruction's TSFlags indicates that it is...
MO_DARWIN_NONLAZY_PIC_BASE - On a symbol operand "FOO", this indicates that the reference is actually...
MRMSrcMemOp4 - This form is used for instructions that use the Mod/RM byte to specify the fourth sour...
unsigned getNumOperands() const
Return the number of declared MachineOperands for this MachineInstruction.
ThreeDNow - This indicates that the instruction uses the wacky 0x0F 0x0F prefix for 3DNow! instructio...
MRMSrcReg - This form is used for instructions that use the Mod/RM byte to specify a source...
MRMDestReg - This form is used for instructions that use the Mod/RM byte to specify a destination...
VEX_W - Has a opcode specific functionality, but is used in the same way as REX_W is for regular SSE ...
uint8_t getBaseOpcodeFor(uint64_t TSFlags)
MO_GOT - On a symbol operand this indicates that the immediate is the offset to the GOT entry for the...
MO_GOTTPOFF - On a symbol operand this indicates that the immediate is the offset of the GOT entry wi...
MO_ABS8 - On a symbol operand this indicates that the symbol is known to be an absolute symbol in ran...
bool hasImm(uint64_t TSFlags)
MO_DARWIN_NONLAZY - On a symbol operand "FOO", this indicates that the reference is actually to the "...
MRMSrcMem4VOp3 - This form is used for instructions that encode operand 3 with VEX.VVVV and load from memory.
bool isX86_64ExtendedReg(unsigned RegNo)
isX86_64ExtendedReg - Is the MachineOperand a x86-64 extended (r8 or higher) register? e.g.
AddRegFrm - This form is used for instructions like 'push r32' that have their one register operand a...
MO_GOT_ABSOLUTE_ADDRESS - On a symbol operand, this represents a relocation of: SYMBOL_LABEL + [...
IPREFIXES
The constants to describe instr prefixes if there are.
MO_GOTNTPOFF - On a symbol operand this indicates that the immediate is the offset of the GOT entry w...
MO_TLVP - On a symbol operand this indicates that the immediate is some TLS offset.
MO_TLSLDM - On a symbol operand this indicates that the immediate is the offset of the GOT entry with...
MO_NTPOFF - On a symbol operand this indicates that the immediate is the negative thread-pointer offs...
unsigned getOperandBias(const MCInstrDesc &Desc)
getOperandBias - compute whether all of the def operands are repeated in the uses and therefore shoul...
unsigned isImmSigned(uint64_t TSFlags)
isImmSigned - Return true if the immediate of the specified instruction's TSFlags indicates that it i...
RawFrmImm8 - This is used for the ENTER instruction, which has two immediates, the first of which is ...
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Windows x64, Windows Itanium (IA-64)
MO_TLSGD - On a symbol operand this indicates that the immediate is the offset of the GOT entry with ...
MO_TPOFF - On a symbol operand this indicates that the immediate is the thread-pointer offset for the...
static bool is32ExtendedReg(unsigned RegNo)
is32ExtendedReg - Is the MemoryOperand a 32 extended (zmm16 or higher) registers? e...
int getOperandConstraint(unsigned OpNum, MCOI::OperandConstraint Constraint) const
Returns the value of the specific constraint if it is set.
MRMXr - This form is used for instructions that use the Mod/RM byte to specify a register source...
Raw - This form is for instructions that don't have any operands, so they are just a fixed opcode val...
unsigned getNumDefs() const
Return the number of MachineOperands that are register definitions.
RawFrmImm16 - This is used for CALL FAR instructions, which have two immediates, the first of which i...
bool isKMergeMasked(uint64_t TSFlags)
isKMergedMasked - Is this a merge masked instruction.
MRMSrcMem - This form is used for instructions that use the Mod/RM byte to specify a source...
MO_GOTOFF - On a symbol operand this indicates that the immediate is the offset to the location of th...
MRMSrcReg4VOp3 - This form is used for instructions that encode operand 3 with VEX.VVVV and do not load from memory.
MO_INDNTPOFF - On a symbol operand this indicates that the immediate is the absolute address of the G...
VEX_4V - Used to specify an additional AVX/SSE register.
unsigned getSizeOfImm(uint64_t TSFlags)
getSizeOfImm - Decode the "size of immediate" field from the TSFlags field of the specified instructi...
TOF
Target Operand Flag enum.
STATIC_ROUNDING
AVX512 static rounding constants.
bool isKMasked(uint64_t TSFlags)
isKMasked - Is this a masked instruction.
XOP - Opcode prefix used by XOP instructions.
MO_PLT - On a symbol operand this indicates that the immediate is offset to the PLT entry of symbol n...
MO_PIC_BASE_OFFSET - On a symbol operand this indicates that the immediate should get the value of th...
AddrSegmentReg - The operand # of the segment in the memory operand.
MO_DLLIMPORT - On a symbol operand "FOO", this indicates that the reference is actually to the "__imp...
int getMemoryOperandNo(uint64_t TSFlags)
getMemoryOperandNo - The function returns the MCInst operand # for the first field of the memory oper...
RawFrmSrc - This form is for instructions that use the source index register SI/ESI/RSI with a possib...