[PATCH] x86: fold AVX512-VNNI disassembler entries with AVX-VNNI ones
Jan Beulich
jbeulich@suse.com
Mon Oct 17 06:39:17 GMT 2022
On 14.10.2022 19:28, H.J. Lu wrote:
> On Fri, Oct 14, 2022 at 3:22 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> Make %XV also print the separating blank in the VEX case, while making
>> it do nothing for EVEX-encoded insns. This way the AVX-VNNI entries
>> can be re-used for AVX512-VNNI, at the same time fixing the lack of
>> EVEX.W decoding.
>>
>> For the AVX-VNNI ones further make sure only VEX.66 forms are actually
>> decoded.
>> ---
>> Irrespective of this change I continue to disagree with the arbitrary
>> printing of "{vex}" for the AVX-VNNI insns: If that's meant for
>> disambiguation purposes, then EVEX-encoded insns not using EVEX-specific
>> functionality by having VEX counterparts (vaddps %xmm0, %xmm0, %xmm0)
>> should also be prefixed by "{evex}".
>
> This is done to match the assembler. There are 3 kinds of VNNI processors:
>
> 1. AVX512-VNNI only.
> 2. AVX-VNNI only.
> 3. AVX512-VNNI and AVX-VNNI.
>
> Since AVX512-VNNI came out first, all VNNI instructions without a prefix
> are encoded as AVX512-VNNI. The existing VNNI instructions without
> a prefix, generated by compiler or hand written, are encoded with EVEX.
> If one needs VNNI with VEX encoding, the {vex} prefix should be used.
... if, as said, AVX512 wasn't turned off altogether.
With your model, just look at how odd code using both AVX-VNNI and
AVX-VNNI-INT8 then looks:
vpdpbssd %ymm0, %ymm5, %ymm6
vpdpbsud %ymm1, %ymm5, %ymm6
{vex} vpdpbusd %ymm2, %ymm5, %ymm6
vpdpbuud %ymm3, %ymm5, %ymm6
Yes, one could further clutter this and add {vex} to every line. But
why would anyone want to clutter their code?
Plus the same argument then applies to AVX512VL: This came out later than
AVX, and the assembler (necessarily) requires {evex} to actually encode
these (when there are AVX equivalents). Hence to match the assembler, the
disassembler then also ought to emit {evex} for this subset of encodings.
Jan
> This applies to any AVX extensions which come after EVEX ones, including
> AVX-IFMA.
More information about the Binutils
mailing list