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