|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 46/50] x86emul: support GFNI insns
>>> On 21.06.19 at 15:19, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 15/03/2019 11:06, Jan Beulich wrote:
>> Note that the ISA extensions document revision 035 is ambiguous
>> regarding fault suppression for VGF2P8MULB: Text says it's supported,
>> while the exception specification listed is E4NF. Given the wording here
>> and for the other two insns I'm inclined to trust the text more than the
>> exception reference, which was also confirmed informally.
>
> Version 037 has the exception reference as E4 rather than E4NF, so I
> think this entire paragraph is stale now and can be dropped.
Oh, indeed, they've corrected that.
> (On a tangent, AVX512_VP2INTERSECT now exists in the extensions doc.)
And I have it implemented, but no way to test until sde supports it.
>> As to the feature dependency adjustment, while strictly speaking SSE is
>> a sufficient prereq (to have XMM registers), vectors of bytes and qwords
>> have got introduced only with SSE2. gcc, for example, uses a similar
>> connection in its respective intrinsics header.
>
> This is stale now that you've moved the other integer dependences to SSE2.
Hmm, it's redundant with that other change, but not really stale.
I can drop it if you want.
>> @@ -138,6 +141,26 @@ static bool simd_check_avx512vbmi_vl(voi
>> return cpu_has_avx512_vbmi && cpu_has_avx512vl;
>> }
>>
>> +static bool simd_check_sse2_gf(void)
>> +{
>> + return cpu_has_gfni && cpu_has_sse2;
>
> This dependency doesn't match the manual. The legacy encoding needs
> GFNI alone.
>
> gen-cpuid.py is trying to reduce the ability to create totally
> implausible configurations via levelling, but for software checks, we
> should follow the manual to the letter.
This is test harness code - I'd rather be a little more strict here than
having to needlessly spend time fixing an issue in there. Furthermore
this matches how gcc enforces dependencies.
>> +}
>> +
>> +static bool simd_check_avx2_gf(void)
>> +{
>> + return cpu_has_gfni && cpu_has_avx2;
>
> Here, the dependency is only on AVX, which I think is probably trying to
> express a dependency on xcr0.ymm
Mostly as per above, except that here gcc (imo wrongly) enables just
AVX.
>> +}
>> +
>> +static bool simd_check_avx512bw_gf(void)
>> +{
>> + return cpu_has_gfni && cpu_has_avx512bw;
>
> I don't see any BW interaction anywhere (in the manual), despite the
> fact it operates on a datatype of int8.
But by operating on vectors of bytes, it requires 64 bits wide mask
registers, which is the connection to BW. Again gcc also does so.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |