From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXIDx-0000yU-IU for qemu-devel@nongnu.org; Wed, 02 Sep 2015 20:17:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZXIDw-0006I6-Pi for qemu-devel@nongnu.org; Wed, 02 Sep 2015 20:17:53 -0400 Received: from mail-pa0-x22e.google.com ([2607:f8b0:400e:c03::22e]:36527) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXIDw-0006Hd-Eb for qemu-devel@nongnu.org; Wed, 02 Sep 2015 20:17:52 -0400 Received: by pacwi10 with SMTP id wi10so26935508pac.3 for ; Wed, 02 Sep 2015 17:17:51 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Wed, 2 Sep 2015 17:17:31 -0700 Message-Id: <1441239463-18981-6-git-send-email-rth@twiddle.net> In-Reply-To: <1441239463-18981-1-git-send-email-rth@twiddle.net> References: <1441239463-18981-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PATCH 05/17] target-openrisc: Use movcond where appropriate List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, proljc@gmail.com Signed-off-by: Richard Henderson --- target-openrisc/translate.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/target-openrisc/translate.c b/target-openrisc/translate.c index 6520896..1aa6bbf 100644 --- a/target-openrisc/translate.c +++ b/target-openrisc/translate.c @@ -208,12 +208,16 @@ static void gen_jump(DisasContext *dc, uint32_t imm, uint32_t reg, uint32_t op0) case 0x03: /* l.bnf */ case 0x04: /* l.bf */ { - TCGLabel *lab = gen_new_label(); - tcg_gen_movi_tl(jmp_pc, dc->pc+8); - tcg_gen_brcondi_i32(op0 == 0x03 ? TCG_COND_EQ : TCG_COND_NE, - cpu_sr_f, SR_F, lab); - tcg_gen_movi_tl(jmp_pc, tmp_pc); - gen_set_label(lab); + TCGv t_next = tcg_const_tl(dc->pc + 8); + TCGv t_true = tcg_const_tl(tmp_pc); + TCGv t_zero = tcg_const_tl(0); + + tcg_gen_movcond_tl(op0 == 0x03 ? TCG_COND_EQ : TCG_COND_NE, + jmp_pc, cpu_sr_f, t_zero, t_true, t_next); + + tcg_temp_free(t_next); + tcg_temp_free(t_true); + tcg_temp_free(t_zero); } break; case 0x11: /* l.jr */ @@ -496,14 +500,10 @@ static void dec_calc(DisasContext *dc, uint32_t insn) case 0xe: /* l.cmov */ LOG_DIS("l.cmov r%d, r%d, r%d\n", rd, ra, rb); { - TCGLabel *lab = gen_new_label(); - TCGv res = tcg_temp_local_new(); - tcg_gen_mov_tl(res, cpu_R[rb]); - tcg_gen_brcondi_tl(TCG_COND_NE, cpu_sr_f, SR_F, lab); - tcg_gen_mov_tl(res, cpu_R[ra]); - gen_set_label(lab); - tcg_gen_mov_tl(cpu_R[rd], res); - tcg_temp_free(res); + TCGv zero = tcg_const_tl(0); + tcg_gen_movcond_tl(TCG_COND_NE, cpu_R[rd], cpu_sr_f, zero, + cpu_R[ra], cpu_R[rb]); + tcg_temp_free(zero); } return; -- 2.4.3