x86: Support Intel AVX VNNI

H.J. Lu hjl.tools@gmail.com
Fri Oct 23 13:17:20 GMT 2020


On Fri, Oct 23, 2020 at 12:04 AM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 23.10.2020 03:57, Cui, Lili wrote:
> >>> output helping in any way, when comparing to all other AVX+ insns
> >>> which have AVX512VL counterparts? (Apart from that I'd further
> >>> question why it needs to be {vex3} when {vex} would suffice, but I'd
> >>> like to see this dropped altogether anyway, except perhaps in some
> >>> non-default mode, where it then should be output consistently.)
> >>
> >> Yes, {vex3} can be dropped from AVX VNNI tests.
>
> Okay, so we must have been talking past one another. I don't
> see any good in dropping the tests, and this isn't what I did
> suggest or talk about. {vex3} should be tested to be
> properly accepted by the assembler, just like {vex}. What I
> was saying is that _objdump output_ should have {vex} dropped,
> and that it should have been {vex} instead of {vex3} there in
> the first place.

{vex} and {vex3} aren't new.   The new behavior of AVX VNNI is that
{vex} or {vex3} is now mandatory for AVX VNNI.  Since {vex} or {vex3}
is mandatory for AVX VNNI, it shouldn't be dropped in disassembler
output.

> Hence faod: I think the change here is wrong and should either
> not be committed or reverted. (Oddly enough there have been no
> Intel syntax checks of any prefix uses at all - I would
> otherwise have outright nak-ed the change.)

We can change disassembler output from {vex3} to {vex} and
put back the {vex3| tests in AVX VNNI.

> And just to repeat - there might then want to be a non-default
> disassembly mode which allows printing {vex} and alike. There
> (and only there) it should then be the shortest unambiguous
> form of prefix which gets output (in particular meaning no
> prefix at all if an insn is unambiguous without; just like for
> insn suffixes in AT&T mode there may then be a yet more verbose
> mode where {vex} and alike get output unconditionally).

BTW, there are limitation in Intel syntax when used with GCC:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53929

I don't know if it can be fixed.

> I can only re-iterate that this feature addition points out a
> fundamental shortcoming: What would have needed to be
> established first (and in public!) is an underlying abstract
> model individually for both assembler and disassembler, that
> we want each one to honor respectively. Once such a model is
> agreed upon, verifying whether a particular change meets the
> specification would be much easier. The primary goal of such
> an abstract model would be consistency. As said in many other
> contexts, being consistent is the only way to avoid surprises
> to the user. I've been eliminating quite a few inconsistencies
> over the last couple of years; some further attempts of doing
> so were refused (or reverted) for reasons I didn't buy.
>

x86 is still evolving.  We are trying to do things reasonably.

-- 
H.J.


More information about the Binutils mailing list