diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2019-06-04 08:50:10 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2019-06-04 08:50:46 -0700 |
commit | 5d79adc4b22b0abd4f12ea973a00e7fb0c1dad64 (patch) | |
tree | 15e73fda98da13ef00ca172d5731035af2a40b16 /opcodes/i386-dis.c | |
parent | e1f2e1a2dadbaeffe0a8a6da7aab7effc6b046d2 (diff) | |
download | gdb-5d79adc4b22b0abd4f12ea973a00e7fb0c1dad64.zip gdb-5d79adc4b22b0abd4f12ea973a00e7fb0c1dad64.tar.gz gdb-5d79adc4b22b0abd4f12ea973a00e7fb0c1dad64.tar.bz2 |
Add support for Intel ENQCMD[S] instructions
This patch enables support for ENQCMD[S] in binutils. Please refer to
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf
for ENQCMD[S] details.
Make check-gas is ok.
gas/ChangeLog:
2019-06-04 Xuepeng Guo <xuepeng.guo@intel.com>
Lili Cui <lili.cui@intel.com>
* doc/c-i386.texi: Document enqcmd.
* testsuite/gas/i386/enqcmd-intel.d: New file.
* testsuite/gas/i386/enqcmd-inval.l: Likewise.
* testsuite/gas/i386/enqcmd-inval.s: Likewise.
* testsuite/gas/i386/enqcmd.d: Likewise.
* testsuite/gas/i386/enqcmd.s: Likewise.
* testsuite/gas/i386/x86-64-enqcmd-intel.d: Likewise.
* testsuite/gas/i386/x86-64-enqcmd-inval.l: Likewise.
* testsuite/gas/i386/x86-64-enqcmd-inval.s: Likewise.
* testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
* testsuite/gas/i386/x86-64-enqcmd.s: Likewise.
* testsuite/gas/i386/i386.exp: Run enqcmd-intel, enqcmd-inval,
enqcmd, x86-64-enqcmd-intel, x86-64-enqcmd-inval,
and x86-64-enqcmd.
opcodes/ChangeLog:
2019-06-04 Xuepeng Guo <xuepeng.guo@intel.com>
Lili Cui <lili.cui@intel.com>
* i386-dis.c (enum): Add MOD_0F38F8_PREFIX_1 and
MOD_0F38F8_PREFIX_3.
(prefix_table): New instructions (see prefix above).
(mod_table): New instructions (see prefix above).
* i386-gen.c (cpu_flag_init): Add entries for enqcmd.
(cpu_flags): Add a bitfield for enqmcd.
* i386-init.h: Regenerated.
* i386-opc.h (enum): Add CpuENQCMD.
(i386_cpu_flags): Add a bitfield for cpuenqcmd.
* i386-opc.tbl: Add enqcmd and enqcmds instructions.
* i386-init.h: Regenerated.
* i386-tbl.h: Regenerated.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r-- | opcodes/i386-dis.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 1ba7b4f..a90f7b46 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -845,7 +845,9 @@ enum MOD_0F382A_PREFIX_2, MOD_0F38F5_PREFIX_2, MOD_0F38F6_PREFIX_0, + MOD_0F38F8_PREFIX_1, MOD_0F38F8_PREFIX_2, + MOD_0F38F8_PREFIX_3, MOD_0F38F9_PREFIX_0, MOD_62_32BIT, MOD_C4_32BIT, @@ -4444,8 +4446,9 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F38F8 */ { { Bad_Opcode }, - { Bad_Opcode }, + { MOD_TABLE (MOD_0F38F8_PREFIX_1) }, { MOD_TABLE (MOD_0F38F8_PREFIX_2) }, + { MOD_TABLE (MOD_0F38F8_PREFIX_3) }, }, /* PREFIX_0F38F9 */ @@ -10520,10 +10523,18 @@ static const struct dis386 mod_table[][2] = { { "wrssK", { M, Gdq }, PREFIX_OPCODE }, }, { + /* MOD_0F38F8_PREFIX_1 */ + { "enqcmds", { Gva, M }, PREFIX_OPCODE }, + }, + { /* MOD_0F38F8_PREFIX_2 */ { "movdir64b", { Gva, M }, PREFIX_OPCODE }, }, { + /* MOD_0F38F8_PREFIX_3 */ + { "enqcmd", { Gva, M }, PREFIX_OPCODE }, + }, + { /* MOD_0F38F9_PREFIX_0 */ { "movdiri", { Em, Gv }, PREFIX_OPCODE }, }, |