[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