[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v8 10/50] x86emul: support AVX512{F, BW, _VBMI} full permute insns



>>> On 17.05.19 at 18:50, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 15/03/2019 10:41, Jan Beulich wrote:
>> Take the liberty and also correct the (public interface) name of the
>> AVX512_VBMI feature flag, on the assumption that no external consumer
>> has actually been using that flag so far.
> 
> I've been giving this some thought, and I think putting these in the
> public interface was a mistake.
> 
> They are a representation of other peoples stable ABI, and are only used
> in tools interfaces as far as Xen is concerned (SYSCTL_get_featureset,
> DOMCTL_get_cpu_policy)
> 
> The only external representations are xen_cpuid_leaf_t/xen_msr_entry_t
> which don't need constants to go with them.

While I don't really mind removing them from the public interface
again, I think you're missing to discuss one point of why they've
been put there originally: We wanted them to also serve as
documentation of the forward compatible nature of the A/S/H
annotations, i.e. such that we wouldn't lightly remove something
that was previously exposed.

>>  Furthermore make it have
>> AVX512BW instead of AVX512F as a prerequisite, for requiring full
>> 64-bit mask registers (the upper 48 bits of which can't be accessed
>> other than through XSAVE/XRSTOR without AVX512BW support).
>>
>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
> 
> As for the rest, Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> but
> we perhaps want to sort out the position in the public interface before
> changing AVX512VBMI.

Thanks; I don't think the order of events matters much, but if this is
something to happen soon, I don't mind waiting (and the re-basing).

There's an important point here though that you don't say any word
on, despite me having mentioned it to you on irc already after you
had given your ack to "x86/CPUID: support leaf 7 subleaf 1 /
AVX512_BF16" making a similar dependency as the patch here upon
AVX512BW rather than AVX512F. Recall that I had to split off the
change below from another patch of mine, because of our
disagreement on the intended dependencies. If we make the sub-
features requiring wider than 16-bit mask registers dependent
upon AVX512BW (as suggested by the patch here), then I think
we also want to change the SSEn dependencies as done/suggested
in the patch below (albeit of course there's no dependency on
changed register width there, just one on permitted element types,
so I could also see a basis to accept the dependency here as is, but
view things differently for SSEn).

Seeing your further acks (thanks!), just as a side note: Are you
aware that you've skipped patch 9 in the series, without which the
ones you've acked can't go in anyway (i.e. regardless of whether
I'm to wait for the public interface adjustment above)?

Jan

x86/cpuid: correct dependencies of post-SSE ISA extensions

Move AESNI, PCLMULQDQ, and SHA to SSE2, as all of them act on vectors of
integers, whereas plain SSE supports vectors of single precision floats
only. This is in line with how e.g. binutils and gcc treat them.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
---
v?: Re-base over split out PCLMULQDQ addition.
---
TBD: On the same basis, SSE3, SSSE3 and SSE4A should probably also
depend on SSE2 rather than SSE. In fact making this a chain SSE -> SSE2
-> SSE3 -> { SSSE3, SSE4A } would probably be best, and get us in line
with both binutils and gcc. But I think I did suggest so when the
dependencies were introduced, and this wasn't liked for a reason I
forgot.

--- unstable.orig/xen/tools/gen-cpuid.py
+++ unstable/xen/tools/gen-cpuid.py
@@ -196,11 +196,12 @@ def crunch_numbers(state):
         # instructions.  Several futher instruction sets are built on core
         # %XMM support, without specific inter-dependencies.  Additionally
         # AMD has a special mis-alignment sub-mode.
-        SSE: [SSE2, SSE3, SSSE3, SSE4A, MISALIGNSSE,
-              AESNI, PCLMULQDQ, SHA],
+        SSE: [SSE2, SSE3, SSSE3, SSE4A, MISALIGNSSE],
 
-        # SSE2 was re-specified as core instructions for 64bit.
-        SSE2: [LM],
+        # SSE2 was re-specified as core instructions for 64bit.  Also ISA
+        # extensions dealing with vectors of integers are added here rather
+        # than to SSE.
+        SSE2: [LM, AESNI, PCLMULQDQ, SHA],
 
         # SSE4.1 explicitly depends on SSE3 and SSSE3
         SSE3: [SSE4_1],


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.