Patchwork [06/13] target-alpha: Use setcond for int comparisons.

login
register
mail settings
Submitter Richard Henderson
Date March 16, 2010, 8:04 p.m.
Message ID <0f0bca19e91dc77b9114042e12626b3bd087dc0b.1270680209.git.rth@twiddle.net>
Download mbox | patch
Permalink /patch/49666/
State New
Headers show

Comments

Richard Henderson - March 16, 2010, 8:04 p.m.
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 target-alpha/translate.c |   43 ++++++++++++++++++++++---------------------
 1 files changed, 22 insertions(+), 21 deletions(-)
Aurelien Jarno - April 10, 2010, 1:05 a.m.
On Tue, Mar 16, 2010 at 01:04:34PM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  target-alpha/translate.c |   43 ++++++++++++++++++++++---------------------
>  1 files changed, 22 insertions(+), 21 deletions(-)

Thanks, applied.

> diff --git a/target-alpha/translate.c b/target-alpha/translate.c
> index dff03ef..adeff0a 100644
> --- a/target-alpha/translate.c
> +++ b/target-alpha/translate.c
> @@ -1290,33 +1290,34 @@ MVIOP2(pkwb)
>  MVIOP2(unpkbl)
>  MVIOP2(unpkbw)
>  
> -static inline void gen_cmp(TCGCond cond, int ra, int rb, int rc, int islit,
> -                           uint8_t lit)
> +static void gen_cmp(TCGCond cond, int ra, int rb, int rc,
> +                    int islit, uint8_t lit)
>  {
> -    int l1, l2;
> -    TCGv tmp;
> +    TCGv va, vb;
>  
> -    if (unlikely(rc == 31))
> +    if (unlikely(rc == 31)) {
>          return;
> +    }
>  
> -    l1 = gen_new_label();
> -    l2 = gen_new_label();
> +    if (ra == 31) {
> +        va = tcg_const_i64(0);
> +    } else {
> +        va = cpu_ir[ra];
> +    }
> +    if (islit) {
> +        vb = tcg_const_i64(lit);
> +    } else {
> +        vb = cpu_ir[rb];
> +    }
>  
> -    if (ra != 31) {
> -        tmp = tcg_temp_new();
> -        tcg_gen_mov_i64(tmp, cpu_ir[ra]);
> -    } else
> -        tmp = tcg_const_i64(0);
> -    if (islit)
> -        tcg_gen_brcondi_i64(cond, tmp, lit, l1);
> -    else
> -        tcg_gen_brcond_i64(cond, tmp, cpu_ir[rb], l1);
> +    tcg_gen_setcond_i64(cond, cpu_ir[rc], va, vb);
>  
> -    tcg_gen_movi_i64(cpu_ir[rc], 0);
> -    tcg_gen_br(l2);
> -    gen_set_label(l1);
> -    tcg_gen_movi_i64(cpu_ir[rc], 1);
> -    gen_set_label(l2);
> +    if (ra == 31) {
> +        tcg_temp_free(va);
> +    }
> +    if (islit) {
> +        tcg_temp_free(vb);
> +    }
>  }
>  
>  static void gen_rx(int ra, int set)
> -- 
> 1.6.6.1
> 
> 
> 
>

Patch

diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index dff03ef..adeff0a 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -1290,33 +1290,34 @@  MVIOP2(pkwb)
 MVIOP2(unpkbl)
 MVIOP2(unpkbw)
 
-static inline void gen_cmp(TCGCond cond, int ra, int rb, int rc, int islit,
-                           uint8_t lit)
+static void gen_cmp(TCGCond cond, int ra, int rb, int rc,
+                    int islit, uint8_t lit)
 {
-    int l1, l2;
-    TCGv tmp;
+    TCGv va, vb;
 
-    if (unlikely(rc == 31))
+    if (unlikely(rc == 31)) {
         return;
+    }
 
-    l1 = gen_new_label();
-    l2 = gen_new_label();
+    if (ra == 31) {
+        va = tcg_const_i64(0);
+    } else {
+        va = cpu_ir[ra];
+    }
+    if (islit) {
+        vb = tcg_const_i64(lit);
+    } else {
+        vb = cpu_ir[rb];
+    }
 
-    if (ra != 31) {
-        tmp = tcg_temp_new();
-        tcg_gen_mov_i64(tmp, cpu_ir[ra]);
-    } else
-        tmp = tcg_const_i64(0);
-    if (islit)
-        tcg_gen_brcondi_i64(cond, tmp, lit, l1);
-    else
-        tcg_gen_brcond_i64(cond, tmp, cpu_ir[rb], l1);
+    tcg_gen_setcond_i64(cond, cpu_ir[rc], va, vb);
 
-    tcg_gen_movi_i64(cpu_ir[rc], 0);
-    tcg_gen_br(l2);
-    gen_set_label(l1);
-    tcg_gen_movi_i64(cpu_ir[rc], 1);
-    gen_set_label(l2);
+    if (ra == 31) {
+        tcg_temp_free(va);
+    }
+    if (islit) {
+        tcg_temp_free(vb);
+    }
 }
 
 static void gen_rx(int ra, int set)