[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/8] x86emul: support BMI1 insns
>>> On 16.01.17 at 12:59, <andrew.cooper3@xxxxxxxxxx> wrote: > On 16/01/17 11:19, Jan Beulich wrote: >>>>> On 13.01.17 at 18:40, <andrew.cooper3@xxxxxxxxxx> wrote: >>> On 13/01/17 15:31, Jan Beulich wrote: >>>> @@ -5866,6 +5879,67 @@ x86_emulate( >>>> break; >>>> #endif >>>> >>>> + case X86EMUL_OPC_VEX(0x0f38, 0xf2): /* andn r/m,r,r */ >>>> + case X86EMUL_OPC_VEX(0x0f38, 0xf7): /* bextr r,r/m,r */ >>>> + { >>>> + uint8_t *buf = get_stub(stub); >>>> + typeof(vex) *pvex = container_of(buf + 1, typeof(vex), raw[0]); >>>> + >>>> + host_and_vcpu_must_have(bmi1); >>>> + generate_exception_if(vex.l, EXC_UD); >>> The manual also states #UD if VEX.W is set. >> This is very clearly a doc error: For one, is doesn't _also_ state this, >> but says nothing about VEX.L. And the instruction encodings list .W1 >> variants (as expected) to encode 64-bit operations. > > VEX.L != 0 is called out, but only in the text, not the exception list. > > The exact text is: > > "This instruction is not supported in real mode and virtual-8086 mode. > The operand size is always 32 bits if not in 64-bit mode. In 64-bit mode > operand size 64 requires VEX.W1. VEX.W1 is ignored in non-64-bit modes. > An attempt to execute this instruction with VEX.L not equal to 0 will > cause #UD." > > with: > > "#UD If VEX.W = 1" > > in the exception list. > > I am confused about the references to VEX.W1 in the text, because it > doesn't match any described VEX fields. At a guess, I'd say it should > be referring to VEX.B which control operand size, while VEX.W is an > opcode extention. VEX.W1 means VEX.W set to 1 (VEX.W0 similarly means VEX.W set to zero). And there's no VEX.B afaik. VEX.W can serve both purposes - operand size and opcode extension. As there's no other way to encode 32- vs 64-bit operand size, VEX.W serves this purpose for integer instructions. For SIMD instructions VEX.L typically encodes operand size; iirc VEX.W (or maybe just EVEX.W) in some cases encodes operand element size. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |