aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2020-07-14 10:32:51 +0200
committerJan Beulich <jbeulich@suse.com>2020-07-14 10:32:51 +0200
commit17d3c7eccd41c5053c0b567eb67fe59808cc748a (patch)
treeba15964744321c2125ff8d8d8a3270ceb1eeed99
parent41f5efc6855a2a9211775308c99ebb3f28a5e729 (diff)
downloadgdb-17d3c7eccd41c5053c0b567eb67fe59808cc748a.zip
gdb-17d3c7eccd41c5053c0b567eb67fe59808cc748a.tar.gz
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").
-rw-r--r--opcodes/ChangeLog13
-rw-r--r--opcodes/i386-dis-evex-prefix.h26
-rw-r--r--opcodes/i386-dis-evex.h8
-rw-r--r--opcodes/i386-dis.c20
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 */