|
[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 16:20, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 21/06/2019 15:00, Jan Beulich wrote:
>>> On 15/03/2019 11:06, Jan Beulich wrote:
>>> (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.
>
> Fair enough.
>
>>>> @@ -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.
>
> To be honest, it doesn't matter what GCC does.
>
> What matter is the expectation of arbitrary library/application code,
> written in adherence to the Intel manual, when running with a levelled
> CPUID policy, because *that* is the set of corner cases where things
> might end up exploding.
I agree, and I would agree making the changes you've asked for if
it was code in the main emulator. But as said - you've commented
on test harness qualification functions.
> I see your point about needing a full width mask register, which to me
> suggests that the extension manual is documenting the dependency
> incorrectly.
>
> It also means that I need to change how we do feature dependency
> derivation, because this is the first example of a conditional
> dependency. I.e. AVX512F but not AVX512BW implies no GFNI even if
> hardware has it, but on the same hardware when levelling AVX512F out,
> GFNI could be used via its legacy or VEX version.
Right, the way GFNI is specified isn't overly helpful. Otoh - why the
former? The legacy and VEX versions are usable in that case, too.
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 |