aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2019-06-27 08:50:28 +0200
committerJan Beulich <jbeulich@suse.com>2019-06-27 08:50:28 +0200
commit2b7bcc8740dda3f314284169aaf1759a9f56025f (patch)
tree265576874ee97d7639281d6ce247b4df7f5edf91 /opcodes
parentc1dc7af52143966da8065b527e7a7000cf9f7705 (diff)
downloadgdb-2b7bcc8740dda3f314284169aaf1759a9f56025f.zip
gdb-2b7bcc8740dda3f314284169aaf1759a9f56025f.tar.gz
gdb-2b7bcc8740dda3f314284169aaf1759a9f56025f.tar.bz2
x86: fold AVX scalar to/from int conversion insns
There's no point doing a separate decode of the VEX.L bit - both decoded forms are identical.
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog9
-rw-r--r--opcodes/i386-dis.c54
2 files changed, 15 insertions, 48 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 5a88657..abf77be 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,14 @@
2019-06-27 Jan Beulich <jbeulich@suse.com>
+ * i386-dis.c (VEX_LEN_0F2A_P_1, VEX_LEN_0F2A_P_3,
+ VEX_LEN_0F2C_P_1, VEX_LEN_0F2C_P_3, VEX_LEN_0F2D_P_1,
+ VEX_LEN_0F2D_P_3): Delete.
+ (vex_len_table): Move vcvtsi2ss, vcvtsi2sd, vcvttss2si,
+ vcvttsd2si, vcvtss2si, and vcvtsd2si leaf entries ...
+ (prefix_table): ... here.
+
+2019-06-27 Jan Beulich <jbeulich@suse.com>
+
* i386-dis.c (Iq): Delete.
(Id): New.
(reg_table): Use it for lwpins, lwpval, and bextr. Use Edq for
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index d892eab..281d02c 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -1818,12 +1818,6 @@ enum
VEX_LEN_0F16_P_0_M_1,
VEX_LEN_0F16_P_2,
VEX_LEN_0F17_M_0,
- VEX_LEN_0F2A_P_1,
- VEX_LEN_0F2A_P_3,
- VEX_LEN_0F2C_P_1,
- VEX_LEN_0F2C_P_3,
- VEX_LEN_0F2D_P_1,
- VEX_LEN_0F2D_P_3,
VEX_LEN_0F41_P_0,
VEX_LEN_0F41_P_2,
VEX_LEN_0F42_P_0,
@@ -4696,25 +4690,25 @@ static const struct dis386 prefix_table[][4] = {
/* PREFIX_VEX_0F2A */
{
{ Bad_Opcode },
- { VEX_LEN_TABLE (VEX_LEN_0F2A_P_1) },
+ { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Edq }, 0 },
{ Bad_Opcode },
- { VEX_LEN_TABLE (VEX_LEN_0F2A_P_3) },
+ { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Edq }, 0 },
},
/* PREFIX_VEX_0F2C */
{
{ Bad_Opcode },
- { VEX_LEN_TABLE (VEX_LEN_0F2C_P_1) },
+ { "vcvttss2si", { Gdq, EXdScalar }, 0 },
{ Bad_Opcode },
- { VEX_LEN_TABLE (VEX_LEN_0F2C_P_3) },
+ { "vcvttsd2si", { Gdq, EXqScalar }, 0 },
},
/* PREFIX_VEX_0F2D */
{
{ Bad_Opcode },
- { VEX_LEN_TABLE (VEX_LEN_0F2D_P_1) },
+ { "vcvtss2si", { Gdq, EXdScalar }, 0 },
{ Bad_Opcode },
- { VEX_LEN_TABLE (VEX_LEN_0F2D_P_3) },
+ { "vcvtsd2si", { Gdq, EXqScalar }, 0 },
},
/* PREFIX_VEX_0F2E */
@@ -9341,42 +9335,6 @@ static const struct dis386 vex_len_table[][2] = {
{ "vmovhpX", { EXq, XM }, 0 },
},
- /* VEX_LEN_0F2A_P_1 */
- {
- { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Edq }, 0 },
- { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Edq }, 0 },
- },
-
- /* VEX_LEN_0F2A_P_3 */
- {
- { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Edq }, 0 },
- { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Edq }, 0 },
- },
-
- /* VEX_LEN_0F2C_P_1 */
- {
- { "vcvttss2si", { Gdq, EXdScalar }, 0 },
- { "vcvttss2si", { Gdq, EXdScalar }, 0 },
- },
-
- /* VEX_LEN_0F2C_P_3 */
- {
- { "vcvttsd2si", { Gdq, EXqScalar }, 0 },
- { "vcvttsd2si", { Gdq, EXqScalar }, 0 },
- },
-
- /* VEX_LEN_0F2D_P_1 */
- {
- { "vcvtss2si", { Gdq, EXdScalar }, 0 },
- { "vcvtss2si", { Gdq, EXdScalar }, 0 },
- },
-
- /* VEX_LEN_0F2D_P_3 */
- {
- { "vcvtsd2si", { Gdq, EXqScalar }, 0 },
- { "vcvtsd2si", { Gdq, EXqScalar }, 0 },
- },
-
/* VEX_LEN_0F41_P_0 */
{
{ Bad_Opcode },