mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-03 21:34:46 +08:00
Enable Intel CLDEMOTE instruction.
gas/ * config/tc-i386.c (cpu_arch): Add .cldemote. * doc/c-i386.texi: Document cldemote/.cldemote. * testsuite/gas/i386/cldemote-intel.d: New. * testsuite/gas/i386/cldemote.d: Likewise. * testsuite/gas/i386/cldemote.s: Likewise. * testsuite/gas/i386/i386.exp: Run new tests. * testsuite/gas/i386/x86-64-cldemote-intel.d: New. * testsuite/gas/i386/x86-64-cldemote.d: Likewise. * testsuite/gas/i386/x86-64-cldemote.s: Likewise. * testsuite/gas/i386/ilp32/x86-64-nops.d: Remove 0x0f1c NOP encoding that maps to cldemote. * testsuite/gas/i386/nops.d: Likewise. * testsuite/gas/i386/nops.s: Likewise. * testsuite/gas/i386/x86-64-nops.d: Likewise. * testsuite/gas/i386/x86-64-nops.s: Likewise. opcode/ * i386-dis.c: Add REG_0F1C_MOD_0, MOD_0F1C_PREFIX_0, PREFIX_0F1C. * i386-gen.c (cpu_flag_init): Add CPU_CLDEMOTE_FLAGS, (cpu_flags): Add CpuCLDEMOTE. * i386-init.h: Regenerate. * i386-opc.h (enum): Add CpuCLDEMOTE, (i386_cpu_flags): Add cpucldemote. * i386-opc.tbl: Add cldemote. * i386-tbl.h: Regenerate.
This commit is contained in:
@ -1,3 +1,15 @@
|
||||
2018-04-17 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
|
||||
|
||||
* i386-dis.c: Add REG_0F1C_MOD_0, MOD_0F1C_PREFIX_0,
|
||||
PREFIX_0F1C.
|
||||
* i386-gen.c (cpu_flag_init): Add CPU_CLDEMOTE_FLAGS,
|
||||
(cpu_flags): Add CpuCLDEMOTE.
|
||||
* i386-init.h: Regenerate.
|
||||
* i386-opc.h (enum): Add CpuCLDEMOTE,
|
||||
(i386_cpu_flags): Add cpucldemote.
|
||||
* i386-opc.tbl: Add cldemote.
|
||||
* i386-tbl.h: Regenerate.
|
||||
|
||||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am: Remove sh5 and sh64 support.
|
||||
|
@ -738,6 +738,7 @@ enum
|
||||
REG_0F01,
|
||||
REG_0F0D,
|
||||
REG_0F18,
|
||||
REG_0F1C_MOD_0,
|
||||
REG_0F1E_MOD_3,
|
||||
REG_0F71,
|
||||
REG_0F72,
|
||||
@ -792,6 +793,7 @@ enum
|
||||
MOD_0F1A_PREFIX_0,
|
||||
MOD_0F1B_PREFIX_0,
|
||||
MOD_0F1B_PREFIX_1,
|
||||
MOD_0F1C_PREFIX_0,
|
||||
MOD_0F1E_PREFIX_1,
|
||||
MOD_0F24,
|
||||
MOD_0F26,
|
||||
@ -970,6 +972,7 @@ enum
|
||||
PREFIX_0F16,
|
||||
PREFIX_0F1A,
|
||||
PREFIX_0F1B,
|
||||
PREFIX_0F1C,
|
||||
PREFIX_0F1E,
|
||||
PREFIX_0F2A,
|
||||
PREFIX_0F2B,
|
||||
@ -2898,7 +2901,7 @@ static const struct dis386 dis386_twobyte[] = {
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ PREFIX_TABLE (PREFIX_0F1A) },
|
||||
{ PREFIX_TABLE (PREFIX_0F1B) },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ PREFIX_TABLE (PREFIX_0F1C) },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ PREFIX_TABLE (PREFIX_0F1E) },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
@ -3650,6 +3653,17 @@ static const struct dis386 reg_table[][8] = {
|
||||
{ MOD_TABLE (MOD_0F18_REG_6) },
|
||||
{ MOD_TABLE (MOD_0F18_REG_7) },
|
||||
},
|
||||
/* REG_0F1C_MOD_0 */
|
||||
{
|
||||
{ "cldemote", { Mb }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
},
|
||||
/* REG_0F1E_MOD_3 */
|
||||
{
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
@ -3901,6 +3915,14 @@ static const struct dis386 prefix_table[][4] = {
|
||||
{ "bndcn", { Gbnd, Ev_bnd }, 0 },
|
||||
},
|
||||
|
||||
/* PREFIX_0F1C */
|
||||
{
|
||||
{ MOD_TABLE (MOD_0F1C_PREFIX_0) },
|
||||
{ "nopQ", { Ev }, PREFIX_OPCODE },
|
||||
{ "nopQ", { Ev }, PREFIX_OPCODE },
|
||||
{ "nopQ", { Ev }, PREFIX_OPCODE },
|
||||
},
|
||||
|
||||
/* PREFIX_0F1E */
|
||||
{
|
||||
{ "nopQ", { Ev }, PREFIX_OPCODE },
|
||||
@ -11620,6 +11642,11 @@ static const struct dis386 mod_table[][2] = {
|
||||
{ "bndmk", { Gbnd, Ev_bnd }, 0 },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
},
|
||||
{
|
||||
/* MOD_0F1C_PREFIX_0 */
|
||||
{ REG_TABLE (REG_0F1C_MOD_0) },
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
},
|
||||
{
|
||||
/* MOD_0F1E_PREFIX_1 */
|
||||
{ "nopQ", { Ev }, 0 },
|
||||
|
@ -285,6 +285,8 @@ static initializer cpu_flag_init[] =
|
||||
"CpuPCONFIG" },
|
||||
{ "CPU_WAITPKG_FLAGS",
|
||||
"CpuWAITPKG" },
|
||||
{ "CPU_CLDEMOTE_FLAGS",
|
||||
"CpuCLDEMOTE" },
|
||||
{ "CPU_ANY_X87_FLAGS",
|
||||
"CPU_ANY_287_FLAGS|Cpu8087" },
|
||||
{ "CPU_ANY_287_FLAGS",
|
||||
@ -578,6 +580,7 @@ static bitfield cpu_flags[] =
|
||||
BITFIELD (CpuWBNOINVD),
|
||||
BITFIELD (CpuPCONFIG),
|
||||
BITFIELD (CpuWAITPKG),
|
||||
BITFIELD (CpuCLDEMOTE),
|
||||
BITFIELD (CpuRegMMX),
|
||||
BITFIELD (CpuRegXMM),
|
||||
BITFIELD (CpuRegYMM),
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -229,6 +229,8 @@ enum
|
||||
CpuPCONFIG,
|
||||
/* WAITPKG instructions required */
|
||||
CpuWAITPKG,
|
||||
/* CLDEMOTE instruction required */
|
||||
CpuCLDEMOTE,
|
||||
/* MMX register support required */
|
||||
CpuRegMMX,
|
||||
/* XMM register support required */
|
||||
@ -361,6 +363,7 @@ typedef union i386_cpu_flags
|
||||
unsigned int cpuwbnoinvd:1;
|
||||
unsigned int cpupconfig:1;
|
||||
unsigned int cpuwaitpkg:1;
|
||||
unsigned int cpucldemote:1;
|
||||
unsigned int cpuregmmx:1;
|
||||
unsigned int cpuregxmm:1;
|
||||
unsigned int cpuregymm:1;
|
||||
|
@ -5909,3 +5909,9 @@ tpause, 1, 0x660fae, 0x6, 2, CpuWAITPKG, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|N
|
||||
umwait, 1, 0xf20fae, 0x6, 2, CpuWAITPKG, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|NoRex64, { Reg32|Reg64 }
|
||||
|
||||
// WAITPKG instructions end.
|
||||
|
||||
// CLDEMOTE instructions.
|
||||
|
||||
cldemote, 1, 0x0f1c, 0x0, 2, CpuCLDEMOTE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Anysize|BaseIndex }
|
||||
|
||||
// CLDEMOTE instructions end.
|
||||
|
10102
opcodes/i386-tbl.h
10102
opcodes/i386-tbl.h
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user