From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:51741) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TLhgt-0007Gf-95 for qemu-devel@nongnu.org; Tue, 09 Oct 2012 17:50:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TLhgq-0005kv-IP for qemu-devel@nongnu.org; Tue, 09 Oct 2012 17:50:13 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:35918) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TLhgq-0005iV-B5 for qemu-devel@nongnu.org; Tue, 09 Oct 2012 17:50:12 -0400 Received: by mail-pb0-f45.google.com with SMTP id rp2so5738610pbb.4 for ; Tue, 09 Oct 2012 14:50:11 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Tue, 9 Oct 2012 14:49:59 -0700 Message-Id: <1349819400-25833-4-git-send-email-rth@twiddle.net> In-Reply-To: <1349819400-25833-1-git-send-email-rth@twiddle.net> References: <1349819400-25833-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PATCH 3/4] target-sparc: Avoid unnecessary local temporaries List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Blue Swirl Now that save_state never ends a BB, we don't need to copy values into local temps around it. Signed-off-by: Richard Henderson --- target-sparc/translate.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/target-sparc/translate.c b/target-sparc/translate.c index 4409f69..65e6f23 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -143,7 +143,7 @@ static TCGv_i32 gen_load_fpr_F(DisasContext *dc, unsigned int src) if (src & 1) { return MAKE_TCGV_I32(GET_TCGV_I64(cpu_fpr[src / 2])); } else { - TCGv_i32 ret = tcg_temp_local_new_i32(); + TCGv_i32 ret = tcg_temp_new_i32(); TCGv_i64 t = tcg_temp_new_i64(); tcg_gen_shri_i64(t, cpu_fpr[src / 2], 32); @@ -3885,28 +3885,16 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn) tcg_gen_mov_tl(cpu_tbr, cpu_tmp0); break; case 6: // pstate - { - TCGv r_tmp = tcg_temp_local_new(); - - tcg_gen_mov_tl(r_tmp, cpu_tmp0); - save_state(dc); - gen_helper_wrpstate(cpu_env, r_tmp); - tcg_temp_free(r_tmp); - dc->npc = DYNAMIC_PC; - } + save_state(dc); + gen_helper_wrpstate(cpu_env, cpu_tmp0); + dc->npc = DYNAMIC_PC; break; case 7: // tl - { - TCGv r_tmp = tcg_temp_local_new(); - - tcg_gen_mov_tl(r_tmp, cpu_tmp0); - save_state(dc); - tcg_gen_trunc_tl_i32(cpu_tmp32, r_tmp); - tcg_temp_free(r_tmp); - tcg_gen_st_i32(cpu_tmp32, cpu_env, - offsetof(CPUSPARCState, tl)); - dc->npc = DYNAMIC_PC; - } + save_state(dc); + tcg_gen_trunc_tl_i32(cpu_tmp32, cpu_tmp0); + tcg_gen_st_i32(cpu_tmp32, cpu_env, + offsetof(CPUSPARCState, tl)); + dc->npc = DYNAMIC_PC; break; case 8: // pil gen_helper_wrpil(cpu_env, cpu_tmp0); -- 1.7.11.4