|
From: | Richard Henderson |
Subject: | Re: [Qemu-devel] [PATCH 1/3] target-m68k: add abcd/sbcd/nbcd |
Date: | Mon, 31 Oct 2016 06:13:29 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
On 10/31/2016 03:20 AM, Laurent Vivier wrote:
+ tcg_gen_subi_i32(addr_src, addr_src, opsize_bytes(OS_BYTE)); + src = gen_load(s, OS_BYTE, addr_src, 0); + + addr_dest = tcg_temp_new(); + if (REG(insn, 0) == REG(insn, 9)) { + tcg_gen_mov_i32(addr_dest, addr_src); + } else { + tcg_gen_mov_i32(addr_dest, AREG(insn, 9)); + } + tcg_gen_subi_i32(addr_dest, addr_dest, opsize_bytes(OS_BYTE)); + dest = gen_load(s, OS_BYTE, addr_dest, 0);
Write backs before loads.
+ bcd_neg(tmp, src); + bcd_add(tmp, dest);
Didn't we simplify the subtraction algorithm to make neg? Why not un-simplify it and let nbcd provide a zero (and then let the tcg optimizer do what it can).
r~
[Prev in Thread] | Current Thread | [Next in Thread] |