On 07/12/2018 11:17, Jan Beulich wrote:
> The check needs to happen whenever EVEX.b is clear, not just in the
> memory operand case.

EVEX.b is a different field to EVEX.br

I'm afraid that this goes back to my original concern with the series. 
Having the fields named differently between our code and the manual is
now causing problems for everyone.

~Andrew

>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>
>
> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
> @@ -8526,11 +8526,9 @@ x86_emulate(
>      case X86EMUL_OPC_EVEX_66(0x0f38, 0xbd): /* vfnmadd231s{s,d} 
> xmm/mem,xmm,xmm{k} */
>      case X86EMUL_OPC_EVEX_66(0x0f38, 0xbf): /* vfnmsub231s{s,d} 
> xmm/mem,xmm,xmm{k} */
>          host_and_vcpu_must_have(avx512f);
> -        if ( ea.type == OP_MEM )
> -        {
> -            generate_exception_if(evex.br, EXC_UD);
> +        generate_exception_if(ea.type != OP_REG && evex.br, EXC_UD);
> +        if ( !evex.br )
>              avx512_vlen_check(true);
> -        }
>          goto simd_zmm;
>  
>      case X86EMUL_OPC(0x0f38, 0xc8):     /* sha1nexte xmm/m128,xmm */
>
>


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

Reply via email to