target/i386: decode-new: avoid out-of-bounds access to xmm_regs[-1]
If the destination is a memory register, op->n is -1. Going through tcg_gen_gvec_dup_imm path is both useless (the value has been stored by the gen_* function already) and wrong because of the out-of-bounds access. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
214a8da236
commit
0d4bcac3ca
|
@ -296,7 +296,7 @@ static void gen_writeback(DisasContext *s, X86DecodedInsn *decode, int opn, TCGv
|
|||
case X86_OP_MMX:
|
||||
break;
|
||||
case X86_OP_SSE:
|
||||
if ((s->prefix & PREFIX_VEX) && op->ot == MO_128) {
|
||||
if (!op->has_ea && (s->prefix & PREFIX_VEX) && op->ot == MO_128) {
|
||||
tcg_gen_gvec_dup_imm(MO_64,
|
||||
offsetof(CPUX86State, xmm_regs[op->n].ZMM_X(1)),
|
||||
16, 16, 0);
|
||||
|
|
Loading…
Reference in New Issue