[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

 


Rackspace

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