From: Jan Beulich Date: Thu, 31 Jan 2019 10:38:24 +0000 (+0100) Subject: x86emul: correct AVX512BW write masking checks X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=f5d7d370400613a01ca1c9e38d7ce9b1faea32f3;p=people%2Fpauldu%2Fxen.git x86emul: correct AVX512BW write masking checks For VPSADBW this likely was a result of bad copy-and-paste. For VPS{L,R}LDQ comment and code were not in line, but then again the comment also wasn't fully updated from the AVX2 original it got cloned from. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Release-acked-by: Juergen Gross --- diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c index 717e02fe67..e3b7e8c396 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -6633,11 +6633,13 @@ x86_emulate( get_fpu(X86EMUL_FPU_mmx); goto simd_0f_common; + case X86EMUL_OPC_EVEX_66(0x0f, 0xf6): /* vpsadbw [xyz]mm/mem,[xyz]mm,[xyz]mm */ + generate_exception_if(evex.opmsk, EXC_UD); + /* fall through */ case X86EMUL_OPC_EVEX_66(0x0f, 0xd1): /* vpsrlw xmm/m128,[xyz]mm,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_66(0x0f, 0xe1): /* vpsraw xmm/m128,[xyz]mm,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_66(0x0f, 0xf1): /* vpsllw xmm/m128,[xyz]mm,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_66(0x0f, 0xf5): /* vpmaddwd [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */ - case X86EMUL_OPC_EVEX_66(0x0f, 0xf6): /* vpsadbw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */ fault_suppression = false; /* fall through */ case X86EMUL_OPC_EVEX_66(0x0f, 0xd5): /* vpmullw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */ @@ -6998,8 +7000,9 @@ x86_emulate( case 6: /* vpsllq $imm8,[xyz]mm/mem,[xyz]mm{k} */ generate_exception_if(!evex.w, EXC_UD); goto avx512f_shift_imm; - case 3: /* vpsrldq $imm8,{x,y}mm,{x,y}mm */ - case 7: /* vpslldq $imm8,{x,y}mm,{x,y}mm */ + case 3: /* vpsrldq $imm8,[xyz]mm/mem,[xyz]mm */ + case 7: /* vpslldq $imm8,[xyz]mm/mem,[xyz]mm */ + generate_exception_if(evex.opmsk, EXC_UD); goto avx512bw_shift_imm; } goto unrecognized_insn;