From 6df22cf64c935c7a467759048858bb7e8ef70235 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 6 Jul 2020 13:40:13 +0200 Subject: [PATCH] x86: drop EVEX table entries that can be served by VEX ones The duplication is not only space inefficient, but also risks entries going out of sync (some of which that I became aware of while doing this work will get addressed subsequently). Right here note that for VGF2P8MULB this also addresses the prior lack of EVEX.W decoding (i.e. a first example of out of sync entries). This introduces EXxEVexR to some VEX templates, on the basis that this operand is benign there and only relevant when EVEX encoding ends up reaching these entries. --- opcodes/ChangeLog | 78 ++++++ opcodes/i386-dis-evex-prefix.h | 480 --------------------------------- opcodes/i386-dis-evex-w.h | 34 --- opcodes/i386-dis-evex.h | 160 +++++------ opcodes/i386-dis.c | 146 ++-------- 5 files changed, 185 insertions(+), 713 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 205db9b06d9..f5463b0b58f 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,81 @@ +2020-07-06 Jan Beulich + + * i386-dis.c (PREFIX_EVEX_0F60, PREFIX_EVEX_0F61, + PREFIX_EVEX_0F63, PREFIX_EVEX_0F67, PREFIX_EVEX_0F68, + PREFIX_EVEX_0F69, PREFIX_EVEX_0FD1, PREFIX_EVEX_0FD5, + PREFIX_EVEX_0FD8, PREFIX_EVEX_0FD9, PREFIX_EVEX_0FDA, + PREFIX_EVEX_0FDC, PREFIX_EVEX_0FDD, PREFIX_EVEX_0FDE, + PREFIX_EVEX_0FE0, PREFIX_EVEX_0FE1, PREFIX_EVEX_0FE3, + PREFIX_EVEX_0FE4, PREFIX_EVEX_0FE5, PREFIX_EVEX_0FE8, + PREFIX_EVEX_0FE9, PREFIX_EVEX_0FEA, PREFIX_EVEX_0FEC, + PREFIX_EVEX_0FED, PREFIX_EVEX_0FEE, PREFIX_EVEX_0FF1, + PREFIX_EVEX_0FF5, PREFIX_EVEX_0FF6, PREFIX_EVEX_0FF8, + PREFIX_EVEX_0FF9, PREFIX_EVEX_0FFC, PREFIX_EVEX_0FFD, + PREFIX_EVEX_0F3800, PREFIX_EVEX_0F3804, PREFIX_EVEX_0F380B, + PREFIX_EVEX_0F380C, PREFIX_EVEX_0F3818, PREFIX_EVEX_0F381C, + PREFIX_EVEX_0F381D, PREFIX_EVEX_0F383C, PREFIX_EVEX_0F383E, + PREFIX_EVEX_0F3858, PREFIX_EVEX_0F3878, PREFIX_EVEX_0F3879, + PREFIX_EVEX_0F3896, PREFIX_EVEX_0F3897, PREFIX_EVEX_0F3898, + PREFIX_EVEX_0F3899, PREFIX_EVEX_0F389C, PREFIX_EVEX_0F389D, + PREFIX_EVEX_0F389E, PREFIX_EVEX_0F389F, PREFIX_EVEX_0F38A6, + PREFIX_EVEX_0F38A7, PREFIX_EVEX_0F38A8, PREFIX_EVEX_0F38A9, + PREFIX_EVEX_0F38AC, PREFIX_EVEX_0F38AD, PREFIX_EVEX_0F38AE, + PREFIX_EVEX_0F38AF, PREFIX_EVEX_0F38B6, PREFIX_EVEX_0F38B7, + PREFIX_EVEX_0F38B8, PREFIX_EVEX_0F38B9, PREFIX_EVEX_0F38BA, + PREFIX_EVEX_0F38BB, PREFIX_EVEX_0F38BC, PREFIX_EVEX_0F38BD, + PREFIX_EVEX_0F38BE, PREFIX_EVEX_0F38BF, PREFIX_EVEX_0F38CF, + PREFIX_EVEX_0F38DC, PREFIX_EVEX_0F38DD, PREFIX_EVEX_0F38DE, + PREFIX_EVEX_0F38DF, PREFIX_EVEX_0F3A04, PREFIX_EVEX_0F3A0F, + PREFIX_EVEX_0F3A44, PREFIX_EVEX_0F3ACE, PREFIX_EVEX_0F3ACF, + EVEX_W_0F380C_P_2, EVEX_W_0F3818_P_2, EVEX_W_0F3858_P_2, + EVEX_W_0F3878_P_2, EVEX_W_0F3879_P_2, EVEX_W_0F3A04_P_2, + EVEX_W_0F3ACE_P_2, EVEX_W_0F3ACF_P_2): Delete. + (prefix_table): Add EXxEVexR to FMA table entries. + (OP_Rounding): Move abort() invocation. + * i386-dis-evex.h (evex_table): Reference VEX table for opcodes + 0F60, 0F61, 0F63, 0F67, 0F68, 0F69, 0FD1, 0FD5, 0FD8, 0FD9, + 0FDA, 0FDC, 0FDD, 0FDE, 0FE0, 0FE1, 0FE3, 0FE4, 0FE5, 0FE8, + 0FE9, 0FEA, 0FEC, 0FED, 0FEE, 0FF1, 0FF5, 0FF6, 0FF8, 0FF9, + 0FFC, 0FFD, 0F3800, 0F3804, 0F380B, 0F380C, 0F3818, 0F381C, + 0F381D, 0F383C, 0F383E, 0F3858, 0F3878, 0F3879, 0F3896, 0F3897, + 0F3898, 0F3899, 0F389C, 0F389D, 0F389E, 0F389F, 0F38A6, 0F38A7, + 0F38A8, 0F38A9, 0F38AC, 0F38AD, 0F38AE, 0F38AF, 0F38B6, 0F38B7, + 0F38B8, 0F38B9, 0F38BA, 0F38BB, 0F38BC, 0F38BD, 0F38BE, 0F38BF, + 0F38CF, 0F38DC, 0F38DD, 0F38DE, 0F38DF, 0F3A04, 0F3A0F, 0F3A44, + 0F3ACE, 0F3ACF. + * i386-dis-evex-prefix.h (PREFIX_EVEX_0F60, PREFIX_EVEX_0F61, + PREFIX_EVEX_0F63, PREFIX_EVEX_0F67, PREFIX_EVEX_0F68, + PREFIX_EVEX_0F69, PREFIX_EVEX_0FD1, PREFIX_EVEX_0FD5, + PREFIX_EVEX_0FD8, PREFIX_EVEX_0FD9, PREFIX_EVEX_0FDA, + PREFIX_EVEX_0FDC, PREFIX_EVEX_0FDD, PREFIX_EVEX_0FDE, + PREFIX_EVEX_0FE0, PREFIX_EVEX_0FE1, PREFIX_EVEX_0FE3, + PREFIX_EVEX_0FE4, PREFIX_EVEX_0FE5, PREFIX_EVEX_0FE8, + PREFIX_EVEX_0FE9, PREFIX_EVEX_0FEA, PREFIX_EVEX_0FEC, + PREFIX_EVEX_0FED, PREFIX_EVEX_0FEE, PREFIX_EVEX_0FF1, + PREFIX_EVEX_0FF5, PREFIX_EVEX_0FF6, PREFIX_EVEX_0FF8, + PREFIX_EVEX_0FF9, PREFIX_EVEX_0FFC, PREFIX_EVEX_0FFD, + PREFIX_EVEX_0F3800, PREFIX_EVEX_0F3804, PREFIX_EVEX_0F380B, + PREFIX_EVEX_0F380C, PREFIX_EVEX_0F3818, PREFIX_EVEX_0F381C, + PREFIX_EVEX_0F381D, PREFIX_EVEX_0F383C, PREFIX_EVEX_0F383E, + PREFIX_EVEX_0F3858, PREFIX_EVEX_0F3878, PREFIX_EVEX_0F3879, + PREFIX_EVEX_0F3896, PREFIX_EVEX_0F3897, PREFIX_EVEX_0F3898, + PREFIX_EVEX_0F3899, PREFIX_EVEX_0F389C, PREFIX_EVEX_0F389D, + PREFIX_EVEX_0F389E, PREFIX_EVEX_0F389F, PREFIX_EVEX_0F38A6, + PREFIX_EVEX_0F38A7, PREFIX_EVEX_0F38A8, PREFIX_EVEX_0F38A9, + PREFIX_EVEX_0F38AC, PREFIX_EVEX_0F38AD, PREFIX_EVEX_0F38AE, + PREFIX_EVEX_0F38AF, PREFIX_EVEX_0F38B6, PREFIX_EVEX_0F38B7, + PREFIX_EVEX_0F38B8, PREFIX_EVEX_0F38B9, PREFIX_EVEX_0F38BA, + PREFIX_EVEX_0F38BB, PREFIX_EVEX_0F38BC, PREFIX_EVEX_0F38BD, + PREFIX_EVEX_0F38BE, PREFIX_EVEX_0F38BF, PREFIX_EVEX_0F38CF, + PREFIX_EVEX_0F38DC, PREFIX_EVEX_0F38DD, PREFIX_EVEX_0F38DE, + PREFIX_EVEX_0F38DF, PREFIX_EVEX_0F3A04, PREFIX_EVEX_0F3A0F, + PREFIX_EVEX_0F3A44, PREFIX_EVEX_0F3ACE, PREFIX_EVEX_0F3ACF): + Delete table entries. + * i386-dis-evex-w.h (EVEX_W_0F380C_P_2, EVEX_W_0F3818_P_2, + EVEX_W_0F3858_P_2, EVEX_W_0F3878_P_2, EVEX_W_0F3879_P_2, + EVEX_W_0F3A04_P_2, EVEX_W_0F3ACE_P_2, EVEX_W_0F3ACF_P_2): + Likewise. + 2020-07-06 Jan Beulich * i386-dis.c (EXqScalarS): Delete. diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h index e988c099fe3..413fd9724ec 100644 --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -120,30 +120,12 @@ { "vmaxpX", { XM, Vex, EXx, EXxEVexS }, PREFIX_OPCODE }, { VEX_W_TABLE (EVEX_W_0F5F_P_3) }, }, - /* PREFIX_EVEX_0F60 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpcklbw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F61 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpcklwd", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0F62 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F62_P_2) }, }, - /* PREFIX_EVEX_0F63 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpacksswb", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0F64 */ { { Bad_Opcode }, @@ -162,24 +144,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F66_P_2) }, }, - /* PREFIX_EVEX_0F67 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpackuswb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F68 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpckhbw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F69 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpckhwd", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0F6A */ { { Bad_Opcode }, @@ -374,12 +338,6 @@ { Bad_Opcode }, { "vpextrw", { Gdq, XS, Ib }, 0 }, }, - /* PREFIX_EVEX_0FD1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlw", { XM, Vex, EXxmm }, 0 }, - }, /* PREFIX_EVEX_0FD2 */ { { Bad_Opcode }, @@ -398,102 +356,30 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FD4_P_2) }, }, - /* PREFIX_EVEX_0FD5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmullw", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FD6 */ { { Bad_Opcode }, { Bad_Opcode }, { EVEX_LEN_TABLE (EVEX_LEN_0FD6_P_2) }, }, - /* PREFIX_EVEX_0FD8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubusb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FD9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubusw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FDA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminub", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FDB */ { { Bad_Opcode }, { Bad_Opcode }, { "vpand%LW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0FDC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddusb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FDD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddusw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FDE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxub", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FDF */ { { Bad_Opcode }, { Bad_Opcode }, { "vpandn%LW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0FE0 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpavgb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FE1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsraw", { XM, Vex, EXxmm }, 0 }, - }, /* PREFIX_EVEX_0FE2 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsra%LW", { XM, Vex, EXxmm }, 0 }, }, - /* PREFIX_EVEX_0FE3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpavgw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FE4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmulhuw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FE5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmulhw", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FE6 */ { { Bad_Opcode }, @@ -507,60 +393,18 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FE7_P_2) }, }, - /* PREFIX_EVEX_0FE8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubsb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FE9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubsw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FEA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminsw", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FEB */ { { Bad_Opcode }, { Bad_Opcode }, { "vpor%LW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0FEC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddsb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FED */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddsw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FEE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxsw", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FEF */ { { Bad_Opcode }, { Bad_Opcode }, { "vpxor%LW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0FF1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllw", { XM, Vex, EXxmm }, 0 }, - }, /* PREFIX_EVEX_0FF2 */ { { Bad_Opcode }, @@ -579,30 +423,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FF4_P_2) }, }, - /* PREFIX_EVEX_0FF5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaddwd", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FF6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsadbw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FF8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FF9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubw", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FFA */ { { Bad_Opcode }, @@ -615,48 +435,12 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FFB_P_2) }, }, - /* PREFIX_EVEX_0FFC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FFD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddw", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0FFE */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FFE_P_2) }, }, - /* PREFIX_EVEX_0F3800 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpshufb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3804 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaddubsw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F380B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmulhrsw", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F380C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F380C_P_2) }, - }, /* PREFIX_EVEX_0F380D */ { { Bad_Opcode }, @@ -705,12 +489,6 @@ { Bad_Opcode }, { "vpermp%XW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0F3818 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3818_P_2) }, - }, /* PREFIX_EVEX_0F3819 */ { { Bad_Opcode }, @@ -729,18 +507,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F381B_P_2) }, }, - /* PREFIX_EVEX_0F381C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpabsb", { XM, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F381D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpabsw", { XM, EXx }, 0 }, - }, /* PREFIX_EVEX_0F381E */ { { Bad_Opcode }, @@ -909,24 +675,12 @@ { Bad_Opcode }, { "vpminu%LW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0F383C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxsb", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0F383D */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaxs%LW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0F383E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxuw", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0F383F */ { { Bad_Opcode }, @@ -1037,12 +791,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3855_P_2) }, }, - /* PREFIX_EVEX_0F3858 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3858_P_2) }, - }, /* PREFIX_EVEX_0F3859 */ { { Bad_Opcode }, @@ -1141,18 +889,6 @@ { Bad_Opcode }, { "vpermi2p%XW", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0F3878 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3878_P_2) }, - }, - /* PREFIX_EVEX_0F3879 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3879_P_2) }, - }, /* PREFIX_EVEX_0F387A */ { { Bad_Opcode }, @@ -1255,30 +991,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3893_P_2) }, }, - /* PREFIX_EVEX_0F3896 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F3897 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F3898 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F3899 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, /* PREFIX_EVEX_0F389A */ { { Bad_Opcode }, @@ -1293,30 +1005,6 @@ { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, { "v4fmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, - /* PREFIX_EVEX_0F389C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F389D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F389E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F389F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, /* PREFIX_EVEX_0F38A0 */ { { Bad_Opcode }, @@ -1341,30 +1029,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F38A3_P_2) }, }, - /* PREFIX_EVEX_0F38A6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38A7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38A8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38A9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, /* PREFIX_EVEX_0F38AA */ { { Bad_Opcode }, @@ -1379,30 +1043,6 @@ { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, { "v4fnmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, - /* PREFIX_EVEX_0F38AC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38AD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38AE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38AF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, /* PREFIX_EVEX_0F38B4 */ { { Bad_Opcode }, @@ -1415,66 +1055,6 @@ { Bad_Opcode }, { "vpmadd52huq", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0F38B6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38B7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38B8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38B9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38BA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38BB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38BC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38BD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38BE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F38BF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, /* PREFIX_EVEX_0F38C4 */ { { Bad_Opcode }, @@ -1559,36 +1139,6 @@ { Bad_Opcode }, { "vrsqrt28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, 0 }, }, - /* PREFIX_EVEX_0F38CF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgf2p8mulb", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F38DC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesenc", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F38DD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesenclast", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F38DE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesdec", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F38DF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesdeclast", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0F3A00 */ { { Bad_Opcode }, @@ -1607,12 +1157,6 @@ { Bad_Opcode }, { "valign%LW", { XM, Vex, EXx, Ib }, 0 }, }, - /* PREFIX_EVEX_0F3A04 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A04_P_2) }, - }, /* PREFIX_EVEX_0F3A05 */ { { Bad_Opcode }, @@ -1643,12 +1187,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A0B_P_2) }, }, - /* PREFIX_EVEX_0F3A0F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpalignr", { XM, Vex, EXx, Ib }, 0 }, - }, /* PREFIX_EVEX_0F3A14 */ { { Bad_Opcode }, @@ -1805,12 +1343,6 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A43_P_2) }, }, - /* PREFIX_EVEX_0F3A44 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpclmulqdq", { XM, Vex, EXx, PCLMUL }, 0 }, - }, /* PREFIX_EVEX_0F3A50 */ { { Bad_Opcode }, @@ -1883,15 +1415,3 @@ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A73_P_2) }, }, - /* PREFIX_EVEX_0F3ACE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3ACE_P_2) }, - }, - /* PREFIX_EVEX_0F3ACF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3ACF_P_2) }, - }, diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h index 45ecb87ab44..dd3caad33c0 100644 --- a/opcodes/i386-dis-evex-w.h +++ b/opcodes/i386-dis-evex-w.h @@ -342,10 +342,6 @@ { { "vpaddd", { XM, Vex, EXx }, 0 }, }, - /* EVEX_W_0F380C_P_2 */ - { - { "vpermilps", { XM, Vex, EXx }, 0 }, - }, /* EVEX_W_0F380D_P_2 */ { { Bad_Opcode }, @@ -394,10 +390,6 @@ { { "vpmovusqd", { EXxmmq, XM }, 0 }, }, - /* EVEX_W_0F3818_P_2 */ - { - { "vbroadcastss", { XM, EXxmm_md }, 0 }, - }, /* EVEX_W_0F3819_P_2 */ { { EVEX_LEN_TABLE (EVEX_LEN_0F3819_P_2_W_0) }, @@ -560,10 +552,6 @@ { "vpopcntd", { XM, EXx }, 0 }, { "vpopcntq", { XM, EXx }, 0 }, }, - /* EVEX_W_0F3858_P_2 */ - { - { "vpbroadcastd", { XM, EXxmm_md }, 0 }, - }, /* EVEX_W_0F3859_P_2 */ { { "vbroadcasti32x2", { XM, EXxmm_mq }, 0 }, @@ -634,14 +622,6 @@ { "vpermi2b", { XM, Vex, EXx }, 0 }, { "vpermi2w", { XM, Vex, EXx }, 0 }, }, - /* EVEX_W_0F3878_P_2 */ - { - { "vpbroadcastb", { XM, EXxmm_mb }, 0 }, - }, - /* EVEX_W_0F3879_P_2 */ - { - { "vpbroadcastw", { XM, EXxmm_mw }, 0 }, - }, /* EVEX_W_0F387A_P_2 */ { { "vpbroadcastb", { XM, Rd }, 0 }, @@ -715,10 +695,6 @@ { Bad_Opcode }, { "vpermpd", { XM, EXx, Ib }, 0 }, }, - /* EVEX_W_0F3A04_P_2 */ - { - { "vpermilps", { XM, EXx, Ib }, 0 }, - }, /* EVEX_W_0F3A05_P_2 */ { { Bad_Opcode }, @@ -864,13 +840,3 @@ { "vpshrdd", { XM, Vex, EXx, Ib }, 0 }, { "vpshrdq", { XM, Vex, EXx, Ib }, 0 }, }, - /* EVEX_W_0F3ACE_P_2 */ - { - { Bad_Opcode }, - { "vgf2p8affineqb", { XM, Vex, EXx, Ib }, 0 }, - }, - /* EVEX_W_0F3ACF_P_2 */ - { - { Bad_Opcode }, - { "vgf2p8affineinvqb", { XM, Vex, EXx, Ib }, 0 }, - }, diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h index 6f1fe944d64..249812b8304 100644 --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -110,17 +110,17 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F5E) }, { PREFIX_TABLE (PREFIX_EVEX_0F5F) }, /* 60 */ - { PREFIX_TABLE (PREFIX_EVEX_0F60) }, - { PREFIX_TABLE (PREFIX_EVEX_0F61) }, + { PREFIX_TABLE (PREFIX_VEX_0F60) }, + { PREFIX_TABLE (PREFIX_VEX_0F61) }, { PREFIX_TABLE (PREFIX_EVEX_0F62) }, - { PREFIX_TABLE (PREFIX_EVEX_0F63) }, + { PREFIX_TABLE (PREFIX_VEX_0F63) }, { PREFIX_TABLE (PREFIX_EVEX_0F64) }, { PREFIX_TABLE (PREFIX_EVEX_0F65) }, { PREFIX_TABLE (PREFIX_EVEX_0F66) }, - { PREFIX_TABLE (PREFIX_EVEX_0F67) }, + { PREFIX_TABLE (PREFIX_VEX_0F67) }, /* 68 */ - { PREFIX_TABLE (PREFIX_EVEX_0F68) }, - { PREFIX_TABLE (PREFIX_EVEX_0F69) }, + { PREFIX_TABLE (PREFIX_VEX_0F68) }, + { PREFIX_TABLE (PREFIX_VEX_0F69) }, { PREFIX_TABLE (PREFIX_EVEX_0F6A) }, { PREFIX_TABLE (PREFIX_EVEX_0F6B) }, { PREFIX_TABLE (PREFIX_EVEX_0F6C) }, @@ -237,67 +237,67 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, /* D0 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0FD1) }, + { PREFIX_TABLE (PREFIX_VEX_0FD1) }, { PREFIX_TABLE (PREFIX_EVEX_0FD2) }, { PREFIX_TABLE (PREFIX_EVEX_0FD3) }, { PREFIX_TABLE (PREFIX_EVEX_0FD4) }, - { PREFIX_TABLE (PREFIX_EVEX_0FD5) }, + { PREFIX_TABLE (PREFIX_VEX_0FD5) }, { PREFIX_TABLE (PREFIX_EVEX_0FD6) }, { Bad_Opcode }, /* D8 */ - { PREFIX_TABLE (PREFIX_EVEX_0FD8) }, - { PREFIX_TABLE (PREFIX_EVEX_0FD9) }, - { PREFIX_TABLE (PREFIX_EVEX_0FDA) }, + { PREFIX_TABLE (PREFIX_VEX_0FD8) }, + { PREFIX_TABLE (PREFIX_VEX_0FD9) }, + { PREFIX_TABLE (PREFIX_VEX_0FDA) }, { PREFIX_TABLE (PREFIX_EVEX_0FDB) }, - { PREFIX_TABLE (PREFIX_EVEX_0FDC) }, - { PREFIX_TABLE (PREFIX_EVEX_0FDD) }, - { PREFIX_TABLE (PREFIX_EVEX_0FDE) }, + { PREFIX_TABLE (PREFIX_VEX_0FDC) }, + { PREFIX_TABLE (PREFIX_VEX_0FDD) }, + { PREFIX_TABLE (PREFIX_VEX_0FDE) }, { PREFIX_TABLE (PREFIX_EVEX_0FDF) }, /* E0 */ - { PREFIX_TABLE (PREFIX_EVEX_0FE0) }, - { PREFIX_TABLE (PREFIX_EVEX_0FE1) }, + { PREFIX_TABLE (PREFIX_VEX_0FE0) }, + { PREFIX_TABLE (PREFIX_VEX_0FE1) }, { PREFIX_TABLE (PREFIX_EVEX_0FE2) }, - { PREFIX_TABLE (PREFIX_EVEX_0FE3) }, - { PREFIX_TABLE (PREFIX_EVEX_0FE4) }, - { PREFIX_TABLE (PREFIX_EVEX_0FE5) }, + { PREFIX_TABLE (PREFIX_VEX_0FE3) }, + { PREFIX_TABLE (PREFIX_VEX_0FE4) }, + { PREFIX_TABLE (PREFIX_VEX_0FE5) }, { PREFIX_TABLE (PREFIX_EVEX_0FE6) }, { PREFIX_TABLE (PREFIX_EVEX_0FE7) }, /* E8 */ - { PREFIX_TABLE (PREFIX_EVEX_0FE8) }, - { PREFIX_TABLE (PREFIX_EVEX_0FE9) }, - { PREFIX_TABLE (PREFIX_EVEX_0FEA) }, + { PREFIX_TABLE (PREFIX_VEX_0FE8) }, + { PREFIX_TABLE (PREFIX_VEX_0FE9) }, + { PREFIX_TABLE (PREFIX_VEX_0FEA) }, { PREFIX_TABLE (PREFIX_EVEX_0FEB) }, - { PREFIX_TABLE (PREFIX_EVEX_0FEC) }, - { PREFIX_TABLE (PREFIX_EVEX_0FED) }, - { PREFIX_TABLE (PREFIX_EVEX_0FEE) }, + { PREFIX_TABLE (PREFIX_VEX_0FEC) }, + { PREFIX_TABLE (PREFIX_VEX_0FED) }, + { PREFIX_TABLE (PREFIX_VEX_0FEE) }, { PREFIX_TABLE (PREFIX_EVEX_0FEF) }, /* F0 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0FF1) }, + { PREFIX_TABLE (PREFIX_VEX_0FF1) }, { PREFIX_TABLE (PREFIX_EVEX_0FF2) }, { PREFIX_TABLE (PREFIX_EVEX_0FF3) }, { PREFIX_TABLE (PREFIX_EVEX_0FF4) }, - { PREFIX_TABLE (PREFIX_EVEX_0FF5) }, - { PREFIX_TABLE (PREFIX_EVEX_0FF6) }, + { PREFIX_TABLE (PREFIX_VEX_0FF5) }, + { PREFIX_TABLE (PREFIX_VEX_0FF6) }, { Bad_Opcode }, /* F8 */ - { PREFIX_TABLE (PREFIX_EVEX_0FF8) }, - { PREFIX_TABLE (PREFIX_EVEX_0FF9) }, + { PREFIX_TABLE (PREFIX_VEX_0FF8) }, + { PREFIX_TABLE (PREFIX_VEX_0FF9) }, { PREFIX_TABLE (PREFIX_EVEX_0FFA) }, { PREFIX_TABLE (PREFIX_EVEX_0FFB) }, - { PREFIX_TABLE (PREFIX_EVEX_0FFC) }, - { PREFIX_TABLE (PREFIX_EVEX_0FFD) }, + { PREFIX_TABLE (PREFIX_VEX_0FFC) }, + { PREFIX_TABLE (PREFIX_VEX_0FFD) }, { PREFIX_TABLE (PREFIX_EVEX_0FFE) }, { Bad_Opcode }, }, /* EVEX_0F38 */ { /* 00 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3800) }, + { PREFIX_TABLE (PREFIX_VEX_0F3800) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3804) }, + { PREFIX_TABLE (PREFIX_VEX_0F3804) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -305,8 +305,8 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F380B) }, - { PREFIX_TABLE (PREFIX_EVEX_0F380C) }, + { PREFIX_TABLE (PREFIX_VEX_0F380B) }, + { PREFIX_TABLE (PREFIX_VEX_0F380C) }, { PREFIX_TABLE (PREFIX_EVEX_0F380D) }, { Bad_Opcode }, { Bad_Opcode }, @@ -320,12 +320,12 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3816) }, { Bad_Opcode }, /* 18 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3818) }, + { PREFIX_TABLE (PREFIX_VEX_0F3818) }, { PREFIX_TABLE (PREFIX_EVEX_0F3819) }, { PREFIX_TABLE (PREFIX_EVEX_0F381A) }, { PREFIX_TABLE (PREFIX_EVEX_0F381B) }, - { PREFIX_TABLE (PREFIX_EVEX_0F381C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F381D) }, + { PREFIX_TABLE (PREFIX_VEX_0F381C) }, + { PREFIX_TABLE (PREFIX_VEX_0F381D) }, { PREFIX_TABLE (PREFIX_EVEX_0F381E) }, { PREFIX_TABLE (PREFIX_EVEX_0F381F) }, /* 20 */ @@ -360,9 +360,9 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3839) }, { PREFIX_TABLE (PREFIX_EVEX_0F383A) }, { PREFIX_TABLE (PREFIX_EVEX_0F383B) }, - { PREFIX_TABLE (PREFIX_EVEX_0F383C) }, + { PREFIX_TABLE (PREFIX_VEX_0F383C) }, { PREFIX_TABLE (PREFIX_EVEX_0F383D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F383E) }, + { PREFIX_TABLE (PREFIX_VEX_0F383E) }, { PREFIX_TABLE (PREFIX_EVEX_0F383F) }, /* 40 */ { PREFIX_TABLE (PREFIX_EVEX_0F3840) }, @@ -392,7 +392,7 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 58 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3858) }, + { PREFIX_TABLE (PREFIX_VEX_0F3858) }, { PREFIX_TABLE (PREFIX_EVEX_0F3859) }, { PREFIX_TABLE (PREFIX_EVEX_0F385A) }, { PREFIX_TABLE (PREFIX_EVEX_0F385B) }, @@ -428,8 +428,8 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3876) }, { PREFIX_TABLE (PREFIX_EVEX_0F3877) }, /* 78 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3878) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3879) }, + { PREFIX_TABLE (PREFIX_VEX_0F3878) }, + { PREFIX_TABLE (PREFIX_VEX_0F3879) }, { PREFIX_TABLE (PREFIX_EVEX_0F387A) }, { PREFIX_TABLE (PREFIX_EVEX_0F387B) }, { PREFIX_TABLE (PREFIX_EVEX_0F387C) }, @@ -461,17 +461,17 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3893) }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3896) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3897) }, + { PREFIX_TABLE (PREFIX_VEX_0F3896) }, + { PREFIX_TABLE (PREFIX_VEX_0F3897) }, /* 98 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3898) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3899) }, + { PREFIX_TABLE (PREFIX_VEX_0F3898) }, + { PREFIX_TABLE (PREFIX_VEX_0F3899) }, { PREFIX_TABLE (PREFIX_EVEX_0F389A) }, { PREFIX_TABLE (PREFIX_EVEX_0F389B) }, - { PREFIX_TABLE (PREFIX_EVEX_0F389C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F389D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F389E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F389F) }, + { PREFIX_TABLE (PREFIX_VEX_0F389C) }, + { PREFIX_TABLE (PREFIX_VEX_0F389D) }, + { PREFIX_TABLE (PREFIX_VEX_0F389E) }, + { PREFIX_TABLE (PREFIX_VEX_0F389F) }, /* A0 */ { PREFIX_TABLE (PREFIX_EVEX_0F38A0) }, { PREFIX_TABLE (PREFIX_EVEX_0F38A1) }, @@ -479,17 +479,17 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F38A3) }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F38A6) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38A7) }, + { PREFIX_TABLE (PREFIX_VEX_0F38A6) }, + { PREFIX_TABLE (PREFIX_VEX_0F38A7) }, /* A8 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38A8) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38A9) }, + { PREFIX_TABLE (PREFIX_VEX_0F38A8) }, + { PREFIX_TABLE (PREFIX_VEX_0F38A9) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AA) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AB) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38AC) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38AD) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38AE) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38AF) }, + { PREFIX_TABLE (PREFIX_VEX_0F38AC) }, + { PREFIX_TABLE (PREFIX_VEX_0F38AD) }, + { PREFIX_TABLE (PREFIX_VEX_0F38AE) }, + { PREFIX_TABLE (PREFIX_VEX_0F38AF) }, /* B0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -497,17 +497,17 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F38B4) }, { PREFIX_TABLE (PREFIX_EVEX_0F38B5) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38B6) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38B7) }, + { PREFIX_TABLE (PREFIX_VEX_0F38B6) }, + { PREFIX_TABLE (PREFIX_VEX_0F38B7) }, /* B8 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38B8) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38B9) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38BA) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38BB) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38BC) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38BD) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38BE) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38BF) }, + { PREFIX_TABLE (PREFIX_VEX_0F38B8) }, + { PREFIX_TABLE (PREFIX_VEX_0F38B9) }, + { PREFIX_TABLE (PREFIX_VEX_0F38BA) }, + { PREFIX_TABLE (PREFIX_VEX_0F38BB) }, + { PREFIX_TABLE (PREFIX_VEX_0F38BC) }, + { PREFIX_TABLE (PREFIX_VEX_0F38BD) }, + { PREFIX_TABLE (PREFIX_VEX_0F38BE) }, + { PREFIX_TABLE (PREFIX_VEX_0F38BF) }, /* C0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -525,7 +525,7 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F38CC) }, { PREFIX_TABLE (PREFIX_EVEX_0F38CD) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F38CF) }, + { PREFIX_TABLE (PREFIX_VEX_0F38CF) }, /* D0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -540,10 +540,10 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F38DC) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38DD) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38DE) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38DF) }, + { PREFIX_TABLE (PREFIX_VEX_0F38DC) }, + { PREFIX_TABLE (PREFIX_VEX_0F38DD) }, + { PREFIX_TABLE (PREFIX_VEX_0F38DE) }, + { PREFIX_TABLE (PREFIX_VEX_0F38DF) }, /* E0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -588,7 +588,7 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3A01) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A03) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A04) }, + { PREFIX_TABLE (PREFIX_VEX_0F3A04) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A05) }, { Bad_Opcode }, { Bad_Opcode }, @@ -600,7 +600,7 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A0F) }, + { PREFIX_TABLE (PREFIX_VEX_0F3A0F) }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, @@ -660,7 +660,7 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A42) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A43) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A44) }, + { PREFIX_TABLE (PREFIX_VEX_0F3A44) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -815,8 +815,8 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3ACE) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3ACF) }, + { PREFIX_TABLE (PREFIX_VEX_0F3ACE) }, + { PREFIX_TABLE (PREFIX_VEX_0F3ACF) }, /* D0 */ { Bad_Opcode }, { Bad_Opcode }, diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 8ef1aa7e495..62f42815d8d 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1431,16 +1431,10 @@ enum PREFIX_EVEX_0F5D, PREFIX_EVEX_0F5E, PREFIX_EVEX_0F5F, - PREFIX_EVEX_0F60, - PREFIX_EVEX_0F61, PREFIX_EVEX_0F62, - PREFIX_EVEX_0F63, PREFIX_EVEX_0F64, PREFIX_EVEX_0F65, PREFIX_EVEX_0F66, - PREFIX_EVEX_0F67, - PREFIX_EVEX_0F68, - PREFIX_EVEX_0F69, PREFIX_EVEX_0F6A, PREFIX_EVEX_0F6B, PREFIX_EVEX_0F6C, @@ -1472,53 +1466,23 @@ enum PREFIX_EVEX_0FC2, PREFIX_EVEX_0FC4, PREFIX_EVEX_0FC5, - PREFIX_EVEX_0FD1, PREFIX_EVEX_0FD2, PREFIX_EVEX_0FD3, PREFIX_EVEX_0FD4, - PREFIX_EVEX_0FD5, PREFIX_EVEX_0FD6, - PREFIX_EVEX_0FD8, - PREFIX_EVEX_0FD9, - PREFIX_EVEX_0FDA, PREFIX_EVEX_0FDB, - PREFIX_EVEX_0FDC, - PREFIX_EVEX_0FDD, - PREFIX_EVEX_0FDE, PREFIX_EVEX_0FDF, - PREFIX_EVEX_0FE0, - PREFIX_EVEX_0FE1, PREFIX_EVEX_0FE2, - PREFIX_EVEX_0FE3, - PREFIX_EVEX_0FE4, - PREFIX_EVEX_0FE5, PREFIX_EVEX_0FE6, PREFIX_EVEX_0FE7, - PREFIX_EVEX_0FE8, - PREFIX_EVEX_0FE9, - PREFIX_EVEX_0FEA, PREFIX_EVEX_0FEB, - PREFIX_EVEX_0FEC, - PREFIX_EVEX_0FED, - PREFIX_EVEX_0FEE, PREFIX_EVEX_0FEF, - PREFIX_EVEX_0FF1, PREFIX_EVEX_0FF2, PREFIX_EVEX_0FF3, PREFIX_EVEX_0FF4, - PREFIX_EVEX_0FF5, - PREFIX_EVEX_0FF6, - PREFIX_EVEX_0FF8, - PREFIX_EVEX_0FF9, PREFIX_EVEX_0FFA, PREFIX_EVEX_0FFB, - PREFIX_EVEX_0FFC, - PREFIX_EVEX_0FFD, PREFIX_EVEX_0FFE, - PREFIX_EVEX_0F3800, - PREFIX_EVEX_0F3804, - PREFIX_EVEX_0F380B, - PREFIX_EVEX_0F380C, PREFIX_EVEX_0F380D, PREFIX_EVEX_0F3810, PREFIX_EVEX_0F3811, @@ -1527,12 +1491,9 @@ enum PREFIX_EVEX_0F3814, PREFIX_EVEX_0F3815, PREFIX_EVEX_0F3816, - PREFIX_EVEX_0F3818, PREFIX_EVEX_0F3819, PREFIX_EVEX_0F381A, PREFIX_EVEX_0F381B, - PREFIX_EVEX_0F381C, - PREFIX_EVEX_0F381D, PREFIX_EVEX_0F381E, PREFIX_EVEX_0F381F, PREFIX_EVEX_0F3820, @@ -1561,9 +1522,7 @@ enum PREFIX_EVEX_0F3839, PREFIX_EVEX_0F383A, PREFIX_EVEX_0F383B, - PREFIX_EVEX_0F383C, PREFIX_EVEX_0F383D, - PREFIX_EVEX_0F383E, PREFIX_EVEX_0F383F, PREFIX_EVEX_0F3840, PREFIX_EVEX_0F3842, @@ -1582,7 +1541,6 @@ enum PREFIX_EVEX_0F3853, PREFIX_EVEX_0F3854, PREFIX_EVEX_0F3855, - PREFIX_EVEX_0F3858, PREFIX_EVEX_0F3859, PREFIX_EVEX_0F385A, PREFIX_EVEX_0F385B, @@ -1599,8 +1557,6 @@ enum PREFIX_EVEX_0F3875, PREFIX_EVEX_0F3876, PREFIX_EVEX_0F3877, - PREFIX_EVEX_0F3878, - PREFIX_EVEX_0F3879, PREFIX_EVEX_0F387A, PREFIX_EVEX_0F387B, PREFIX_EVEX_0F387C, @@ -1618,42 +1574,16 @@ enum PREFIX_EVEX_0F3891, PREFIX_EVEX_0F3892, PREFIX_EVEX_0F3893, - PREFIX_EVEX_0F3896, - PREFIX_EVEX_0F3897, - PREFIX_EVEX_0F3898, - PREFIX_EVEX_0F3899, PREFIX_EVEX_0F389A, PREFIX_EVEX_0F389B, - PREFIX_EVEX_0F389C, - PREFIX_EVEX_0F389D, - PREFIX_EVEX_0F389E, - PREFIX_EVEX_0F389F, PREFIX_EVEX_0F38A0, PREFIX_EVEX_0F38A1, PREFIX_EVEX_0F38A2, PREFIX_EVEX_0F38A3, - PREFIX_EVEX_0F38A6, - PREFIX_EVEX_0F38A7, - PREFIX_EVEX_0F38A8, - PREFIX_EVEX_0F38A9, PREFIX_EVEX_0F38AA, PREFIX_EVEX_0F38AB, - PREFIX_EVEX_0F38AC, - PREFIX_EVEX_0F38AD, - PREFIX_EVEX_0F38AE, - PREFIX_EVEX_0F38AF, PREFIX_EVEX_0F38B4, PREFIX_EVEX_0F38B5, - PREFIX_EVEX_0F38B6, - PREFIX_EVEX_0F38B7, - PREFIX_EVEX_0F38B8, - PREFIX_EVEX_0F38B9, - PREFIX_EVEX_0F38BA, - PREFIX_EVEX_0F38BB, - PREFIX_EVEX_0F38BC, - PREFIX_EVEX_0F38BD, - PREFIX_EVEX_0F38BE, - PREFIX_EVEX_0F38BF, PREFIX_EVEX_0F38C4, PREFIX_EVEX_0F38C6_REG_1, PREFIX_EVEX_0F38C6_REG_2, @@ -1668,22 +1598,15 @@ enum PREFIX_EVEX_0F38CB, PREFIX_EVEX_0F38CC, PREFIX_EVEX_0F38CD, - PREFIX_EVEX_0F38CF, - PREFIX_EVEX_0F38DC, - PREFIX_EVEX_0F38DD, - PREFIX_EVEX_0F38DE, - PREFIX_EVEX_0F38DF, PREFIX_EVEX_0F3A00, PREFIX_EVEX_0F3A01, PREFIX_EVEX_0F3A03, - PREFIX_EVEX_0F3A04, PREFIX_EVEX_0F3A05, PREFIX_EVEX_0F3A08, PREFIX_EVEX_0F3A09, PREFIX_EVEX_0F3A0A, PREFIX_EVEX_0F3A0B, - PREFIX_EVEX_0F3A0F, PREFIX_EVEX_0F3A14, PREFIX_EVEX_0F3A15, PREFIX_EVEX_0F3A16, @@ -1710,7 +1633,6 @@ enum PREFIX_EVEX_0F3A3F, PREFIX_EVEX_0F3A42, PREFIX_EVEX_0F3A43, - PREFIX_EVEX_0F3A44, PREFIX_EVEX_0F3A50, PREFIX_EVEX_0F3A51, PREFIX_EVEX_0F3A54, @@ -1723,8 +1645,6 @@ enum PREFIX_EVEX_0F3A71, PREFIX_EVEX_0F3A72, PREFIX_EVEX_0F3A73, - PREFIX_EVEX_0F3ACE, - PREFIX_EVEX_0F3ACF }; enum @@ -2104,7 +2024,6 @@ enum EVEX_W_0FFA_P_2, EVEX_W_0FFB_P_2, EVEX_W_0FFE_P_2, - EVEX_W_0F380C_P_2, EVEX_W_0F380D_P_2, EVEX_W_0F3810_P_1, EVEX_W_0F3810_P_2, @@ -2116,7 +2035,6 @@ enum EVEX_W_0F3813_P_2, EVEX_W_0F3814_P_1, EVEX_W_0F3815_P_1, - EVEX_W_0F3818_P_2, EVEX_W_0F3819_P_2, EVEX_W_0F381A_P_2, EVEX_W_0F381B_P_2, @@ -2153,7 +2071,6 @@ enum EVEX_W_0F3852_P_1, EVEX_W_0F3854_P_2, EVEX_W_0F3855_P_2, - EVEX_W_0F3858_P_2, EVEX_W_0F3859_P_2, EVEX_W_0F385A_P_2, EVEX_W_0F385B_P_2, @@ -2168,8 +2085,6 @@ enum EVEX_W_0F3872_P_3, EVEX_W_0F3873_P_2, EVEX_W_0F3875_P_2, - EVEX_W_0F3878_P_2, - EVEX_W_0F3879_P_2, EVEX_W_0F387A_P_2, EVEX_W_0F387B_P_2, EVEX_W_0F387D_P_2, @@ -2186,7 +2101,6 @@ enum EVEX_W_0F3A00_P_2, EVEX_W_0F3A01_P_2, - EVEX_W_0F3A04_P_2, EVEX_W_0F3A05_P_2, EVEX_W_0F3A08_P_2, EVEX_W_0F3A09_P_2, @@ -2217,8 +2131,6 @@ enum EVEX_W_0F3A71_P_2, EVEX_W_0F3A72_P_2, EVEX_W_0F3A73_P_2, - EVEX_W_0F3ACE_P_2, - EVEX_W_0F3ACF_P_2 }; typedef void (*op_rtn) (int bytemode, int sizeflag); @@ -5977,28 +5889,28 @@ static const struct dis386 prefix_table[][4] = { { { Bad_Opcode }, { Bad_Opcode }, - { "vfmaddsub132p%XW", { XM, Vex, EXx }, 0 }, + { "vfmaddsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F3897 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsubadd132p%XW", { XM, Vex, EXx }, 0 }, + { "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F3898 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmadd132p%XW", { XM, Vex, EXx }, 0 }, + { "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F3899 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F389A */ @@ -6019,35 +5931,35 @@ static const struct dis386 prefix_table[][4] = { { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmadd132p%XW", { XM, Vex, EXx }, 0 }, + { "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F389D */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F389E */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmsub132p%XW", { XM, Vex, EXx }, 0 }, + { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F389F */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38A6 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmaddsub213p%XW", { XM, Vex, EXx }, 0 }, + { "vfmaddsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, { Bad_Opcode }, }, @@ -6055,21 +5967,21 @@ static const struct dis386 prefix_table[][4] = { { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsubadd213p%XW", { XM, Vex, EXx }, 0 }, + { "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38A8 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmadd213p%XW", { XM, Vex, EXx }, 0 }, + { "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38A9 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38AA */ @@ -6090,98 +6002,98 @@ static const struct dis386 prefix_table[][4] = { { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmadd213p%XW", { XM, Vex, EXx }, 0 }, + { "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38AD */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38AE */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmsub213p%XW", { XM, Vex, EXx }, 0 }, + { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38AF */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38B6 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmaddsub231p%XW", { XM, Vex, EXx }, 0 }, + { "vfmaddsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38B7 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsubadd231p%XW", { XM, Vex, EXx }, 0 }, + { "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38B8 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmadd231p%XW", { XM, Vex, EXx }, 0 }, + { "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38B9 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38BA */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsub231p%XW", { XM, Vex, EXx }, 0 }, + { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38BB */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38BC */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmadd231p%XW", { XM, Vex, EXx }, 0 }, + { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38BD */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38BE */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmsub231p%XW", { XM, Vex, EXx }, 0 }, + { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38BF */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, + { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, }, /* PREFIX_VEX_0F38CF */ @@ -16641,11 +16553,6 @@ OP_Mask (int bytemode, int sizeflag ATTRIBUTE_UNUSED) static void OP_Rounding (int bytemode, int sizeflag ATTRIBUTE_UNUSED) { - if (!vex.evex - || (bytemode != evex_rounding_mode - && bytemode != evex_rounding_64_mode - && bytemode != evex_sae_mode)) - abort (); if (modrm.mod == 3 && vex.b) switch (bytemode) { @@ -16663,6 +16570,7 @@ OP_Rounding (int bytemode, int sizeflag ATTRIBUTE_UNUSED) oappend ("{sae}"); break; default: + abort (); break; } } -- 2.30.2