>>> On 15.02.17 at 12:09, <jbeul...@suse.com> wrote: > @@ -5462,6 +5462,54 @@ x86_emulate( > state->simd_size = simd_none; > break; > > + CASE_SIMD_PACKED_FP(, 0x0f, 0x2e): /* ucomis{s,d} xmm/mem,xmm */ > + CASE_SIMD_PACKED_FP(_VEX, 0x0f, 0x2e): /* vucomis{s,d} xmm/mem,xmm */ > + CASE_SIMD_PACKED_FP(, 0x0f, 0x2f): /* comis{s,d} xmm/mem,xmm */ > + CASE_SIMD_PACKED_FP(_VEX, 0x0f, 0x2f): /* vcomis{s,d} xmm/mem,xmm */ > + if ( vex.opcx == vex_none ) > + { > + if ( vex.pfx ) > + vcpu_must_have(sse2); > + else > + vcpu_must_have(sse); > + get_fpu(X86EMUL_FPU_xmm, &fic); > + } > + else > + { > + host_and_vcpu_must_have(avx); > + get_fpu(X86EMUL_FPU_ymm, &fic); > + } > + > + opc = init_prefixes(stub); > + opc[0] = b; > + opc[1] = modrm; > + if ( ea.type == OP_MEM ) > + { > + rc = ops->read(ea.mem.seg, ea.mem.off, mmvalp, vex.pfx ? 8 : 4, > + ctxt); > + if ( rc != X86EMUL_OKAY ) > + goto done; > + > + /* Convert memory operand to (%rAX). */ > + rex_prefix &= ~REX_B; > + vex.b = 1; > + opc[1] &= 0x38; > + } > + fic.insn_bytes = PFX_BYTES + 2; > + opc[2] = 0xc3; > + > + invoke_stub(_PRE_EFLAGS("[eflags]", "[mask]", "[tmp]"),
copy_REX_VEX() missing here. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel