aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog26
-rw-r--r--opcodes/i386-dis-evex.h108
-rw-r--r--opcodes/i386-dis.c14
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