On 27/05/2019 09:02, Jan Beulich wrote:
>>>> On 24.05.19 at 22:48, <andrew.coop...@citrix.com> wrote:
>> On 24/05/2019 07:43, Jan Beulich wrote:
>>>>>> On 23.05.19 at 18:15, <andrew.coop...@citrix.com> wrote:
>>>> On 15/03/2019 10:55, Jan Beulich wrote:
>>>>> Also include the only other AVX512ER insn pair, VEXP2P{D,S}.
>>>>>
>>>>> Note that despite the replacement of the SHA insns' table slots there's
>>>>> no need to special case their decoding: Their insn-specific code already
>>>>> sets op_bytes (as was required due to simd_other), and TwoOp is of no
>>>>> relevance for legacy encoded SIMD insns.
>>>>>
>>>>> The raising of #UD when EVEX.L'L is 3 for AVX512ER scalar insns is done
>>>>> to be on the safe side. The SDM does not clarify behavior there, and
>>>>> it's even more ambiguous here (without AVX512VL in the picture).
>>>>>
>>>>> Signed-off-by: Jan Beulich <jbeul...@suse.com>
>>>> Acked-by: Andrew Cooper <andrew.coop...@citrix.com>
>>> Thanks, also for the others.
>>>
>>>> Seeing as I have some ER hardware, is there an easy way to get
>>>> GCC/binutils to emit a weird L'L field, or will this involve some manual
>>>> opcode generation to test?
>>> gcc does not provide any control at all, afaict. binutils allows "weird"
>>> VEX.L or EVEX.L'L only for insns it believes ignore that field. So yes,
>>> I'm afraid this will involve using .byte.
>> Ok.  Given a test program of:
>>
>> {
>> printf("Real:\n");
>> asm volatile ("vrcp14sd %xmm0,%xmm0,%xmm0");
>>
>> printf("Bytes:\n");
>> asm volatile (".byte 0x62, 0xf2, 0xfd, 0x08, 0x4d, 0xc0");
>>
>> printf("Bad 0x28:\n");
>> asm volatile (".byte 0x62, 0xf2, 0xfd, 0x28, 0x4d, 0xc0");
>>
>> printf("Bad 0x48:\n");
>> asm volatile (".byte 0x62, 0xf2, 0xfd, 0x48, 0x4d, 0xc0");
>>
>> printf("Bad 0x68:\n");
>> asm volatile (".byte 0x62, 0xf2, 0xfd, 0x68, 0x4d, 0xc0");
>> }
>>
>> Then the L'L = 3 case (0x68 at the end) does indeed take #UD for both
>> KNL and KNM.
> And by implication I take it that the L'L=1 and L'L=2 cases indeed to not
> #UD there?

Correct.  It would appear that, unhelpfully, the L'L==3 being reserved
rule takes higher precedence than the L'L-is-ignored rule for this class
of instruction.

~Andrew

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

Reply via email to