[PATCH] Support Intel AMX-COMPLEX

Jan Beulich jbeulich@suse.com
Tue Apr 4 07:35:27 GMT 2023


On 03.04.2023 09:11, Haochen Jiang wrote:
> @@ -1183,6 +1184,8 @@ if [gas_64_check] then {
>      run_dump_test "x86-64-avx-ne-convert-intel"
>      run_dump_test "x86-64-raoint"
>      run_dump_test "x86-64-raoint-intel"
> +    run_dump_test "x86-64-amx-complex"
> +    run_dump_test "x86-64-amx-complex-intel"
>      run_dump_test "x86-64-clzero"
>      run_dump_test "x86-64-mwaitx-bdver4"
>      run_list_test "x86-64-mwaitx-reg"

There are constraints on operand combinations, like for tdp*, which want
testing here as well (both the assembler and disassembler sides) imo.

> @@ -4119,6 +4124,13 @@ static const struct dis386 prefix_table[][4] = {
>      { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_3) },
>    },
>  
> +  /* PREFIX_VEX_0F386C_X86_64_W_0_M_1_L_0 */
> +  {
> +    { "tcmmrlfp16ps", { TMM, EXtmm, VexTmm }, 0 },
> +    { Bad_Opcode },
> +    { "tcmmimfp16ps", { TMM, EXtmm, VexTmm }, 0 },
> +  },

You could avoid going through vex_w_table[] by making use of %XS here.
(I guess I'll make a similar change for tdp*16ps, but - to avoid
causing conflicts - perhaps only once yours went in.)

> --- a/opcodes/i386-opc.h
> +++ b/opcodes/i386-opc.h
> @@ -248,6 +248,8 @@ enum
>    CpuAMX_BF16,
>    /* AMX-FP16 instructions required */
>    CpuAMX_FP16,
> +  /* Intel AMX-COMPLEX Instructions support required.  */
> +  CpuAMX_COMPLEX,
>    /* AMX-TILE instructions required */
>    CpuAMX_TILE,
>    /* GFNI instructions required */

In line with adjacent comments, please omit "Intel" and "support" from
the comment, and don't start "instructions" with a capital latter. Plus
while the full stop is in line with general comment style, looking at
adjacent comments here it probably also wants omitting.

> --- a/opcodes/i386-opc.tbl
> +++ b/opcodes/i386-opc.tbl
> @@ -3163,6 +3163,13 @@ tilezero, 0xf249, AMX_TILE|x64, Modrm|Vex128|Space0F38|VexW0|NoSuf, { RegTMM }
>  
>  // AMX instructions end.
>  
> +// AMX-COMPLEX instructions.
> +
> +tcmmimfp16ps, 0x666c, AMX_COMPLEX|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
> +tcmmrlfp16ps, 0x6c, AMX_COMPLEX|x64, Modrm|Vex128|Space0F38|VexVVVV|VexW0|SwapSources|NoSuf, { RegTMM, RegTMM, RegTMM }
> +
> +// AMX-COMPLEX instructions end.

I think these would better not have their own comment-bounded group, but
go inside the "AMX instructions" sections (which already covers all AMX-*).

Jan


More information about the Binutils mailing list