Reviewed-by: Richard Henderson <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
---
target/i386/tcg/decode-new.c.inc | 4 ++--
target/i386/tcg/emit.c.inc | 5 ++---
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc
index 3acac68977d..8394924a7ed 100644
--- a/target/i386/tcg/decode-new.c.inc
+++ b/target/i386/tcg/decode-new.c.inc
@@ -1365,8 +1365,8 @@ static const X86OpEntry opcodes_0F[256] = {
[0xa4] = X86_OP_ENTRY4(SHLD, E,v, 2op,v, G,v),
[0xa5] = X86_OP_ENTRY3(SHLD, E,v, 2op,v, G,v),
- [0xb0] = X86_OP_ENTRY2(CMPXCHG,E,b, G,b, lock),
- [0xb1] = X86_OP_ENTRY2(CMPXCHG,E,v, G,v, lock),
+ [0xb0] = X86_OP_ENTRY2(CMPXCHG,E,b, G,b, lock zextT1),
+ [0xb1] = X86_OP_ENTRY2(CMPXCHG,E,v, G,v, lock zextT1),
[0xb2] = X86_OP_ENTRY3(LSS, G,v, EM,p, None, None),
[0xb3] = X86_OP_ENTRY2(BTR, E,v, G,v, btEvGv),
[0xb4] = X86_OP_ENTRY3(LFS, G,v, EM,p, None, None),
diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc
index abf40123035..e4700473c9f 100644
--- a/target/i386/tcg/emit.c.inc
+++ b/target/i386/tcg/emit.c.inc
@@ -1760,11 +1760,10 @@ static void gen_CMPXCHG(DisasContext *s, X86DecodedInsn
*decode)
MemOp ot = decode->op[2].ot;
TCGv cmpv = tcg_temp_new();
TCGv oldv = tcg_temp_new();
- TCGv newv = tcg_temp_new();
+ TCGv newv = s->T1;
TCGv dest;
tcg_gen_ext_tl(cmpv, cpu_regs[R_EAX], ot);
- tcg_gen_ext_tl(newv, s->T1, ot);
if (s->prefix & PREFIX_LOCK) {
tcg_gen_atomic_cmpxchg_tl(oldv, s->A0, cmpv, newv,
s->mem_index, ot | MO_LE);
@@ -1787,7 +1786,7 @@ static void gen_CMPXCHG(DisasContext *s, X86DecodedInsn
*decode)
* not zero-extending it on 64-bit processors. So, precompute
* the result of a successful writeback and perform the movcond
* directly on cpu_regs. In case rm is part of RAX, note that this
- * movcond and the one below are mutually exclusive is executed.
+ * movcond and the one below are mutually exclusive.
*/
dest = gen_op_deposit_reg_v(s, ot, decode->op[0].n, newv, newv);
tcg_gen_movcond_tl(TCG_COND_EQ, dest, oldv, cmpv, newv, dest);
--
2.55.0