[PATCH 2/2] Support Intel AVX-NE-CONVERT

Jan Beulich jbeulich@suse.com
Wed Nov 2 07:47:21 GMT 2022


On 01.11.2022 10:04, Kong, Lingling wrote:
> --- a/opcodes/i386-dis.c
> +++ b/opcodes/i386-dis.c
> @@ -942,6 +942,8 @@ enum
>    MOD_VEX_0F385E_X86_64_P_3_W_0,
>    MOD_VEX_0F388C,
>    MOD_VEX_0F388E,
> +  MOD_VEX_0F38B0,
> +  MOD_VEX_0F38B1,
>    MOD_VEX_0F3A30_L_0,
>    MOD_VEX_0F3A31_L_0,
>    MOD_VEX_0F3A32_L_0,
> @@ -1140,6 +1142,9 @@ enum
>    PREFIX_VEX_0F3851_W_0,
>    PREFIX_VEX_0F385C_X86_64,
>    PREFIX_VEX_0F385E_X86_64,
> +  PREFIX_VEX_0F3872,
> +  PREFIX_VEX_0F38B0_M_0_W_0,
> +  PREFIX_VEX_0F38B1_M_0_W_0,
>    PREFIX_VEX_0F38F5_L_0,
>    PREFIX_VEX_0F38F6_L_0,
>    PREFIX_VEX_0F38F7_L_0,
> @@ -1556,8 +1561,11 @@ enum
>    VEX_W_0F385E_X86_64_P_1,
>    VEX_W_0F385E_X86_64_P_2,
>    VEX_W_0F385E_X86_64_P_3,
> +  VEX_W_0F3872_P_1,
>    VEX_W_0F3878,
>    VEX_W_0F3879,
> +  VEX_W_0F38B0_M_0,
> +  VEX_W_0F38B1_M_0,
>    VEX_W_0F38B4,
>    VEX_W_0F38B5,
>    VEX_W_0F38CF,
> @@ -4093,6 +4101,27 @@ static const struct dis386 prefix_table[][4] = {
>      { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_3) },
>    },
>  
> +  /* PREFIX_VEX_0F3872 */
> +  {
> +    { Bad_Opcode },
> +    { VEX_W_TABLE (VEX_W_0F3872_P_1) },
> +  },
> +
> +  /* PREFIX_VEX_0F38B0_M_0_W_0 */
> +  {
> +    { "vcvtneoph2ps", { XM, Mx }, 0 },
> +    { "vcvtneebf162ps", { XM, Mx }, 0 },
> +    { "vcvtneeph2ps", { XM, Mx }, 0 },
> +    { "vcvtneobf162ps", { XM, Mx }, 0 },
> +  },

With the use of Mx here I see no reason to have decode go through
mod_table[]. And then ...

> +  /* PREFIX_VEX_0F38B1_M_0_W_0 */
> +  {
> +    { Bad_Opcode },
> +    { "vbcstnebf162ps", { XM, Ew }, 0 },
> +    { "vbcstnesh2ps", { XM, Ew }, 0 },
> +  },

... this should also engage OP_M() rather than OP_E(), removing the
mod_table[] decode step here as well. Obviously you'll need to add
Mw for that to work.

Jan


More information about the Binutils mailing list