[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 05/17] x86emul: support MMX/SSE{, 2, 4a} insns with only register operands
On 28/02/17 12:52, Jan Beulich wrote: > @@ -2505,12 +2506,21 @@ x86_decode( > > opcode |= b | MASK_INSR(vex.pfx, X86EMUL_OPC_PFX_MASK); > > + if ( !(d & ModRM) ) > + { > + modrm_reg = modrm_rm = modrm_mod = modrm = 0; > + break; > + } > + > modrm = insn_fetch_type(uint8_t); > modrm_mod = (modrm & 0xc0) >> 6; > > break; > } > + } > > + if ( d & ModRM ) > + { > modrm_reg = ((rex_prefix & 4) << 1) | ((modrm & 0x38) >> 3); > modrm_rm = modrm & 0x07; > Doesn't this hunk want splitting out into its own patch and backporting? Xen 4.8's x86_decode_insn() was supposedly able to provide the correct length. If so, both patches Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > @@ -5658,6 +5668,18 @@ x86_emulate( > CASE_SIMD_PACKED_FP(_VEX, 0x0f, 0x50): /* vmovmskp{s,d} {x,y}mm,reg */ > CASE_SIMD_PACKED_INT(0x0f, 0xd7): /* pmovmskb {,x}mm,reg */ > case X86EMUL_OPC_VEX_66(0x0f, 0xd7): /* vpmovmskb {x,y}mm,reg */ > + opc = init_prefixes(stub); > + opc[0] = b; > + /* Convert GPR destination to %rAX. */ > + rex_prefix &= ~REX_R; > + vex.r = 1; > + if ( !mode_64bit() ) > + vex.w = 0; > + opc[1] = modrm & 0xc7; As an observation, converting GPR to %rAX is also becoming a common sequence. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |