On 19/12/2018 14:38, Jan Beulich wrote:
> @@ -8444,6 +8465,45 @@ x86_emulate(
>          generate_exception_if(ea.type != OP_MEM || !vex.l || vex.w, EXC_UD);
>          goto simd_0f_avx2;
>  
> +    case X86EMUL_OPC_EVEX_66(0x0f38, 0x78): /* vpbroadcastb 
> xmm/m8,[xyz]mm{k} */
> +    case X86EMUL_OPC_EVEX_66(0x0f38, 0x79): /* vpbroadcastw 
> xmm/m16,[xyz]mm{k} */
> +        host_and_vcpu_must_have(avx512bw);
> +        generate_exception_if(evex.w || evex.brs, EXC_UD);
> +        op_bytes = elem_bytes = 1 << (b & 1);
> +        /* See the comment at the avx512_broadcast label. */
> +        op_mask |= !(b & 1 ? !(uint32_t)op_mask : !op_mask);
> +        goto avx512f_no_sae;
> +
> +    case X86EMUL_OPC_EVEX_66(0x0f38, 0x7a): /* vpbroadcastb r32,[xyz]mm{k} */
> +    case X86EMUL_OPC_EVEX_66(0x0f38, 0x7b): /* vpbroadcastw r32,[xyz]mm{k} */
> +        host_and_vcpu_must_have(avx512bw);
> +        generate_exception_if(evex.w, EXC_UD);
> +        /* fall through */
> +    case X86EMUL_OPC_EVEX_66(0x0f38, 0x7c): /* vpbroadcast{d,q} 
> reg,[xyz]mm{k} */
> +        generate_exception_if((ea.type != OP_REG || evex.brs ||
> +                               evex.reg != 0xf || !evex.RX),
> +                              EXC_UD);

generate_exception_if(ea.type != OP_REG || evex.brs ||
                      evex.reg != 0xf || !evex.RX, EXC_UD);

?

Otherwise, Acked-by: Andrew Cooper <andrew.coop...@citrix.com>

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

Reply via email to