From: Richard Henderson <rth@twiddle.net>
To: Laurent Vivier <laurent@vivier.eu>, qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com,
Andreas Schwab <schwab@linux-m68k.org>,
gerg@uclinux.org
Subject: Re: [Qemu-devel] [PATCH for-2.5 18/30] m68k: addq/subq can work with all the data sizes.
Date: Wed, 12 Aug 2015 09:48:58 -0700 [thread overview]
Message-ID: <55CB78FA.7070107@twiddle.net> (raw)
In-Reply-To: <1439151229-27747-19-git-send-email-laurent@vivier.eu>
On 08/09/2015 01:13 PM, Laurent Vivier wrote:
> Improve TCG constant use by creating only once for several uses.
>
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
> target-m68k/translate.c | 46 +++++++++++++++++++++++++++-------------------
> 1 file changed, 27 insertions(+), 19 deletions(-)
>
> diff --git a/target-m68k/translate.c b/target-m68k/translate.c
> index 9e379b3..ae57792 100644
> --- a/target-m68k/translate.c
> +++ b/target-m68k/translate.c
> @@ -1778,40 +1778,48 @@ DISAS_INSN(jump)
>
> DISAS_INSN(addsubq)
> {
> - TCGv src1;
> - TCGv src2;
> + TCGv src;
> TCGv dest;
> - int val;
> + TCGv val;
> + int imm;
> TCGv addr;
> + int opsize;
>
> - SRC_EA(env, src1, OS_LONG, 0, &addr);
> - val = (insn >> 9) & 7;
> - if (val == 0)
> - val = 8;
> + if ((insn & 070) == 010) {
> + /* Operation on address register is always long. */
> + opsize = OS_LONG;
> + } else {
> + opsize = insn_opsize(insn, 6);
> + }
> + SRC_EA(env, src, opsize, -1, &addr);
> + imm = (insn >> 9) & 7;
> + if (imm == 0) {
> + imm = 8;
> + }
> + val = tcg_const_i32(imm);
> dest = tcg_temp_new();
> - tcg_gen_mov_i32(dest, src1);
> + tcg_gen_mov_i32(dest, src);
> if ((insn & 0x38) == 0x08) {
> /* Don't update condition codes if the destination is an
> address register. */
> if (insn & 0x0100) {
> - tcg_gen_subi_i32(dest, dest, val);
> + tcg_gen_sub_i32(dest, dest, val);
> } else {
> - tcg_gen_addi_i32(dest, dest, val);
> + tcg_gen_add_i32(dest, dest, val);
> }
> } else {
> - src2 = tcg_const_i32(val);
> if (insn & 0x0100) {
> - SET_X_FLAG(OS_LONG, dest, tcg_const_i32(val));
> - tcg_gen_subi_i32(dest, dest, val);
> - set_cc_op(s, CC_OP_SUB);
> + SET_X_FLAG(opsize, dest, val);
> + tcg_gen_sub_i32(dest, dest, val);
> + SET_CC_OP(opsize, SUB);
> } else {
> - tcg_gen_addi_i32(dest, dest, val);
> - SET_X_FLAG(OS_LONG, dest, tcg_const_i32(val));
> - SET_CC_OP(OS_LONG, ADD);
> + tcg_gen_add_i32(dest, dest, val);
> + SET_X_FLAG(opsize, dest, val);
> + SET_CC_OP(opsize, ADD);
> }
> - gen_update_cc_add(dest, src2);
> + gen_update_cc_add(dest, val);
> }
You do need to free val here.
> - DEST_EA(env, insn, OS_LONG, dest, &addr);
> + DEST_EA(env, insn, opsize, dest, &addr);
> }
>
> DISAS_INSN(tpf)
>
next prev parent reply other threads:[~2015-08-12 16:49 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-09 20:13 [Qemu-devel] [PATCH for-2.5 00/30] 680x0 instructions emulation Laurent Vivier
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 01/30] m68k: define m680x0 CPUs and features Laurent Vivier
2015-08-11 23:13 ` Richard Henderson
2015-08-12 8:01 ` Laurent Vivier
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 02/30] m68k: manage scaled index Laurent Vivier
2015-08-12 3:42 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 03/30] m68k: introduce read_imXX() functions Laurent Vivier
2015-08-09 21:12 ` Andreas Schwab
2015-08-12 3:54 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 04/30] m68k: set disassembler mode to 680x0 or coldfire Laurent Vivier
2015-08-12 3:57 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 05/30] m68k: define operand sizes Laurent Vivier
2015-08-12 4:07 ` Richard Henderson
2015-08-12 8:44 ` Laurent Vivier
2015-08-12 8:52 ` Andreas Schwab
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 06/30] m68k: REG() macro cleanup Laurent Vivier
2015-08-12 4:11 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 07/30] m68k: allow to update flags with operation on words and bytes Laurent Vivier
2015-08-12 4:28 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 08/30] m68k: update CPU flags management Laurent Vivier
2015-08-12 5:12 ` Richard Henderson
2015-08-12 20:56 ` Laurent Vivier
2015-08-12 21:19 ` Richard Henderson
2015-08-12 21:21 ` Laurent Vivier
2015-08-13 18:09 ` Laurent Vivier
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 09/30] m68k: add X flag helpers Laurent Vivier
2015-08-12 5:18 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 10/30] m68k: tst bugfix Laurent Vivier
2015-08-12 5:18 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 11/30] m68k: improve clr/moveq Laurent Vivier
2015-08-12 5:20 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 12/30] m68k: Manage divw overflow Laurent Vivier
2015-08-12 6:03 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 13/30] m68k: set Z and N on divu/muls overflow as a real 68040 Laurent Vivier
2015-08-12 6:29 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 14/30] m68k: allow adda/suba to add/sub word Laurent Vivier
2015-08-12 7:32 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 15/30] m68k: add more modes to movem Laurent Vivier
2015-08-12 7:54 ` Richard Henderson
2015-08-12 8:07 ` Andreas Schwab
2015-08-12 15:13 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 16/30] m68k: Add all access modes and data sizes to some 680x0 instructions Laurent Vivier
2015-08-12 16:25 ` Richard Henderson
2015-08-12 16:27 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 17/30] m68k: ori/andi/subi/addi/eori/cmpi can modify SR/CCR Laurent Vivier
2015-08-12 16:44 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 18/30] m68k: addq/subq can work with all the data sizes Laurent Vivier
2015-08-12 16:48 ` Richard Henderson [this message]
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 19/30] m68k: add cmpm Laurent Vivier
2015-08-12 17:00 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 20/30] m68k: add exg Laurent Vivier
2015-08-12 17:05 ` Richard Henderson
2015-08-12 22:43 ` Laurent Vivier
2015-08-12 23:09 ` Richard Henderson
2015-08-12 23:10 ` Laurent Vivier
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 21/30] m68k: add bkpt Laurent Vivier
2015-08-12 17:07 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 22/30] m68k: add cas instruction Laurent Vivier
2015-08-12 17:14 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 23/30] m68k: add linkl Laurent Vivier
2015-08-12 17:33 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 24/30] m68k: add DBcc and Scc (memory operand) Laurent Vivier
2015-08-12 17:49 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 25/30] m68k: add abcd, sbcd, nbcd instructions Laurent Vivier
2015-08-12 17:57 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 26/30] m68k: add mull/divl Laurent Vivier
2015-08-12 18:36 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 27/30] m68k: add addx/subx/negx Laurent Vivier
2015-08-12 18:46 ` Richard Henderson
2015-08-13 0:11 ` Laurent Vivier
2015-08-13 2:23 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 28/30] m68k: shift/rotate bytes and words Laurent Vivier
2015-08-12 19:11 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 29/30] m68k: add rol/rox/ror/roxr Laurent Vivier
2015-08-12 19:40 ` Richard Henderson
2015-08-09 20:13 ` [Qemu-devel] [PATCH for-2.5 30/30] m68k: add bitfield instructions Laurent Vivier
2015-08-12 21:05 ` Richard Henderson
2015-08-13 2:22 ` [Qemu-devel] [PATCH for-2.5 00/30] 680x0 instructions emulation Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55CB78FA.7070107@twiddle.net \
--to=rth@twiddle.net \
--cc=gerg@uclinux.org \
--cc=laurent@vivier.eu \
--cc=peter.crosthwaite@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=schwab@linux-m68k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).