diff options
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 26 | ||||
-rw-r--r-- | opcodes/i386-dis-evex.h | 108 | ||||
-rw-r--r-- | opcodes/i386-dis.c | 14 |
3 files changed, 135 insertions, 13 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index aa9562c..b76a899 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,29 @@ +2019-06-17 H.J. Lu <hongjiu.lu@intel.com> + + PR binutils/24691 + * i386-dis-evex.h (evex_table): Update EVEX_W_0F3A23_P_2, + EVEX_W_0F3A38_P_2, EVEX_W_0F3A39_P_2, EVEX_W_0F3A3A_P_2, + EVEX_W_0F3A3B_P_2 and EVEX_W_0F3A43_P_2. + (evex_len_table): Add EVEX_LEN_0F3A23_P_2_W_0, + EVEX_LEN_0F3A23_P_2_W_1, EVEX_LEN_0F3A38_P_2_W_0, + EVEX_LEN_0F3A38_P_2_W_1, EVEX_LEN_0F3A39_P_2_W_0, + EVEX_LEN_0F3A39_P_2_W_1, EVEX_LEN_0F3A3A_P_2_W_0, + EVEX_LEN_0F3A3A_P_2_W_1, EVEX_LEN_0F3A3B_P_2_W_0, + EVEX_LEN_0F3A3B_P_2_W_1, EVEX_LEN_0F3A43_P_2_W_0 and + EVEX_LEN_0F3A43_P_2_W_1. + * i386-dis.c (EVEX_LEN_0F3A23_P_2_W_0): New enum. + (EVEX_LEN_0F3A23_P_2_W_1): Likewise. + (EVEX_LEN_0F3A38_P_2_W_0): Likewise. + (EVEX_LEN_0F3A38_P_2_W_1): Likewise. + (EVEX_LEN_0F3A39_P_2_W_0): Likewise. + (EVEX_LEN_0F3A39_P_2_W_1): Likewise. + (EVEX_LEN_0F3A3A_P_2_W_0): Likewise. + (EVEX_LEN_0F3A3A_P_2_W_1): Likewise. + (EVEX_LEN_0F3A3B_P_2_W_0): Likewise. + (EVEX_LEN_0F3A3B_P_2_W_1): Likewise. + (EVEX_LEN_0F3A43_P_2_W_0): Likewise. + (EVEX_LEN_0F3A43_P_2_W_1): Likewise. + 2019-06-14 Nick Clifton <nickc@redhat.com> * po/fr.po; Updated French translation. diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h index 0003e77..f34f8bc 100644 --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -3940,28 +3940,28 @@ static const struct dis386 evex_table[][256] = { }, /* EVEX_W_0F3A23_P_2 */ { - { "vshuff32x4", { XM, Vex, EXx, Ib }, 0 }, - { "vshuff64x2", { XM, Vex, EXx, Ib }, 0 }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_P_2_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_P_2_W_1) }, }, /* EVEX_W_0F3A38_P_2 */ { - { "vinserti32x4", { XM, Vex, EXxmm, Ib }, 0 }, - { "vinserti64x2", { XM, Vex, EXxmm, Ib }, 0 }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_P_2_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_P_2_W_1) }, }, /* EVEX_W_0F3A39_P_2 */ { - { "vextracti32x4", { EXxmm, XM, Ib }, 0 }, - { "vextracti64x2", { EXxmm, XM, Ib }, 0 }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_P_2_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_P_2_W_1) }, }, /* EVEX_W_0F3A3A_P_2 */ { - { "vinserti32x8", { XM, Vex, EXxmmq, Ib }, 0 }, - { "vinserti64x4", { XM, Vex, EXxmmq, Ib }, 0 }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_P_2_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_P_2_W_1) }, }, /* EVEX_W_0F3A3B_P_2 */ { - { "vextracti32x8", { EXxmmq, XM, Ib }, 0 }, - { "vextracti64x4", { EXxmmq, XM, Ib }, 0 }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_P_2_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_P_2_W_1) }, }, /* EVEX_W_0F3A3E_P_2 */ { @@ -3979,8 +3979,8 @@ static const struct dis386 evex_table[][256] = { }, /* EVEX_W_0F3A43_P_2 */ { - { "vshufi32x4", { XM, Vex, EXx, Ib }, 0 }, - { "vshufi64x2", { XM, Vex, EXx, Ib }, 0 }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_P_2_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_P_2_W_1) }, }, /* EVEX_W_0F3A50_P_2 */ { @@ -4185,4 +4185,88 @@ static const struct dis386 evex_table[][256] = { { "vextractf64x4", { EXxmmq, XM, Ib }, 0 }, }, + /* EVEX_LEN_0F3A23_P_2_W_0 */ + { + { Bad_Opcode }, + { "vshuff32x4", { XM, Vex, EXx, Ib }, 0 }, + { "vshuff32x4", { XM, Vex, EXx, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A23_P_2_W_1 */ + { + { Bad_Opcode }, + { "vshuff64x2", { XM, Vex, EXx, Ib }, 0 }, + { "vshuff64x2", { XM, Vex, EXx, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A38_P_2_W_0 */ + { + { Bad_Opcode }, + { "vinserti32x4", { XM, Vex, EXxmm, Ib }, 0 }, + { "vinserti32x4", { XM, Vex, EXxmm, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A38_P_2_W_1 */ + { + { Bad_Opcode }, + { "vinserti64x2", { XM, Vex, EXxmm, Ib }, 0 }, + { "vinserti64x2", { XM, Vex, EXxmm, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A39_P_2_W_0 */ + { + { Bad_Opcode }, + { "vextracti32x4", { EXxmm, XM, Ib }, 0 }, + { "vextracti32x4", { EXxmm, XM, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A39_P_2_W_1 */ + { + { Bad_Opcode }, + { "vextracti64x2", { EXxmm, XM, Ib }, 0 }, + { "vextracti64x2", { EXxmm, XM, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A3A_P_2_W_0 */ + { + { Bad_Opcode }, + { "vinserti32x8", { XM, Vex, EXxmmq, Ib }, 0 }, + { "vinserti32x8", { XM, Vex, EXxmmq, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A3A_P_2_W_1 */ + { + { Bad_Opcode }, + { "vinserti64x4", { XM, Vex, EXxmmq, Ib }, 0 }, + { "vinserti64x4", { XM, Vex, EXxmmq, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A3B_P_2_W_0 */ + { + { Bad_Opcode }, + { "vextracti32x8", { EXxmmq, XM, Ib }, 0 }, + { "vextracti32x8", { EXxmmq, XM, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A3B_P_2_W_1 */ + { + { Bad_Opcode }, + { "vextracti64x4", { EXxmmq, XM, Ib }, 0 }, + { "vextracti64x4", { EXxmmq, XM, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A43_P_2_W_0 */ + { + { Bad_Opcode }, + { "vshufi32x4", { XM, Vex, EXx, Ib }, 0 }, + { "vshufi32x4", { XM, Vex, EXx, Ib }, 0 }, + }, + + /* EVEX_LEN_0F3A43_P_2_W_1 */ + { + { Bad_Opcode }, + { "vshufi64x2", { XM, Vex, EXx, Ib }, 0 }, + { "vshufi64x2", { XM, Vex, EXx, Ib }, 0 }, + }, + #endif /* NEED_EVEX_LEN_TABLE */ diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 5d1bd6b..496b8f2 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1945,7 +1945,19 @@ enum EVEX_LEN_0F3A1A_P_2_W_0, EVEX_LEN_0F3A1A_P_2_W_1, EVEX_LEN_0F3A1B_P_2_W_0, - EVEX_LEN_0F3A1B_P_2_W_1 + EVEX_LEN_0F3A1B_P_2_W_1, + EVEX_LEN_0F3A23_P_2_W_0, + EVEX_LEN_0F3A23_P_2_W_1, + EVEX_LEN_0F3A38_P_2_W_0, + EVEX_LEN_0F3A38_P_2_W_1, + EVEX_LEN_0F3A39_P_2_W_0, + EVEX_LEN_0F3A39_P_2_W_1, + EVEX_LEN_0F3A3A_P_2_W_0, + EVEX_LEN_0F3A3A_P_2_W_1, + EVEX_LEN_0F3A3B_P_2_W_0, + EVEX_LEN_0F3A3B_P_2_W_1, + EVEX_LEN_0F3A43_P_2_W_0, + EVEX_LEN_0F3A43_P_2_W_1 }; enum |