mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 02:50:08 +08:00
x86: drop vex_scalar_w_dq_mode
It has only a single use and can easily be represented by dq_mode instead. Plus its handling in intel_operand_size() was duplicating that of vex_vsib_{d,q}_w_dq_mode anyway.
This commit is contained in:
@ -358,7 +358,7 @@
|
|||||||
{
|
{
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 },
|
{ "vfmsub132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, 0 },
|
||||||
{ "v4fmaddss", { XMScalar, VexScalar, Mxmm }, 0 },
|
{ "v4fmaddss", { XMScalar, VexScalar, Mxmm }, 0 },
|
||||||
},
|
},
|
||||||
/* PREFIX_EVEX_0F38AA */
|
/* PREFIX_EVEX_0F38AA */
|
||||||
@ -372,6 +372,6 @@
|
|||||||
{
|
{
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 },
|
{ "vfmsub213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, 0 },
|
||||||
{ "v4fnmaddss", { XMScalar, VexScalar, Mxmm }, 0 },
|
{ "v4fnmaddss", { XMScalar, VexScalar, Mxmm }, 0 },
|
||||||
},
|
},
|
||||||
|
@ -343,7 +343,7 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ PREFIX_TABLE (PREFIX_EVEX_0F382A) },
|
{ PREFIX_TABLE (PREFIX_EVEX_0F382A) },
|
||||||
{ VEX_W_TABLE (EVEX_W_0F382B) },
|
{ VEX_W_TABLE (EVEX_W_0F382B) },
|
||||||
{ "vscalefp%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vscalefp%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vscalefs%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vscalefs%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
/* 30 */
|
/* 30 */
|
||||||
@ -368,7 +368,7 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ "vpmull%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vpmull%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vgetexpp%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
{ "vgetexpp%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
||||||
{ "vgetexps%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA },
|
{ "vgetexps%XW", { XMScalar, VexScalar, EXdq, EXxEVexS }, PREFIX_DATA },
|
||||||
{ "vplzcnt%DQ", { XM, EXx }, PREFIX_DATA },
|
{ "vplzcnt%DQ", { XM, EXx }, PREFIX_DATA },
|
||||||
{ "vpsrlv%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vpsrlv%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vpsrav%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vpsrav%DQ", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
@ -379,9 +379,9 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vrcp14p%XW", { XM, EXx }, PREFIX_DATA },
|
{ "vrcp14p%XW", { XM, EXx }, PREFIX_DATA },
|
||||||
{ "vrcp14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vrcp14s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vrsqrt14p%XW", { XM, EXx }, 0 },
|
{ "vrsqrt14p%XW", { XM, EXx }, 0 },
|
||||||
{ "vrsqrt14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vrsqrt14s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
/* 50 */
|
/* 50 */
|
||||||
{ "vpdpbusd", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vpdpbusd", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vpdpbusds", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vpdpbusds", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
@ -465,13 +465,13 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
/* 98 */
|
/* 98 */
|
||||||
{ "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfmadd132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ PREFIX_TABLE (PREFIX_EVEX_0F389A) },
|
{ PREFIX_TABLE (PREFIX_EVEX_0F389A) },
|
||||||
{ PREFIX_TABLE (PREFIX_EVEX_0F389B) },
|
{ PREFIX_TABLE (PREFIX_EVEX_0F389B) },
|
||||||
{ "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmadd132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmsub132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
/* A0 */
|
/* A0 */
|
||||||
{ "vpscatterd%DQ", { MVexVSIBDWpX, XM }, PREFIX_DATA },
|
{ "vpscatterd%DQ", { MVexVSIBDWpX, XM }, PREFIX_DATA },
|
||||||
{ "vpscatterq%DQ", { MVexVSIBQWpX, XMGatherQ }, PREFIX_DATA },
|
{ "vpscatterq%DQ", { MVexVSIBQWpX, XMGatherQ }, PREFIX_DATA },
|
||||||
@ -483,13 +483,13 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
/* A8 */
|
/* A8 */
|
||||||
{ "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfmadd213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ PREFIX_TABLE (PREFIX_EVEX_0F38AA) },
|
{ PREFIX_TABLE (PREFIX_EVEX_0F38AA) },
|
||||||
{ PREFIX_TABLE (PREFIX_EVEX_0F38AB) },
|
{ PREFIX_TABLE (PREFIX_EVEX_0F38AB) },
|
||||||
{ "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmadd213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmsub213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
/* B0 */
|
/* B0 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
@ -501,13 +501,13 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
/* B8 */
|
/* B8 */
|
||||||
{ "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfmadd231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfmsub231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmadd231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
|
||||||
{ "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
|
{ "vfnmsub231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
|
||||||
/* C0 */
|
/* C0 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
@ -521,9 +521,9 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ "vexp2p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
{ "vexp2p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vrcp28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
{ "vrcp28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
||||||
{ "vrcp28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA },
|
{ "vrcp28s%XW", { XMScalar, VexScalar, EXdq, EXxEVexS }, PREFIX_DATA },
|
||||||
{ "vrsqrt28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
{ "vrsqrt28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
|
||||||
{ "vrsqrt28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA },
|
{ "vrsqrt28s%XW", { XMScalar, VexScalar, EXdq, EXxEVexS }, PREFIX_DATA },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ VEX_W_TABLE (VEX_W_0F38CF) },
|
{ VEX_W_TABLE (VEX_W_0F38CF) },
|
||||||
/* D0 */
|
/* D0 */
|
||||||
@ -627,7 +627,7 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vpternlog%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },
|
{ "vpternlog%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },
|
||||||
{ "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
{ "vgetmants%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vgetmants%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
/* 28 */
|
/* 28 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
@ -675,13 +675,13 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
/* 50 */
|
/* 50 */
|
||||||
{ "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
{ "vranges%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vranges%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
{ "vfixupimms%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vfixupimms%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
{ "vreducep%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vreducep%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
{ "vreduces%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
|
{ "vreduces%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA },
|
||||||
/* 58 */
|
/* 58 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
@ -699,7 +699,7 @@ static const struct dis386 evex_table[][256] = {
|
|||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ "vfpclassp%XW%XZ", { MaskG, EXx, Ib }, PREFIX_DATA },
|
{ "vfpclassp%XW%XZ", { MaskG, EXx, Ib }, PREFIX_DATA },
|
||||||
{ "vfpclasss%XW", { MaskG, EXVexWdqScalar, Ib }, PREFIX_DATA },
|
{ "vfpclasss%XW", { MaskG, EXdq, Ib }, PREFIX_DATA },
|
||||||
/* 68 */
|
/* 68 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
|
@ -358,6 +358,7 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
|
|||||||
#define EXdS { OP_EX, d_swap_mode }
|
#define EXdS { OP_EX, d_swap_mode }
|
||||||
#define EXq { OP_EX, q_mode }
|
#define EXq { OP_EX, q_mode }
|
||||||
#define EXqS { OP_EX, q_swap_mode }
|
#define EXqS { OP_EX, q_swap_mode }
|
||||||
|
#define EXdq { OP_EX, dq_mode }
|
||||||
#define EXx { OP_EX, x_mode }
|
#define EXx { OP_EX, x_mode }
|
||||||
#define EXxS { OP_EX, x_swap_mode }
|
#define EXxS { OP_EX, x_swap_mode }
|
||||||
#define EXxmm { OP_EX, xmm_mode }
|
#define EXxmm { OP_EX, xmm_mode }
|
||||||
@ -368,7 +369,6 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
|
|||||||
#define EXxmmdw { OP_EX, xmmdw_mode }
|
#define EXxmmdw { OP_EX, xmmdw_mode }
|
||||||
#define EXxmmqd { OP_EX, xmmqd_mode }
|
#define EXxmmqd { OP_EX, xmmqd_mode }
|
||||||
#define EXymmq { OP_EX, ymmq_mode }
|
#define EXymmq { OP_EX, ymmq_mode }
|
||||||
#define EXVexWdqScalar { OP_EX, vex_scalar_w_dq_mode }
|
|
||||||
#define EXEvexXGscat { OP_EX, evex_x_gscat_mode }
|
#define EXEvexXGscat { OP_EX, evex_x_gscat_mode }
|
||||||
#define EXEvexXNoBcst { OP_EX, evex_x_nobcst_mode }
|
#define EXEvexXNoBcst { OP_EX, evex_x_nobcst_mode }
|
||||||
#define MS { OP_MS, v_mode }
|
#define MS { OP_MS, v_mode }
|
||||||
@ -507,7 +507,7 @@ enum
|
|||||||
v_bnd_mode,
|
v_bnd_mode,
|
||||||
/* like v_bnd_mode in 32bit, no RIP-rel in 64bit mode. */
|
/* like v_bnd_mode in 32bit, no RIP-rel in 64bit mode. */
|
||||||
v_bndmk_mode,
|
v_bndmk_mode,
|
||||||
/* operand size depends on REX prefixes. */
|
/* operand size depends on REX.W / VEX.W. */
|
||||||
dq_mode,
|
dq_mode,
|
||||||
/* registers like dq_mode, memory like w_mode, displacements like
|
/* registers like dq_mode, memory like w_mode, displacements like
|
||||||
v_mode without considering Intel64 ISA. */
|
v_mode without considering Intel64 ISA. */
|
||||||
@ -545,8 +545,6 @@ enum
|
|||||||
|
|
||||||
/* scalar, ignore vector length. */
|
/* scalar, ignore vector length. */
|
||||||
scalar_mode,
|
scalar_mode,
|
||||||
/* Operand size depends on the VEX.W bit, ignore vector length. */
|
|
||||||
vex_scalar_w_dq_mode,
|
|
||||||
|
|
||||||
/* Static rounding. */
|
/* Static rounding. */
|
||||||
evex_rounding_mode,
|
evex_rounding_mode,
|
||||||
@ -6300,13 +6298,13 @@ static const struct dis386 vex_table[][256] = {
|
|||||||
{ "vfmsubadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmsubadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
/* 98 */
|
/* 98 */
|
||||||
{ "vfmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfmadd132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfmsub132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfnmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfnmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfnmadd132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfnmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfnmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfnmsub132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
/* a0 */
|
/* a0 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
@ -6318,13 +6316,13 @@ static const struct dis386 vex_table[][256] = {
|
|||||||
{ "vfmsubadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmsubadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
/* a8 */
|
/* a8 */
|
||||||
{ "vfmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfmadd213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfmsub213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfnmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfnmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfnmadd213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfnmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfnmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfnmsub213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
/* b0 */
|
/* b0 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
@ -6336,13 +6334,13 @@ static const struct dis386 vex_table[][256] = {
|
|||||||
{ "vfmsubadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmsubadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
/* b8 */
|
/* b8 */
|
||||||
{ "vfmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfmadd231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfmsub231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfnmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfnmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfnmadd231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
{ "vfnmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
{ "vfnmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA },
|
||||||
{ "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
|
{ "vfnmsub231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA },
|
||||||
/* c0 */
|
/* c0 */
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
{ Bad_Opcode },
|
{ Bad_Opcode },
|
||||||
@ -11170,15 +11168,6 @@ intel_operand_size (int bytemode, int sizeflag)
|
|||||||
case o_mode:
|
case o_mode:
|
||||||
oappend ("OWORD PTR ");
|
oappend ("OWORD PTR ");
|
||||||
break;
|
break;
|
||||||
case vex_scalar_w_dq_mode:
|
|
||||||
if (!need_vex)
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
if (vex.w)
|
|
||||||
oappend ("QWORD PTR ");
|
|
||||||
else
|
|
||||||
oappend ("DWORD PTR ");
|
|
||||||
break;
|
|
||||||
case vex_vsib_d_w_dq_mode:
|
case vex_vsib_d_w_dq_mode:
|
||||||
case vex_vsib_q_w_dq_mode:
|
case vex_vsib_q_w_dq_mode:
|
||||||
if (!need_vex)
|
if (!need_vex)
|
||||||
@ -11371,7 +11360,6 @@ OP_E_memory (int bytemode, int sizeflag)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case vex_scalar_w_dq_mode:
|
|
||||||
case vex_vsib_d_w_dq_mode:
|
case vex_vsib_d_w_dq_mode:
|
||||||
case vex_vsib_q_w_dq_mode:
|
case vex_vsib_q_w_dq_mode:
|
||||||
case evex_x_gscat_mode:
|
case evex_x_gscat_mode:
|
||||||
@ -12496,8 +12484,7 @@ print_vector_reg (unsigned int reg, int bytemode)
|
|||||||
&& bytemode != b_mode
|
&& bytemode != b_mode
|
||||||
&& bytemode != w_mode
|
&& bytemode != w_mode
|
||||||
&& bytemode != d_mode
|
&& bytemode != d_mode
|
||||||
&& bytemode != q_mode
|
&& bytemode != q_mode)
|
||||||
&& bytemode != vex_scalar_w_dq_mode)
|
|
||||||
{
|
{
|
||||||
switch (vex.length)
|
switch (vex.length)
|
||||||
{
|
{
|
||||||
@ -12627,6 +12614,9 @@ OP_EX (int bytemode, int sizeflag)
|
|||||||
MODRM_CHECK;
|
MODRM_CHECK;
|
||||||
codep++;
|
codep++;
|
||||||
|
|
||||||
|
if (bytemode == dq_mode)
|
||||||
|
bytemode = vex.w ? q_mode : d_mode;
|
||||||
|
|
||||||
if (modrm.mod != 3)
|
if (modrm.mod != 3)
|
||||||
{
|
{
|
||||||
OP_E_memory (bytemode, sizeflag);
|
OP_E_memory (bytemode, sizeflag);
|
||||||
|
Reference in New Issue
Block a user