aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog13
-rw-r--r--opcodes/i386-dis-evex-len.h45
-rw-r--r--opcodes/i386-dis-evex-prefix.h16
-rw-r--r--opcodes/i386-dis-evex-w.h2
-rw-r--r--opcodes/i386-dis.c9
5 files changed, 76 insertions, 9 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 296ef26..62f8a08 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,18 @@
2020-07-06 Jan Beulich <jbeulich@suse.com>
+ * i386-dis.c (EVEX_LEN_0FC4_P_2, EVEX_LEN_0FC5_P_2,
+ EVEX_LEN_0F3A14_P_2, EVEX_LEN_0F3A15_P_2, EVEX_LEN_0F3A16_P_2,
+ EVEX_LEN_0F3A17_P_2, EVEX_LEN_0F3A20_P_2,
+ EVEX_LEN_0F3A21_P_2_W_0, EVEX_LEN_0F3A22_P_2): New enumerators.
+ * i386-dis-evex-len.h (evex_len_table): New EVEX_LEN_0FC4_P_2,
+ EVEX_LEN_0FC5_P_2, EVEX_LEN_0F3A14_P_2, EVEX_LEN_0F3A15_P_2,
+ EVEX_LEN_0F3A16_P_2, EVEX_LEN_0F3A17_P_2, EVEX_LEN_0F3A20_P_2,
+ EVEX_LEN_0F3A21_P_2_W_0, and EVEX_LEN_0F3A22_P_2 table entries.
+ * i386-dis-evex-prefix.h, i386-dis-evex-w.h: Reference the above
+ entries.
+
+2020-07-06 Jan Beulich <jbeulich@suse.com>
+
* i386-dis.c (PREFIX_EVEX_0F3A1D, EVEX_W_0F3A1D_P_2): Delete.
(VEX_W_0F3813_P_2, VEX_W_0F3A1D_P_2): New enumerators.
(prefix_table): Reference VEX_W_0F3813_P_2 and VEX_W_0F3A1D_P_2
diff --git a/opcodes/i386-dis-evex-len.h b/opcodes/i386-dis-evex-len.h
index ce58199..51ce98f 100644
--- a/opcodes/i386-dis-evex-len.h
+++ b/opcodes/i386-dis-evex-len.h
@@ -14,6 +14,16 @@ static const struct dis386 evex_len_table[][3] = {
{ "vmovK", { Edq, XMScalar }, 0 },
},
+ /* EVEX_LEN_0FC4_P_2 */
+ {
+ { "vpinsrw", { XM, Vex128, Edqw, Ib }, 0 },
+ },
+
+ /* EVEX_LEN_0FC5_P_2 */
+ {
+ { "vpextrw", { Gdq, XS, Ib }, 0 },
+ },
+
/* EVEX_LEN_0FD6_P_2 */
{
{ VEX_W_TABLE (EVEX_W_0FD6_P_2) },
@@ -173,6 +183,26 @@ static const struct dis386 evex_len_table[][3] = {
{ "vscatterpf1qpd", { MVexVSIBQWpX }, 0 },
},
+ /* EVEX_LEN_0F3A14_P_2 */
+ {
+ { "vpextrb", { Edqb, XM, Ib }, 0 },
+ },
+
+ /* EVEX_LEN_0F3A15_P_2 */
+ {
+ { "vpextrw", { Edqw, XM, Ib }, 0 },
+ },
+
+ /* EVEX_LEN_0F3A16_P_2 */
+ {
+ { "vpextrK", { Edq, XM, Ib }, 0 },
+ },
+
+ /* EVEX_LEN_0F3A17_P_2 */
+ {
+ { "vextractps", { Edqd, XMM, Ib }, 0 },
+ },
+
/* EVEX_LEN_0F3A18_P_2_W_0 */
{
{ Bad_Opcode },
@@ -229,6 +259,21 @@ static const struct dis386 evex_len_table[][3] = {
{ "vextractf64x4", { EXxmmq, XM, Ib }, 0 },
},
+ /* EVEX_LEN_0F3A20_P_2 */
+ {
+ { "vpinsrb", { XM, Vex128, Edqb, Ib }, 0 },
+ },
+
+ /* EVEX_LEN_0F3A21_P_2_W_0 */
+ {
+ { "vinsertps", { XMM, Vex, EXxmm_md, Ib }, 0 },
+ },
+
+ /* EVEX_LEN_0F3A22_P_2 */
+ {
+ { "vpinsrK", { XM, Vex128, Edq, Ib }, 0 },
+ },
+
/* EVEX_LEN_0F3A23_P_2_W_0 */
{
{ Bad_Opcode },
diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h
index 01998c5..f5cce6f 100644
--- a/opcodes/i386-dis-evex-prefix.h
+++ b/opcodes/i386-dis-evex-prefix.h
@@ -330,13 +330,13 @@
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vpinsrw", { XM, Vex128, Edw, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0FC4_P_2) },
},
/* PREFIX_EVEX_0FC5 */
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vpextrw", { Gdq, XS, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0FC5_P_2) },
},
/* PREFIX_EVEX_0FD2 */
{
@@ -1191,25 +1191,25 @@
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vpextrb", { Edqb, XM, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A14_P_2) },
},
/* PREFIX_EVEX_0F3A15 */
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vpextrw", { Edqw, XM, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A15_P_2) },
},
/* PREFIX_EVEX_0F3A16 */
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vpextrK", { Edq, XM, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A16_P_2) },
},
/* PREFIX_EVEX_0F3A17 */
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vextractps", { Edqd, XMM, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A17_P_2) },
},
/* PREFIX_EVEX_0F3A18 */
{
@@ -1251,7 +1251,7 @@
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vpinsrb", { XM, Vex128, Edb, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A20_P_2) },
},
/* PREFIX_EVEX_0F3A21 */
{
@@ -1263,7 +1263,7 @@
{
{ Bad_Opcode },
{ Bad_Opcode },
- { "vpinsrK", { XM, Vex128, Edq, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A22_P_2) },
},
/* PREFIX_EVEX_0F3A23 */
{
diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h
index ed7968a..72cd648 100644
--- a/opcodes/i386-dis-evex-w.h
+++ b/opcodes/i386-dis-evex-w.h
@@ -740,7 +740,7 @@
},
/* EVEX_W_0F3A21_P_2 */
{
- { "vinsertps", { XMM, Vex, EXxmm_md, Ib }, 0 },
+ { EVEX_LEN_TABLE (EVEX_LEN_0F3A21_P_2_W_0) },
},
/* EVEX_W_0F3A23_P_2 */
{
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 7f521b2..25a2f13 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -1830,6 +1830,8 @@ enum
EVEX_LEN_0F6E_P_2 = 0,
EVEX_LEN_0F7E_P_1,
EVEX_LEN_0F7E_P_2,
+ EVEX_LEN_0FC4_P_2,
+ EVEX_LEN_0FC5_P_2,
EVEX_LEN_0FD6_P_2,
EVEX_LEN_0F3819_P_2_W_0,
EVEX_LEN_0F3819_P_2_W_1,
@@ -1853,6 +1855,10 @@ enum
EVEX_LEN_0F38C7_R_5_P_2_W_1,
EVEX_LEN_0F38C7_R_6_P_2_W_0,
EVEX_LEN_0F38C7_R_6_P_2_W_1,
+ EVEX_LEN_0F3A14_P_2,
+ EVEX_LEN_0F3A15_P_2,
+ EVEX_LEN_0F3A16_P_2,
+ EVEX_LEN_0F3A17_P_2,
EVEX_LEN_0F3A18_P_2_W_0,
EVEX_LEN_0F3A18_P_2_W_1,
EVEX_LEN_0F3A19_P_2_W_0,
@@ -1861,6 +1867,9 @@ enum
EVEX_LEN_0F3A1A_P_2_W_1,
EVEX_LEN_0F3A1B_P_2_W_0,
EVEX_LEN_0F3A1B_P_2_W_1,
+ EVEX_LEN_0F3A20_P_2,
+ EVEX_LEN_0F3A21_P_2_W_0,
+ EVEX_LEN_0F3A22_P_2,
EVEX_LEN_0F3A23_P_2_W_0,
EVEX_LEN_0F3A23_P_2_W_1,
EVEX_LEN_0F3A38_P_2_W_0,