mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 13:56:22 +08:00
x86: convert RegMask and RegBND from bitfield to enumerator
This is to further shrink the operand type representation.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2019-11-08 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
|
* config/tc-i386.c (optimize_encoding, build_modrm_byte,
|
||||||
|
check_VecOperations, parse_real_register): Use "class" instead
|
||||||
|
of "regmask" and "regbnd" fields.
|
||||||
|
|
||||||
2019-11-08 Jan Beulich <jbeulich@suse.com>
|
2019-11-08 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
* config/tc-i386.c (match_mem_size, operand_size_match,
|
* config/tc-i386.c (match_mem_size, operand_size_match,
|
||||||
|
@ -4154,7 +4154,7 @@ optimize_encoding (void)
|
|||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (i.tm.operand_types[0].bitfield.regmask)
|
else if (i.tm.operand_types[0].bitfield.class == RegMask)
|
||||||
{
|
{
|
||||||
i.tm.base_opcode &= 0xff;
|
i.tm.base_opcode &= 0xff;
|
||||||
i.tm.opcode_modifier.vexw = VEXW0;
|
i.tm.opcode_modifier.vexw = VEXW0;
|
||||||
@ -7682,8 +7682,8 @@ build_modrm_byte (void)
|
|||||||
for (op = 0; op < i.operands; op++)
|
for (op = 0; op < i.operands; op++)
|
||||||
{
|
{
|
||||||
if (i.types[op].bitfield.class == Reg
|
if (i.types[op].bitfield.class == Reg
|
||||||
|| i.types[op].bitfield.regbnd
|
|| i.types[op].bitfield.class == RegBND
|
||||||
|| i.types[op].bitfield.regmask
|
|| i.types[op].bitfield.class == RegMask
|
||||||
|| i.types[op].bitfield.class == SReg
|
|| i.types[op].bitfield.class == SReg
|
||||||
|| i.types[op].bitfield.class == RegCR
|
|| i.types[op].bitfield.class == RegCR
|
||||||
|| i.types[op].bitfield.class == RegDR
|
|| i.types[op].bitfield.class == RegDR
|
||||||
@ -9238,7 +9238,7 @@ check_VecOperations (char *op_string, char *op_end)
|
|||||||
else if ((mask = parse_register (op_string, &end_op)) != NULL)
|
else if ((mask = parse_register (op_string, &end_op)) != NULL)
|
||||||
{
|
{
|
||||||
/* k0 can't be used for write mask. */
|
/* k0 can't be used for write mask. */
|
||||||
if (!mask->reg_type.bitfield.regmask || mask->reg_num == 0)
|
if (mask->reg_type.bitfield.class != RegMask || !mask->reg_num)
|
||||||
{
|
{
|
||||||
as_bad (_("`%s%s' can't be used for write mask"),
|
as_bad (_("`%s%s' can't be used for write mask"),
|
||||||
register_prefix, mask->reg_name);
|
register_prefix, mask->reg_name);
|
||||||
@ -10935,7 +10935,8 @@ parse_real_register (char *reg_string, char **end_op)
|
|||||||
|
|
||||||
if (!cpu_arch_flags.bitfield.cpuavx512f)
|
if (!cpu_arch_flags.bitfield.cpuavx512f)
|
||||||
{
|
{
|
||||||
if (r->reg_type.bitfield.zmmword || r->reg_type.bitfield.regmask)
|
if (r->reg_type.bitfield.zmmword
|
||||||
|
|| r->reg_type.bitfield.class == RegMask)
|
||||||
return (const reg_entry *) NULL;
|
return (const reg_entry *) NULL;
|
||||||
|
|
||||||
if (!cpu_arch_flags.bitfield.cpuavx)
|
if (!cpu_arch_flags.bitfield.cpuavx)
|
||||||
@ -10948,7 +10949,7 @@ parse_real_register (char *reg_string, char **end_op)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r->reg_type.bitfield.regbnd && !cpu_arch_flags.bitfield.cpumpx)
|
if (r->reg_type.bitfield.class == RegBND && !cpu_arch_flags.bitfield.cpumpx)
|
||||||
return (const reg_entry *) NULL;
|
return (const reg_entry *) NULL;
|
||||||
|
|
||||||
/* Don't allow fake index register unless allow_index_reg isn't 0. */
|
/* Don't allow fake index register unless allow_index_reg isn't 0. */
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
2019-11-08 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
|
* i386-gen.c (operand_type_init): Add Class= to
|
||||||
|
OPERAND_TYPE_REGMASK and OPERAND_TYPE_REGBND entries. Move up
|
||||||
|
OPERAND_TYPE_REGBND entry.
|
||||||
|
(operand_classes): Add RegMask and RegBND entries.
|
||||||
|
(operand_types): Drop RegMask and RegBND entry.
|
||||||
|
* i386-opc.h (enum operand_class): Add RegMask and RegBND.
|
||||||
|
(RegMask, RegBND): Delete.
|
||||||
|
(union i386_operand_type): Remove regmask and regbnd fields.
|
||||||
|
* i386-opc.tbl (RegMask, RegBND): Define.
|
||||||
|
* i386-reg.tbl: Replace RegMask by Class=RegMask and RegBND by
|
||||||
|
Class=RegBND.
|
||||||
|
* i386-init.h, i386-tbl.h: Re-generate.
|
||||||
|
|
||||||
2019-11-08 Jan Beulich <jbeulich@suse.com>
|
2019-11-08 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
* i386-gen.c (operand_type_init): Add Class= to
|
* i386-gen.c (operand_type_init): Add Class= to
|
||||||
|
@ -448,7 +448,9 @@ static initializer operand_type_init[] =
|
|||||||
{ "OPERAND_TYPE_REGZMM",
|
{ "OPERAND_TYPE_REGZMM",
|
||||||
"Class=RegSIMD|Zmmword" },
|
"Class=RegSIMD|Zmmword" },
|
||||||
{ "OPERAND_TYPE_REGMASK",
|
{ "OPERAND_TYPE_REGMASK",
|
||||||
"RegMask" },
|
"Class=RegMask" },
|
||||||
|
{ "OPERAND_TYPE_REGBND",
|
||||||
|
"Class=RegBND" },
|
||||||
{ "OPERAND_TYPE_ESSEG",
|
{ "OPERAND_TYPE_ESSEG",
|
||||||
"EsSeg" },
|
"EsSeg" },
|
||||||
{ "OPERAND_TYPE_ACC8",
|
{ "OPERAND_TYPE_ACC8",
|
||||||
@ -481,8 +483,6 @@ static initializer operand_type_init[] =
|
|||||||
"Imm32|Imm32S|Imm64|Disp32|Disp64" },
|
"Imm32|Imm32S|Imm64|Disp32|Disp64" },
|
||||||
{ "OPERAND_TYPE_ANYIMM",
|
{ "OPERAND_TYPE_ANYIMM",
|
||||||
"Imm1|Imm8|Imm8S|Imm16|Imm32|Imm32S|Imm64" },
|
"Imm1|Imm8|Imm8S|Imm16|Imm32|Imm32S|Imm64" },
|
||||||
{ "OPERAND_TYPE_REGBND",
|
|
||||||
"RegBND" },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct bitfield
|
typedef struct bitfield
|
||||||
@ -689,13 +689,14 @@ static const struct {
|
|||||||
CLASS (RegTR),
|
CLASS (RegTR),
|
||||||
CLASS (RegMMX),
|
CLASS (RegMMX),
|
||||||
CLASS (RegSIMD),
|
CLASS (RegSIMD),
|
||||||
|
CLASS (RegMask),
|
||||||
|
CLASS (RegBND),
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef CLASS
|
#undef CLASS
|
||||||
|
|
||||||
static bitfield operand_types[] =
|
static bitfield operand_types[] =
|
||||||
{
|
{
|
||||||
BITFIELD (RegMask),
|
|
||||||
BITFIELD (Imm1),
|
BITFIELD (Imm1),
|
||||||
BITFIELD (Imm8),
|
BITFIELD (Imm8),
|
||||||
BITFIELD (Imm8S),
|
BITFIELD (Imm8S),
|
||||||
@ -725,7 +726,6 @@ static bitfield operand_types[] =
|
|||||||
BITFIELD (Zmmword),
|
BITFIELD (Zmmword),
|
||||||
BITFIELD (Unspecified),
|
BITFIELD (Unspecified),
|
||||||
BITFIELD (Anysize),
|
BITFIELD (Anysize),
|
||||||
BITFIELD (RegBND),
|
|
||||||
#ifdef OTUnused
|
#ifdef OTUnused
|
||||||
BITFIELD (OTUnused),
|
BITFIELD (OTUnused),
|
||||||
#endif
|
#endif
|
||||||
|
@ -1365,196 +1365,196 @@
|
|||||||
|
|
||||||
#define OPERAND_TYPE_NONE \
|
#define OPERAND_TYPE_NONE \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REG8 \
|
#define OPERAND_TYPE_REG8 \
|
||||||
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
||||||
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REG16 \
|
#define OPERAND_TYPE_REG16 \
|
||||||
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REG32 \
|
#define OPERAND_TYPE_REG32 \
|
||||||
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REG64 \
|
#define OPERAND_TYPE_REG64 \
|
||||||
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM1 \
|
#define OPERAND_TYPE_IMM1 \
|
||||||
{ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM8 \
|
#define OPERAND_TYPE_IMM8 \
|
||||||
{ { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM8S \
|
#define OPERAND_TYPE_IMM8S \
|
||||||
{ { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM16 \
|
#define OPERAND_TYPE_IMM16 \
|
||||||
{ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM32 \
|
#define OPERAND_TYPE_IMM32 \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM32S \
|
#define OPERAND_TYPE_IMM32S \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM64 \
|
#define OPERAND_TYPE_IMM64 \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_BASEINDEX \
|
#define OPERAND_TYPE_BASEINDEX \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_DISP8 \
|
#define OPERAND_TYPE_DISP8 \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_DISP16 \
|
#define OPERAND_TYPE_DISP16 \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_DISP32 \
|
#define OPERAND_TYPE_DISP32 \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_DISP32S \
|
#define OPERAND_TYPE_DISP32S \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_DISP64 \
|
#define OPERAND_TYPE_DISP64 \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_INOUTPORTREG \
|
#define OPERAND_TYPE_INOUTPORTREG \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_SHIFTCOUNT \
|
#define OPERAND_TYPE_SHIFTCOUNT \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_CONTROL \
|
#define OPERAND_TYPE_CONTROL \
|
||||||
{ { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_TEST \
|
#define OPERAND_TYPE_TEST \
|
||||||
{ { 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_DEBUG \
|
#define OPERAND_TYPE_DEBUG \
|
||||||
{ { 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_FLOATREG \
|
#define OPERAND_TYPE_FLOATREG \
|
||||||
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_FLOATACC \
|
#define OPERAND_TYPE_FLOATACC \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_SREG \
|
#define OPERAND_TYPE_SREG \
|
||||||
{ { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_JUMPABSOLUTE \
|
#define OPERAND_TYPE_JUMPABSOLUTE \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REGMMX \
|
#define OPERAND_TYPE_REGMMX \
|
||||||
{ { 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REGXMM \
|
#define OPERAND_TYPE_REGXMM \
|
||||||
{ { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REGYMM \
|
#define OPERAND_TYPE_REGYMM \
|
||||||
{ { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REGZMM \
|
#define OPERAND_TYPE_REGZMM \
|
||||||
{ { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_REGMASK \
|
#define OPERAND_TYPE_REGMASK \
|
||||||
{ { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define OPERAND_TYPE_ESSEG \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_ACC8 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|
||||||
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_ACC16 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|
||||||
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_ACC32 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_ACC64 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_DISP16_32 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_ANYDISP \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM16_32 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM16_32S \
|
|
||||||
{ { 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM16_32_32S \
|
|
||||||
{ { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM32_64 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM32_32S_DISP32 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM64_DISP64 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM32_32S_64_DISP32 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_IMM32_32S_64_DISP32_64 \
|
|
||||||
{ { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_ANYIMM \
|
|
||||||
{ { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
|
||||||
|
|
||||||
#define OPERAND_TYPE_REGBND \
|
#define OPERAND_TYPE_REGBND \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_ESSEG \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_ACC8 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_ACC16 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
||||||
|
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_ACC32 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_ACC64 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_DISP16_32 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_ANYDISP \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM16_32 \
|
||||||
|
{ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM16_32S \
|
||||||
|
{ { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM16_32_32S \
|
||||||
|
{ { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM32_64 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM32_32S_DISP32 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM64_DISP64 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM32_32S_64_DISP32 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_IMM32_32S_64_DISP32_64 \
|
||||||
|
{ { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define OPERAND_TYPE_ANYIMM \
|
||||||
|
{ { 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
@ -715,6 +715,8 @@ enum operand_class
|
|||||||
RegTR, /* Test register */
|
RegTR, /* Test register */
|
||||||
RegMMX, /* MMX register */
|
RegMMX, /* MMX register */
|
||||||
RegSIMD, /* XMM/YMM/ZMM registers, distinguished by operand size */
|
RegSIMD, /* XMM/YMM/ZMM registers, distinguished by operand size */
|
||||||
|
RegMask, /* Vector Mask register */
|
||||||
|
RegBND, /* Bound register */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Position of operand_type bits. */
|
/* Position of operand_type bits. */
|
||||||
@ -723,8 +725,6 @@ enum
|
|||||||
{
|
{
|
||||||
/* Class */
|
/* Class */
|
||||||
Class = CLASS_WIDTH - 1,
|
Class = CLASS_WIDTH - 1,
|
||||||
/* Vector Mask registers */
|
|
||||||
RegMask,
|
|
||||||
/* 1 bit immediate */
|
/* 1 bit immediate */
|
||||||
Imm1,
|
Imm1,
|
||||||
/* 8 bit immediate */
|
/* 8 bit immediate */
|
||||||
@ -791,9 +791,6 @@ enum
|
|||||||
/* Any memory size. */
|
/* Any memory size. */
|
||||||
Anysize,
|
Anysize,
|
||||||
|
|
||||||
/* Bound register. */
|
|
||||||
RegBND,
|
|
||||||
|
|
||||||
/* The number of bits in i386_operand_type. */
|
/* The number of bits in i386_operand_type. */
|
||||||
OTNum
|
OTNum
|
||||||
};
|
};
|
||||||
@ -812,7 +809,6 @@ typedef union i386_operand_type
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned int class:CLASS_WIDTH;
|
unsigned int class:CLASS_WIDTH;
|
||||||
unsigned int regmask:1;
|
|
||||||
unsigned int imm1:1;
|
unsigned int imm1:1;
|
||||||
unsigned int imm8:1;
|
unsigned int imm8:1;
|
||||||
unsigned int imm8s:1;
|
unsigned int imm8s:1;
|
||||||
@ -842,7 +838,6 @@ typedef union i386_operand_type
|
|||||||
unsigned int zmmword:1;
|
unsigned int zmmword:1;
|
||||||
unsigned int unspecified:1;
|
unsigned int unspecified:1;
|
||||||
unsigned int anysize:1;
|
unsigned int anysize:1;
|
||||||
unsigned int regbnd:1;
|
|
||||||
#ifdef OTUnused
|
#ifdef OTUnused
|
||||||
unsigned int unused:(OTNumOfBits - OTUnused);
|
unsigned int unused:(OTNumOfBits - OTUnused);
|
||||||
#endif
|
#endif
|
||||||
|
@ -41,6 +41,10 @@
|
|||||||
#define RegYMM Class=RegSIMD|Ymmword
|
#define RegYMM Class=RegSIMD|Ymmword
|
||||||
#define RegZMM Class=RegSIMD|Zmmword
|
#define RegZMM Class=RegSIMD|Zmmword
|
||||||
|
|
||||||
|
#define RegMask Class=RegMask
|
||||||
|
|
||||||
|
#define RegBND Class=RegBND
|
||||||
|
|
||||||
#define Size16 Size=SIZE16
|
#define Size16 Size=SIZE16
|
||||||
#define Size32 Size=SIZE32
|
#define Size32 Size=SIZE32
|
||||||
#define Size64 Size=SIZE64
|
#define Size64 Size=SIZE64
|
||||||
|
@ -96,14 +96,14 @@ r13, Class=Reg|Qword|BaseIndex, RegRex, 5, Dw2Inval, 13
|
|||||||
r14, Class=Reg|Qword|BaseIndex, RegRex, 6, Dw2Inval, 14
|
r14, Class=Reg|Qword|BaseIndex, RegRex, 6, Dw2Inval, 14
|
||||||
r15, Class=Reg|Qword|BaseIndex, RegRex, 7, Dw2Inval, 15
|
r15, Class=Reg|Qword|BaseIndex, RegRex, 7, Dw2Inval, 15
|
||||||
// Vector mask registers.
|
// Vector mask registers.
|
||||||
k0, RegMask, 0, 0, 93, 118
|
k0, Class=RegMask, 0, 0, 93, 118
|
||||||
k1, RegMask, 0, 1, 94, 119
|
k1, Class=RegMask, 0, 1, 94, 119
|
||||||
k2, RegMask, 0, 2, 95, 120
|
k2, Class=RegMask, 0, 2, 95, 120
|
||||||
k3, RegMask, 0, 3, 96, 121
|
k3, Class=RegMask, 0, 3, 96, 121
|
||||||
k4, RegMask, 0, 4, 97, 122
|
k4, Class=RegMask, 0, 4, 97, 122
|
||||||
k5, RegMask, 0, 5, 98, 123
|
k5, Class=RegMask, 0, 5, 98, 123
|
||||||
k6, RegMask, 0, 6, 99, 124
|
k6, Class=RegMask, 0, 6, 99, 124
|
||||||
k7, RegMask, 0, 7, 100, 125
|
k7, Class=RegMask, 0, 7, 100, 125
|
||||||
// Segment registers.
|
// Segment registers.
|
||||||
es, Class=SReg, 0, 0, 40, 50
|
es, Class=SReg, 0, 0, 40, 50
|
||||||
cs, Class=SReg, 0, 1, 41, 51
|
cs, Class=SReg, 0, 1, 41, 51
|
||||||
@ -279,10 +279,10 @@ zmm29, Class=RegSIMD|Zmmword, RegVRex|RegRex, 5, Dw2Inval, Dw2Inval
|
|||||||
zmm30, Class=RegSIMD|Zmmword, RegVRex|RegRex, 6, Dw2Inval, Dw2Inval
|
zmm30, Class=RegSIMD|Zmmword, RegVRex|RegRex, 6, Dw2Inval, Dw2Inval
|
||||||
zmm31, Class=RegSIMD|Zmmword, RegVRex|RegRex, 7, Dw2Inval, Dw2Inval
|
zmm31, Class=RegSIMD|Zmmword, RegVRex|RegRex, 7, Dw2Inval, Dw2Inval
|
||||||
// Bound registers for MPX
|
// Bound registers for MPX
|
||||||
bnd0, RegBND, 0, 0, Dw2Inval, Dw2Inval
|
bnd0, Class=RegBND, 0, 0, Dw2Inval, Dw2Inval
|
||||||
bnd1, RegBND, 0, 1, Dw2Inval, Dw2Inval
|
bnd1, Class=RegBND, 0, 1, Dw2Inval, Dw2Inval
|
||||||
bnd2, RegBND, 0, 2, Dw2Inval, Dw2Inval
|
bnd2, Class=RegBND, 0, 2, Dw2Inval, Dw2Inval
|
||||||
bnd3, RegBND, 0, 3, Dw2Inval, Dw2Inval
|
bnd3, Class=RegBND, 0, 3, Dw2Inval, Dw2Inval
|
||||||
// No Class=Reg will make these registers rejected for all purposes except
|
// No Class=Reg will make these registers rejected for all purposes except
|
||||||
// for addressing. This saves creating one extra type for RIP/EIP.
|
// for addressing. This saves creating one extra type for RIP/EIP.
|
||||||
rip, Qword, RegRex64, RegIP, Dw2Inval, 16
|
rip, Qword, RegRex64, RegIP, Dw2Inval, 16
|
||||||
|
28898
opcodes/i386-tbl.h
28898
opcodes/i386-tbl.h
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user