From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KytMW-0001Ra-H8 for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:20:48 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KytMV-0001RC-Tm for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:20:47 -0500 Received: from [199.232.76.173] (port=53168 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KytMV-0001R5-KY for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:20:47 -0500 Received: from hall.aurel32.net ([88.191.82.174]:35524) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KytMV-00059w-2G for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:20:47 -0500 Date: Sat, 8 Nov 2008 20:20:44 +0100 From: Aurelien Jarno Message-ID: <20081108192044.GI15084@volta.aurel32.net> References: <20081108191604.GA20748@volta.aurel32.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <20081108191604.GA20748@volta.aurel32.net> Subject: [Qemu-devel] [PATCH v2 08/11] target-mips: optimize gen_farith() Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Optimize code generation in gen_farith(): - Temp variables are valid up to and *including* the brcond instruction. Use them instead of temp local variables. Signed-off-by: Aurelien Jarno --- target-mips/translate.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) diff --git a/target-mips/translate.c b/target-mips/translate.c index e6978d6..0afcb05 100644 --- a/target-mips/translate.c +++ b/target-mips/translate.c @@ -6314,32 +6314,32 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, case FOP(18, 16): { int l1 = gen_new_label(); - TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL); + TCGv t0 = tcg_temp_new(TCG_TYPE_TL); TCGv fp0 = tcg_temp_local_new(TCG_TYPE_I32); gen_load_gpr(t0, ft); tcg_gen_brcondi_tl(TCG_COND_NE, t0, 0, l1); - tcg_temp_free(t0); gen_load_fpr32(fp0, fs); gen_store_fpr32(fp0, fd); tcg_temp_free(fp0); gen_set_label(l1); + tcg_temp_free(t0); } opn = "movz.s"; break; case FOP(19, 16): { int l1 = gen_new_label(); - TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL); + TCGv t0 = tcg_temp_new(TCG_TYPE_TL); TCGv fp0 = tcg_temp_local_new(TCG_TYPE_I32); gen_load_gpr(t0, ft); tcg_gen_brcondi_tl(TCG_COND_EQ, t0, 0, l1); - tcg_temp_free(t0); gen_load_fpr32(fp0, fs); gen_store_fpr32(fp0, fd); tcg_temp_free(fp0); gen_set_label(l1); + tcg_temp_free(t0); } opn = "movn.s"; break; @@ -6733,32 +6733,32 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, case FOP(18, 17): { int l1 = gen_new_label(); - TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL); + TCGv t0 = tcg_temp_new(TCG_TYPE_TL); TCGv fp0 = tcg_temp_local_new(TCG_TYPE_I64); gen_load_gpr(t0, ft); tcg_gen_brcondi_tl(TCG_COND_NE, t0, 0, l1); - tcg_temp_free(t0); gen_load_fpr64(ctx, fp0, fs); gen_store_fpr64(ctx, fp0, fd); tcg_temp_free(fp0); gen_set_label(l1); + tcg_temp_free(t0); } opn = "movz.d"; break; case FOP(19, 17): { int l1 = gen_new_label(); - TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL); + TCGv t0 = tcg_temp_new(TCG_TYPE_TL); TCGv fp0 = tcg_temp_local_new(TCG_TYPE_I64); gen_load_gpr(t0, ft); tcg_gen_brcondi_tl(TCG_COND_EQ, t0, 0, l1); - tcg_temp_free(t0); gen_load_fpr64(ctx, fp0, fs); gen_store_fpr64(ctx, fp0, fd); tcg_temp_free(fp0); gen_set_label(l1); + tcg_temp_free(t0); } opn = "movn.d"; break; @@ -7068,13 +7068,12 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, check_cp1_64bitmode(ctx); { int l1 = gen_new_label(); - TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL); + TCGv t0 = tcg_temp_new(TCG_TYPE_TL); TCGv fp0 = tcg_temp_local_new(TCG_TYPE_I32); TCGv fph0 = tcg_temp_local_new(TCG_TYPE_I32); gen_load_gpr(t0, ft); tcg_gen_brcondi_tl(TCG_COND_NE, t0, 0, l1); - tcg_temp_free(t0); gen_load_fpr32(fp0, fs); gen_load_fpr32h(fph0, fs); gen_store_fpr32(fp0, fd); @@ -7082,6 +7081,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, tcg_temp_free(fp0); tcg_temp_free(fph0); gen_set_label(l1); + tcg_temp_free(t0); } opn = "movz.ps"; break; @@ -7089,13 +7089,12 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, check_cp1_64bitmode(ctx); { int l1 = gen_new_label(); - TCGv t0 = tcg_temp_local_new(TCG_TYPE_TL); + TCGv t0 = tcg_temp_new(TCG_TYPE_TL); TCGv fp0 = tcg_temp_local_new(TCG_TYPE_I32); TCGv fph0 = tcg_temp_local_new(TCG_TYPE_I32); gen_load_gpr(t0, ft); tcg_gen_brcondi_tl(TCG_COND_EQ, t0, 0, l1); - tcg_temp_free(t0); gen_load_fpr32(fp0, fs); gen_load_fpr32h(fph0, fs); gen_store_fpr32(fp0, fd); @@ -7103,6 +7102,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, tcg_temp_free(fp0); tcg_temp_free(fph0); gen_set_label(l1); + tcg_temp_free(t0); } opn = "movn.ps"; break; -- 1.5.6.5 -- .''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' aurel32@debian.org | aurelien@aurel32.net `- people.debian.org/~aurel32 | www.aurel32.net