Add support for TBM instructions.
gas/ 2011-01-17 Quentin Neill <quentin.neill@amd.com> * config/tc-i386.c (cpu_arch): Add CPU_TBM_FLAGS. * doc/c-i386.texi (i386-TBM): New section. opcodes/ 2011-01-17 Quentin Neill <quentin.neill@amd.com> * i386-dis.c (REG_XOP_TBM_01): New. (REG_XOP_TBM_02): New. (reg_table): Add REG_XOP_TBM_01 and REG_XOP_TBM_02 tables. (xop_table): Redirect to REG_XOP_TBM_01 and REG_XOP_TBM_02 entries, and add bextr instruction. * i386-gen.c (cpu_flag_init): Add CPU_TBM_FLAGS, CpuTBM. (cpu_flags): Add CpuTBM. * i386-opc.h (CpuTBM) New. (i386_cpu_flags): Add bit cputbm. * i386-opc.tbl: Add bextr, blcfill, blci, blcic, blcmsk, blcs, blsfill, blsic, t1mskc, and tzmsk. * i386-init.h: Regenerated. * i386-tbl.h: Regenerated gas/testsuite 2011-01-17 Quentin Neill <quentin.neill@amd.com> * gas/i386/tbm.s: New. * gas/i386/tbm.d: New. * gas/i386/tbm-intel.d: New. * gas/i386/x86-64-tbm.s: New. * gas/i386/x86-64-tbm.d: New. * gas/i386/x86-64-tbm-intel.d: New. * gas/i386/arch-10.d: Add tbm flag and TBM instruction pattern. * gas/i386/arch-10.s: Add a TBM instruction. * gas/i386/arch-10-1.l: Add TBM instruction pattern. * gas/i386/arch-10-2.l: Likewise. * gas/i386/arch-10-3.l: Likewise. * gas/i386/arch-10-4.l: Likewise. * gas/i386/x86-64-arch-2.s: Likewise. * gas/i386/x86-64-arch-2.d: Likewise.
This commit is contained in:
parent
dc92e16124
commit
2a2a0f38e7
18 changed files with 131 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2011-01-17 Quentin Neill <quentin.neill@amd.com>
|
||||||
|
|
||||||
|
* config/tc-i386.c (cpu_arch): Add CPU_TBM_FLAGS.
|
||||||
|
|
||||||
|
* doc/c-i386.texi (i386-TBM): New section.
|
||||||
|
|
||||||
2011-01-16 H.J. Lu <hongjiu.lu@intel.com>
|
2011-01-16 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* config/tc-i386.c (disallow_64bit_disp): Renamed to ...
|
* config/tc-i386.c (disallow_64bit_disp): Renamed to ...
|
||||||
|
|
|
@ -733,6 +733,8 @@ static const arch_entry cpu_arch[] =
|
||||||
CPU_ABM_FLAGS, 0, 0 },
|
CPU_ABM_FLAGS, 0, 0 },
|
||||||
{ STRING_COMMA_LEN (".bmi"), PROCESSOR_UNKNOWN,
|
{ STRING_COMMA_LEN (".bmi"), PROCESSOR_UNKNOWN,
|
||||||
CPU_BMI_FLAGS, 0, 0 },
|
CPU_BMI_FLAGS, 0, 0 },
|
||||||
|
{ STRING_COMMA_LEN (".tbm"), PROCESSOR_UNKNOWN,
|
||||||
|
CPU_TBM_FLAGS, 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef I386COFF
|
#ifdef I386COFF
|
||||||
|
|
|
@ -36,6 +36,7 @@ extending the Intel architecture to 64-bits.
|
||||||
* i386-SIMD:: Intel's MMX and AMD's 3DNow! SIMD Operations
|
* i386-SIMD:: Intel's MMX and AMD's 3DNow! SIMD Operations
|
||||||
* i386-LWP:: AMD's Lightweight Profiling Instructions
|
* i386-LWP:: AMD's Lightweight Profiling Instructions
|
||||||
* i386-BMI:: Bit Manipulation Instruction
|
* i386-BMI:: Bit Manipulation Instruction
|
||||||
|
* i386-TBM:: AMD's Trailing Bit Manipulation Instructions
|
||||||
* i386-16bit:: Writing 16-bit Code
|
* i386-16bit:: Writing 16-bit Code
|
||||||
* i386-Arch:: Specifying an x86 CPU architecture
|
* i386-Arch:: Specifying an x86 CPU architecture
|
||||||
* i386-Bugs:: AT&T Syntax bugs
|
* i386-Bugs:: AT&T Syntax bugs
|
||||||
|
@ -860,6 +861,21 @@ resetting.
|
||||||
|
|
||||||
@c Need to add a specification citation here when available.
|
@c Need to add a specification citation here when available.
|
||||||
|
|
||||||
|
@node i386-TBM
|
||||||
|
@section AMD's Trailing Bit Manipulation Instructions
|
||||||
|
|
||||||
|
@cindex TBM, i386
|
||||||
|
@cindex TBM, x86-64
|
||||||
|
|
||||||
|
@code{@value{AS}} supports AMD's Trailing Bit Manipulation (TBM)
|
||||||
|
instruction set, available on AMD's BDVER2 processors (Trinity and
|
||||||
|
Viperfish).
|
||||||
|
|
||||||
|
TBM instructions provide instructions implementing individual bit
|
||||||
|
manipulation operations such as isolating, masking, setting, resetting,
|
||||||
|
complementing, and operations on trailing zeros and ones.
|
||||||
|
|
||||||
|
@c Need to add a specification citation here when available.
|
||||||
|
|
||||||
@node i386-16bit
|
@node i386-16bit
|
||||||
@section Writing 16-bit Code
|
@section Writing 16-bit Code
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
|
2011-01-17 Quentin Neill <quentin.neill@amd.com>
|
||||||
|
|
||||||
|
* gas/i386/tbm.s: New.
|
||||||
|
* gas/i386/tbm.d: New.
|
||||||
|
* gas/i386/tbm-intel.d: New.
|
||||||
|
* gas/i386/x86-64-tbm.s: New.
|
||||||
|
* gas/i386/x86-64-tbm.d: New.
|
||||||
|
* gas/i386/x86-64-tbm-intel.d: New.
|
||||||
|
* gas/i386/arch-10.d: Add tbm flag and TBM instruction pattern.
|
||||||
|
* gas/i386/arch-10.s: Add a TBM instruction.
|
||||||
|
* gas/i386/arch-10-1.l: Add TBM instruction pattern.
|
||||||
|
* gas/i386/arch-10-2.l: Likewise.
|
||||||
|
* gas/i386/arch-10-3.l: Likewise.
|
||||||
|
* gas/i386/arch-10-4.l: Likewise.
|
||||||
|
* gas/i386/x86-64-arch-2.s: Likewise.
|
||||||
|
* gas/i386/x86-64-arch-2.d: Likewise.
|
||||||
|
|
||||||
2011-01-16 H.J. Lu <hongjiu.lu@intel.com>
|
2011-01-16 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* gas/i386/ilp32/immed64.s: New.
|
* gas/i386/ilp32/immed64.s: New.
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
.*:60: Error: .*
|
.*:60: Error: .*
|
||||||
.*:62: Error: .*
|
.*:62: Error: .*
|
||||||
.*:64: Error: .*
|
.*:64: Error: .*
|
||||||
|
.*:66: Error: .*
|
||||||
GAS LISTING .*
|
GAS LISTING .*
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,3 +102,5 @@ GAS LISTING .*
|
||||||
[ ]*62[ ]+nopl \(%eax\)
|
[ ]*62[ ]+nopl \(%eax\)
|
||||||
[ ]*63[ ]+\# BMI
|
[ ]*63[ ]+\# BMI
|
||||||
[ ]*64[ ]+blsr %ecx,%ebx
|
[ ]*64[ ]+blsr %ecx,%ebx
|
||||||
|
[ ]*65[ ]+\# TBM
|
||||||
|
[ ]*66[ ]+blcfill %ecx,%ebx
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
.*:60: Error: .*
|
.*:60: Error: .*
|
||||||
.*:62: Error: .*
|
.*:62: Error: .*
|
||||||
.*:64: Error: .*
|
.*:64: Error: .*
|
||||||
|
.*:66: Error: .*
|
||||||
GAS LISTING .*
|
GAS LISTING .*
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,3 +101,5 @@ GAS LISTING .*
|
||||||
[ ]*62[ ]+nopl \(%eax\)
|
[ ]*62[ ]+nopl \(%eax\)
|
||||||
[ ]*63[ ]+\# BMI
|
[ ]*63[ ]+\# BMI
|
||||||
[ ]*64[ ]+blsr %ecx,%ebx
|
[ ]*64[ ]+blsr %ecx,%ebx
|
||||||
|
[ ]*65[ ]+\# TBM
|
||||||
|
[ ]*66[ ]+blcfill %ecx,%ebx
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
.*:60: Error: .*
|
.*:60: Error: .*
|
||||||
.*:62: Error: .*
|
.*:62: Error: .*
|
||||||
.*:64: Error: .*
|
.*:64: Error: .*
|
||||||
|
.*:66: Error: .*
|
||||||
GAS LISTING .*
|
GAS LISTING .*
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,3 +97,5 @@ GAS LISTING .*
|
||||||
[ ]*62[ ]+nopl \(%eax\)
|
[ ]*62[ ]+nopl \(%eax\)
|
||||||
[ ]*63[ ]+\# BMI
|
[ ]*63[ ]+\# BMI
|
||||||
[ ]*64[ ]+blsr %ecx,%ebx
|
[ ]*64[ ]+blsr %ecx,%ebx
|
||||||
|
[ ]*65[ ]+\# TBM
|
||||||
|
[ ]*66[ ]+blcfill %ecx,%ebx
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
.*:60: Error: .*
|
.*:60: Error: .*
|
||||||
.*:62: Error: .*
|
.*:62: Error: .*
|
||||||
.*:64: Error: .*
|
.*:64: Error: .*
|
||||||
|
.*:66: Error: .*
|
||||||
GAS LISTING .*
|
GAS LISTING .*
|
||||||
|
|
||||||
|
|
||||||
|
@ -94,3 +95,5 @@ GAS LISTING .*
|
||||||
[ ]*62[ ]+nopl \(%eax\)
|
[ ]*62[ ]+nopl \(%eax\)
|
||||||
[ ]*63[ ]+\# BMI
|
[ ]*63[ ]+\# BMI
|
||||||
[ ]*64[ ]+blsr %ecx,%ebx
|
[ ]*64[ ]+blsr %ecx,%ebx
|
||||||
|
[ ]*65[ ]+\# TBM
|
||||||
|
[ ]*66[ ]+blcfill %ecx,%ebx
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#as: -march=i686+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+nop+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi
|
#as: -march=i686+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+nop+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm
|
||||||
#objdump: -dw
|
#objdump: -dw
|
||||||
#name: i386 arch 10
|
#name: i386 arch 10
|
||||||
|
|
||||||
|
@ -38,4 +38,5 @@ Disassembly of section .text:
|
||||||
[ ]*[a-f0-9]+: 0f a7 c0 xstore-rng
|
[ ]*[a-f0-9]+: 0f a7 c0 xstore-rng
|
||||||
[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%eax\)
|
[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%eax\)
|
||||||
[ ]*[a-f0-9]+: c4 e2 60 f3 c9 blsr %ecx,%ebx
|
[ ]*[a-f0-9]+: c4 e2 60 f3 c9 blsr %ecx,%ebx
|
||||||
|
[ ]*[a-f0-9]+: 8f e9 60 01 c9 blcfill %ecx,%ebx
|
||||||
#pass
|
#pass
|
||||||
|
|
|
@ -62,3 +62,5 @@ xstorerng
|
||||||
nopl (%eax)
|
nopl (%eax)
|
||||||
# BMI
|
# BMI
|
||||||
blsr %ecx,%ebx
|
blsr %ecx,%ebx
|
||||||
|
# TBM
|
||||||
|
blcfill %ecx,%ebx
|
||||||
|
|
|
@ -175,6 +175,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
|
||||||
run_dump_test "xop"
|
run_dump_test "xop"
|
||||||
run_dump_test "bmi"
|
run_dump_test "bmi"
|
||||||
run_dump_test "bmi-intel"
|
run_dump_test "bmi-intel"
|
||||||
|
run_dump_test "tbm"
|
||||||
|
run_dump_test "tbm-intel"
|
||||||
run_dump_test "f16c"
|
run_dump_test "f16c"
|
||||||
run_dump_test "f16c-intel"
|
run_dump_test "f16c-intel"
|
||||||
run_dump_test "fsgs"
|
run_dump_test "fsgs"
|
||||||
|
@ -376,6 +378,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
|
||||||
run_dump_test "x86-64-xop"
|
run_dump_test "x86-64-xop"
|
||||||
run_dump_test "x86-64-bmi"
|
run_dump_test "x86-64-bmi"
|
||||||
run_dump_test "x86-64-bmi-intel"
|
run_dump_test "x86-64-bmi-intel"
|
||||||
|
run_dump_test "x86-64-tbm"
|
||||||
|
run_dump_test "x86-64-tbm-intel"
|
||||||
run_dump_test "x86-64-f16c"
|
run_dump_test "x86-64-f16c"
|
||||||
run_dump_test "x86-64-f16c-intel"
|
run_dump_test "x86-64-f16c-intel"
|
||||||
run_dump_test "x86-64-fsgs"
|
run_dump_test "x86-64-fsgs"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi
|
#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm
|
||||||
#objdump: -dw
|
#objdump: -dw
|
||||||
#name: x86-64 arch 2
|
#name: x86-64 arch 2
|
||||||
|
|
||||||
|
@ -37,4 +37,5 @@ Disassembly of section .text:
|
||||||
[ ]*[a-f0-9]+: f3 0f bd d9 lzcnt %ecx,%ebx
|
[ ]*[a-f0-9]+: f3 0f bd d9 lzcnt %ecx,%ebx
|
||||||
[ ]*[a-f0-9]+: 0f a7 c0 xstore-rng
|
[ ]*[a-f0-9]+: 0f a7 c0 xstore-rng
|
||||||
[ ]*[a-f0-9]+: c4 e2 60 f3 c9 blsr %ecx,%ebx
|
[ ]*[a-f0-9]+: c4 e2 60 f3 c9 blsr %ecx,%ebx
|
||||||
|
[ ]*[a-f0-9]+: 8f e9 60 01 c9 blcfill %ecx,%ebx
|
||||||
#pass
|
#pass
|
||||||
|
|
|
@ -60,3 +60,5 @@ lzcnt %ecx,%ebx
|
||||||
xstorerng
|
xstorerng
|
||||||
# BMI
|
# BMI
|
||||||
blsr %ecx,%ebx
|
blsr %ecx,%ebx
|
||||||
|
# TBM
|
||||||
|
blcfill %ecx,%ebx
|
||||||
|
|
|
@ -1,3 +1,23 @@
|
||||||
|
2011-01-17 Quentin Neill <quentin.neill@amd.com>
|
||||||
|
|
||||||
|
* i386-dis.c (REG_XOP_TBM_01): New.
|
||||||
|
(REG_XOP_TBM_02): New.
|
||||||
|
(reg_table): Add REG_XOP_TBM_01 and REG_XOP_TBM_02 tables.
|
||||||
|
(xop_table): Redirect to REG_XOP_TBM_01 and REG_XOP_TBM_02
|
||||||
|
entries, and add bextr instruction.
|
||||||
|
|
||||||
|
* i386-gen.c (cpu_flag_init): Add CPU_TBM_FLAGS, CpuTBM.
|
||||||
|
(cpu_flags): Add CpuTBM.
|
||||||
|
|
||||||
|
* i386-opc.h (CpuTBM) New.
|
||||||
|
(i386_cpu_flags): Add bit cputbm.
|
||||||
|
|
||||||
|
* i386-opc.tbl: Add bextr, blcfill, blci, blcic, blcmsk,
|
||||||
|
blcs, blsfill, blsic, t1mskc, and tzmsk.
|
||||||
|
|
||||||
|
* i386-init.h: Regenerated.
|
||||||
|
* i386-tbl.h: Regenerated
|
||||||
|
|
||||||
2011-01-12 DJ Delorie <dj@redhat.com>
|
2011-01-12 DJ Delorie <dj@redhat.com>
|
||||||
|
|
||||||
* rx-dis.c (print_insn_rx): Support RX_Operand_TwoReg.
|
* rx-dis.c (print_insn_rx): Support RX_Operand_TwoReg.
|
||||||
|
|
|
@ -601,7 +601,9 @@ enum
|
||||||
REG_VEX_0FAE,
|
REG_VEX_0FAE,
|
||||||
REG_VEX_0F38F3,
|
REG_VEX_0F38F3,
|
||||||
REG_XOP_LWPCB,
|
REG_XOP_LWPCB,
|
||||||
REG_XOP_LWP
|
REG_XOP_LWP,
|
||||||
|
REG_XOP_TBM_01,
|
||||||
|
REG_XOP_TBM_02
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -2779,6 +2781,27 @@ static const struct dis386 reg_table[][8] = {
|
||||||
{ "lwpins", { { OP_LWP_E, 0 }, Ed, Iq } },
|
{ "lwpins", { { OP_LWP_E, 0 }, Ed, Iq } },
|
||||||
{ "lwpval", { { OP_LWP_E, 0 }, Ed, Iq } },
|
{ "lwpval", { { OP_LWP_E, 0 }, Ed, Iq } },
|
||||||
},
|
},
|
||||||
|
/* REG_XOP_TBM_01 */
|
||||||
|
{
|
||||||
|
{ Bad_Opcode },
|
||||||
|
{ "blcfill", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
{ "blsfill", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
{ "blcs", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
{ "tzmsk", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
{ "blcic", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
{ "blsic", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
{ "t1mskc", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
},
|
||||||
|
/* REG_XOP_TBM_02 */
|
||||||
|
{
|
||||||
|
{ Bad_Opcode },
|
||||||
|
{ "blcmsk", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
{ Bad_Opcode },
|
||||||
|
{ Bad_Opcode },
|
||||||
|
{ Bad_Opcode },
|
||||||
|
{ Bad_Opcode },
|
||||||
|
{ "blci", { { OP_LWP_E, 0 }, Ev } },
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct dis386 prefix_table[][4] = {
|
static const struct dis386 prefix_table[][4] = {
|
||||||
|
@ -6459,7 +6482,7 @@ static const struct dis386 xop_table[][256] = {
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
/* 10 */
|
/* 10 */
|
||||||
{ Bad_Opcode },
|
{ "bextr", { Gv, Ev, Iq } },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
|
@ -6733,8 +6756,8 @@ static const struct dis386 xop_table[][256] = {
|
||||||
{
|
{
|
||||||
/* 00 */
|
/* 00 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ REG_TABLE (REG_XOP_TBM_01) },
|
||||||
{ Bad_Opcode },
|
{ REG_TABLE (REG_XOP_TBM_02) },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
|
@ -7041,7 +7064,7 @@ static const struct dis386 xop_table[][256] = {
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
/* 10 */
|
/* 10 */
|
||||||
{ Bad_Opcode },
|
{ "bextr", { Gv, Ev, Iq } },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ REG_TABLE (REG_XOP_LWP) },
|
{ REG_TABLE (REG_XOP_LWP) },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
|
|
|
@ -142,6 +142,8 @@ static initializer cpu_flag_init[] =
|
||||||
"CpuLWP" },
|
"CpuLWP" },
|
||||||
{ "CPU_BMI_FLAGS",
|
{ "CPU_BMI_FLAGS",
|
||||||
"CpuBMI" },
|
"CpuBMI" },
|
||||||
|
{ "CPU_TBM_FLAGS",
|
||||||
|
"CpuTBM" },
|
||||||
{ "CPU_MOVBE_FLAGS",
|
{ "CPU_MOVBE_FLAGS",
|
||||||
"CpuMovbe" },
|
"CpuMovbe" },
|
||||||
{ "CPU_RDTSCP_FLAGS",
|
{ "CPU_RDTSCP_FLAGS",
|
||||||
|
@ -323,6 +325,7 @@ static bitfield cpu_flags[] =
|
||||||
BITFIELD (CpuXOP),
|
BITFIELD (CpuXOP),
|
||||||
BITFIELD (CpuLWP),
|
BITFIELD (CpuLWP),
|
||||||
BITFIELD (CpuBMI),
|
BITFIELD (CpuBMI),
|
||||||
|
BITFIELD (CpuTBM),
|
||||||
BITFIELD (CpuLM),
|
BITFIELD (CpuLM),
|
||||||
BITFIELD (CpuMovbe),
|
BITFIELD (CpuMovbe),
|
||||||
BITFIELD (CpuEPT),
|
BITFIELD (CpuEPT),
|
||||||
|
|
|
@ -112,6 +112,8 @@ enum
|
||||||
CpuLWP,
|
CpuLWP,
|
||||||
/* BMI support required */
|
/* BMI support required */
|
||||||
CpuBMI,
|
CpuBMI,
|
||||||
|
/* TBM support required */
|
||||||
|
CpuTBM,
|
||||||
/* MOVBE Instruction support required */
|
/* MOVBE Instruction support required */
|
||||||
CpuMovbe,
|
CpuMovbe,
|
||||||
/* EPT Instructions required */
|
/* EPT Instructions required */
|
||||||
|
@ -189,6 +191,7 @@ typedef union i386_cpu_flags
|
||||||
unsigned int cpuxop:1;
|
unsigned int cpuxop:1;
|
||||||
unsigned int cpulwp:1;
|
unsigned int cpulwp:1;
|
||||||
unsigned int cpubmi:1;
|
unsigned int cpubmi:1;
|
||||||
|
unsigned int cputbm:1;
|
||||||
unsigned int cpumovbe:1;
|
unsigned int cpumovbe:1;
|
||||||
unsigned int cpuept:1;
|
unsigned int cpuept:1;
|
||||||
unsigned int cpurdtscp:1;
|
unsigned int cpurdtscp:1;
|
||||||
|
|
|
@ -2742,6 +2742,18 @@ blsmsk, 2, 0xf3, 0x2, 1, CpuBMI, Modrm|CheckRegSize|Vex=3|VexOpcode=1|VexVVVV=2|
|
||||||
blsr, 2, 0xf3, 0x1, 1, CpuBMI, Modrm|CheckRegSize|Vex=3|VexOpcode=1|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg32|Reg64 }
|
blsr, 2, 0xf3, 0x1, 1, CpuBMI, Modrm|CheckRegSize|Vex=3|VexOpcode=1|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg32|Reg64 }
|
||||||
tzcnt, 2, 0xf30fbc, None, 2, CpuBMI, Modrm|CheckRegSize|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg16|Reg32|Reg64 }
|
tzcnt, 2, 0xf30fbc, None, 2, CpuBMI, Modrm|CheckRegSize|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S, Reg16|Reg32|Reg64 }
|
||||||
|
|
||||||
|
// TBM instructions
|
||||||
|
bextr, 3, 0x10, None, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=5|VexVVVV=0|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Imm32|Imm32S, Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
blcfill, 2, 0x01, 0x1, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
blci, 2, 0x02, 0x6, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
blcic, 2, 0x01, 0x5, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
blcmsk, 2, 0x02, 0x1, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
blcs, 2, 0x01, 0x3, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
blsfill, 2, 0x01, 0x2, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
blsic, 2, 0x01, 0x6, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
t1mskc, 2, 0x01, 0x7, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
tzmsk, 2, 0x01, 0x4, 1, CpuTBM, Modrm|CheckRegSize|Vex=3|VexOpcode=4|VexVVVV=2|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Dword|Qword|Disp8|Disp16|Disp32|Disp32S|Unspecified|BaseIndex, Reg32|Reg64 }
|
||||||
|
|
||||||
// AMD 3DNow! instructions.
|
// AMD 3DNow! instructions.
|
||||||
|
|
||||||
prefetch, 1, 0xf0d, 0x0, 2, Cpu3dnow, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Byte|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
prefetch, 1, 0xf0d, 0x0, 2, Cpu3dnow, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Byte|Unspecified|BaseIndex|Disp8|Disp16|Disp32|Disp32S }
|
||||||
|
|
Loading…
Reference in a new issue