lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat
-rw-r--r--ChangeLog 9
-rw-r--r--lib/jit_mips-cpu.c 8
2 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 71a1907..cbfbafd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2012年12月10日 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-cpu.c: Correct all current test cases.
+ Call the "xori" not the "XORI" macro for jit_xori implementation,
+ as the XORI macro handles only 16 bit unsigned values.
+ Call the "movr" macro, not the "movi" macro in the special
+ case of adding or subtracting zero.
+ Use the proper temporary register in the jit_andr implementation.
+
2012年12月09日 Paulo Andrade <pcpa@gnu.org>
* check/alu.inc, check/alu_add.ok, check/alu_add.tst,
diff --git a/lib/jit_mips-cpu.c b/lib/jit_mips-cpu.c
index 5f04e4d..8749300 100644
--- a/lib/jit_mips-cpu.c
+++ b/lib/jit_mips-cpu.c
@@ -364,7 +364,7 @@ static void _nop(jit_state_t*,jit_int32_t);
# define JR(r0) hrrrit(MIPS_SPECIAL,r0,0,0,0,MIPS_JR)
# define J(i0) hi(MIPS_J, i0)
# define MOVZ(rd,rs,rt) hrrrit(0,rs,rt,rd,0,MIPS_MOVZ)
-# define comr(r0,r1) XORI(r0, r1, -1)
+# define comr(r0,r1) xori(r0, r1, -1)
# define negr(r0,r1) SUBU(r0,_ZERO_REGNO,r1)
# define addr(rd,rs,rt) ADDU(rd,rs,rt)
# define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
@@ -715,7 +715,7 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
{
jit_int32_t reg;
if (i0 == 0)
- movi(r0, r1);
+ movr(r0, r1);
else if (can_sign_extend_short_p(i0))
ADDIU(r0, r1, i0);
else {
@@ -807,7 +807,7 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
{
jit_int32_t reg;
if (i0 == 0)
- movi(r0, r1);
+ movr(r0, r1);
else if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000)
ADDIU(r0, r1, -i0);
else {
@@ -2644,7 +2644,7 @@ _bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
jit_word_t w;
jit_int32_t t0;
t0 = jit_get_reg(jit_class_gpr);
- AND(rn(r0), r0, r1);
+ AND(rn(t0), r0, r1);
w = _jit->pc.w;
BEQ(_ZERO_REGNO, rn(t0), ((i0 - w) >> 2) - 1);
NOP(1);
generated by cgit v1.2.3 (git 2.39.1) at 2025年10月01日 17:24:57 +0000

AltStyle によって変換されたページ (->オリジナル) /