lightning
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 4/9] mips: Optimize jit_bmsi / jit_bmci


From: Paul Cercueil
Subject: [PATCH 4/9] mips: Optimize jit_bmsi / jit_bmci
Date: Thu, 19 May 2022 10:39:13 +0100

The previous commit optimized jit_andi() on MIPS r2. It is now faster
and simpler to just call jit_andi() in the implementations of jit_bmsi()
and jit_bmci().

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 lib/jit_mips-cpu.c | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/lib/jit_mips-cpu.c b/lib/jit_mips-cpu.c
index 62c0bd5..23d54a5 100644
--- a/lib/jit_mips-cpu.c
+++ b/lib/jit_mips-cpu.c
@@ -2900,16 +2900,12 @@ _bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, 
jit_word_t i1)
     jit_word_t         w;
     jit_int32_t                t0;
     t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
-    if (can_zero_extend_short_p(i1)) {
-       ANDI(rn(t0), r0, i1);
-       w = _jit->pc.w;
-       BNE(_ZERO_REGNO, rn(t0), ((i0 - w) >> 2) - 1);
-       NOP(1);
-    }
-    else {
-       movi(rn(t0), i1);
-       w = bmsr(i0, r0, rn(t0));
-    }
+
+    andi(rn(t0), r0, i1);
+    w = _jit->pc.w;
+    BNE(_ZERO_REGNO, rn(t0), ((i0 - w) >> 2) - 1);
+    NOP(1);
+
     jit_unget_reg(t0);
     return (w);
 }
@@ -2934,16 +2930,12 @@ _bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, 
jit_word_t i1)
     jit_word_t         w;
     jit_int32_t                t0;
     t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
-    if (can_zero_extend_short_p(i1)) {
-       ANDI(rn(t0), r0, i1);
-       w = _jit->pc.w;
-       BEQ(_ZERO_REGNO, rn(t0), ((i0 - w) >> 2) - 1);
-       NOP(1);
-    }
-    else {
-       movi(rn(t0), i1);
-       w = bmcr(i0, r0, rn(t0));
-    }
+
+    andi(rn(t0), r0, i1);
+    w = _jit->pc.w;
+    BEQ(_ZERO_REGNO, rn(t0), ((i0 - w) >> 2) - 1);
+    NOP(1);
+
     jit_unget_reg(t0);
     return (w);
 }
-- 
2.35.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]