diff options
author | Jan Beulich <jbeulich@suse.com> | 2020-07-14 10:32:51 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2020-07-14 10:32:51 +0200 |
commit | 17d3c7eccd41c5053c0b567eb67fe59808cc748a (patch) | |
tree | ba15964744321c2125ff8d8d8a3270ceb1eeed99 /opcodes | |
parent | 41f5efc6855a2a9211775308c99ebb3f28a5e729 (diff) | |
download | fsf-binutils-gdb-17d3c7eccd41c5053c0b567eb67fe59808cc748a.zip fsf-binutils-gdb-17d3c7eccd41c5053c0b567eb67fe59808cc748a.tar.gz fsf-binutils-gdb-17d3c7eccd41c5053c0b567eb67fe59808cc748a.tar.bz2 |
x86: drop further EVEX table entries that can be served by VEX ones
A few cases were missed by 6df22cf64c93 ("x86: drop EVEX table entries
that can be served by VEX ones").
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 13 | ||||
-rw-r--r-- | opcodes/i386-dis-evex-prefix.h | 26 | ||||
-rw-r--r-- | opcodes/i386-dis-evex.h | 8 | ||||
-rw-r--r-- | opcodes/i386-dis.c | 20 |
4 files changed, 25 insertions, 42 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 52f7b89..7ade597 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,18 @@ 2020-07-14 Jan Beulich <jbeulich@suse.com> + * i386-dis.c (PREFIX_EVEX_0F2C, PREFIX_EVEX_0F2D, + PREFIX_EVEX_0F2E, PREFIX_EVEX_0F2F): Delete. + (prefix_table): Add EXxEVexS operand to vcvttss2si, vcvttsd2si, + vcvtss2si, vcvtsd2si, vucomiss, and vucomisd table entries. + Retain X macro and PREFIX_OPCODE use from tjhe EVEX table for + the latter two. + * i386-dis-evex.h (evex_table): Reference VEX table for opcodes + 0F2C, 0F2D, 0F2E, and 0F2F. + * i386-dis-evex-prefix.h: Delete opcode 0F2C, 0F2D, 0F2E, and + 0F2F table entries. + +2020-07-14 Jan Beulich <jbeulich@suse.com> + * i386-dis.c (OP_VexR, VexScalarR): New. (OP_EX_Vex, OP_XMM_Vex, EXdVexScalarS, EXqVexScalarS, XMVexScalar, d_scalar_swap_mode, q_scalar_swap_mode, diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h index 8e2c361..9b35532 100644 --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -32,32 +32,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F2A_P_3) }, }, - /* PREFIX_EVEX_0F2C */ - { - { Bad_Opcode }, - { "vcvttss2si", { Gdq, EXxmm_md, EXxEVexS }, 0 }, - { Bad_Opcode }, - { "vcvttsd2si", { Gdq, EXxmm_mq, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F2D */ - { - { Bad_Opcode }, - { "vcvtss2si", { Gdq, EXxmm_md, EXxEVexR }, 0 }, - { Bad_Opcode }, - { "vcvtsd2si", { Gdq, EXxmm_mq, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F2E */ - { - { "vucomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, - { Bad_Opcode }, - { "vucomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, - }, - /* PREFIX_EVEX_0F2F */ - { - { "vcomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, - { Bad_Opcode }, - { "vcomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, - }, /* PREFIX_EVEX_0F51 */ { { "vsqrtpX", { XM, EXx, EXxEVexR }, PREFIX_OPCODE }, diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h index 1f6635d..120c55d 100644 --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -51,10 +51,10 @@ static const struct dis386 evex_table[][256] = { { "vmovapX", { EXxS, XM }, PREFIX_OPCODE }, { PREFIX_TABLE (PREFIX_EVEX_0F2A) }, { MOD_TABLE (MOD_EVEX_0F2B) }, - { PREFIX_TABLE (PREFIX_EVEX_0F2C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F2D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F2E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F2F) }, + { PREFIX_TABLE (PREFIX_VEX_0F2C) }, + { PREFIX_TABLE (PREFIX_VEX_0F2D) }, + { PREFIX_TABLE (PREFIX_VEX_0F2E) }, + { PREFIX_TABLE (PREFIX_VEX_0F2F) }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 3b8eb30..acee3c9 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1411,10 +1411,6 @@ enum PREFIX_EVEX_0F12, PREFIX_EVEX_0F16, PREFIX_EVEX_0F2A, - PREFIX_EVEX_0F2C, - PREFIX_EVEX_0F2D, - PREFIX_EVEX_0F2E, - PREFIX_EVEX_0F2F, PREFIX_EVEX_0F51, PREFIX_EVEX_0F58, PREFIX_EVEX_0F59, @@ -4664,31 +4660,31 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_VEX_0F2C */ { { Bad_Opcode }, - { "vcvttss2si", { Gdq, EXxmm_md }, 0 }, + { "vcvttss2si", { Gdq, EXxmm_md, EXxEVexS }, 0 }, { Bad_Opcode }, - { "vcvttsd2si", { Gdq, EXxmm_mq }, 0 }, + { "vcvttsd2si", { Gdq, EXxmm_mq, EXxEVexS }, 0 }, }, /* PREFIX_VEX_0F2D */ { { Bad_Opcode }, - { "vcvtss2si", { Gdq, EXxmm_md }, 0 }, + { "vcvtss2si", { Gdq, EXxmm_md, EXxEVexR }, 0 }, { Bad_Opcode }, - { "vcvtsd2si", { Gdq, EXxmm_mq }, 0 }, + { "vcvtsd2si", { Gdq, EXxmm_mq, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F2E */ { - { "vucomiss", { XMScalar, EXxmm_md }, 0 }, + { "vucomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, { Bad_Opcode }, - { "vucomisd", { XMScalar, EXxmm_mq }, 0 }, + { "vucomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, }, /* PREFIX_VEX_0F2F */ { - { "vcomiss", { XMScalar, EXxmm_md }, 0 }, + { "vcomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, { Bad_Opcode }, - { "vcomisd", { XMScalar, EXxmm_mq }, 0 }, + { "vcomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, }, /* PREFIX_VEX_0F41 */ |