[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 139/437: Implement sqrt codes in mips.
From: |
Andy Wingo |
Subject: |
[Guile-commits] 139/437: Implement sqrt codes in mips. |
Date: |
Mon, 2 Jul 2018 05:14:03 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit aa7c8230c1213273209e30091b6ae3dc177557d0
Author: pcpa <address@hidden>
Date: Tue Dec 4 13:30:46 2012 -0200
Implement sqrt codes in mips.
* lib/jit_mips-fpu.c, lib/jit_mips.c: Implement missing mips
jit_sqrtr_{f,d} codes.
* check/all.tst, include/lightning.h, lib/jit_print.c: Change
declaration order and call order in all.tst of {add,sub}c and
{add,sub}x. *c must be called before to set the carry and *x
second to use the carry and keep it set. The wrong call order
was causing all.tst to fail in mips, where a register is
allocated to keep a global carry state.
---
ChangeLog | 12 ++++++++++++
check/all.tst | 8 ++++----
include/lightning.h | 12 ++++++------
lib/jit_mips-fpu.c | 8 ++++++--
lib/jit_mips.c | 2 ++
lib/jit_print.c | 4 ++--
6 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8611bda..b5a7a75 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2012-12-04 Paulo Andrade <address@hidden>
+ * lib/jit_mips-fpu.c, lib/jit_mips.c: Implement missing mips
+ jit_sqrtr_{f,d} codes.
+
+ * check/all.tst, include/lightning.h, lib/jit_print.c: Change
+ declaration order and call order in all.tst of {add,sub}c and
+ {add,sub}x. *c must be called before to set the carry and *x
+ second to use the carry and keep it set. The wrong call order
+ was causing all.tst to fail in mips, where a register is
+ allocated to keep a global carry state.
+
+2012-12-04 Paulo Andrade <address@hidden>
+
* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
lib/jit_mips-fpu.c, lib/jit_mips.c: Correct float/double
argument handling and make the mips backend pass the initial
diff --git a/check/all.tst b/check/all.tst
index 055da44..aa8856c 100644
--- a/check/all.tst
+++ b/check/all.tst
@@ -22,16 +22,16 @@
#endif
addr %r0 %r1 %r2
addi %r0 %r1 2
- addxr %r0 %r1 %r2
- addxi %r0 %r1 2
addcr %r0 %r1 %r2
addci %r0 %r1 2
+ addxr %r0 %r1 %r2
+ addxi %r0 %r1 2
subr %r0 %r1 %r2
subi %r0 %r1 2
- subxr %r0 %r1 %r2
- subxi %r0 %r1 2
subcr %r0 %r1 %r2
subci %r0 %r1 2
+ subxr %r0 %r1 %r2
+ subxi %r0 %r1 2
mulr %r0 %r1 %r2
muli %r0 %r1 2
divr %r0 %r1 %r2
diff --git a/include/lightning.h b/include/lightning.h
index 4209005..8af86e1 100644
--- a/include/lightning.h
+++ b/include/lightning.h
@@ -133,21 +133,21 @@ typedef enum {
#define jit_addr(u,v,w) jit_new_node_www(jit_code_addr,u,v,w)
#define jit_addi(u,v,w) jit_new_node_www(jit_code_addi,u,v,w)
jit_code_addr, jit_code_addi,
-#define jit_addxr(u,v,w) jit_new_node_www(jit_code_addxr,u,v,w)
-#define jit_addxi(u,v,w) jit_new_node_www(jit_code_addxi,u,v,w)
- jit_code_addxr, jit_code_addxi,
#define jit_addcr(u,v,w) jit_new_node_www(jit_code_addcr,u,v,w)
#define jit_addci(u,v,w) jit_new_node_www(jit_code_addci,u,v,w)
jit_code_addcr, jit_code_addci,
+#define jit_addxr(u,v,w) jit_new_node_www(jit_code_addxr,u,v,w)
+#define jit_addxi(u,v,w) jit_new_node_www(jit_code_addxi,u,v,w)
+ jit_code_addxr, jit_code_addxi,
#define jit_subr(u,v,w) jit_new_node_www(jit_code_subr,u,v,w)
#define jit_subi(u,v,w) jit_new_node_www(jit_code_subi,u,v,w)
jit_code_subr, jit_code_subi,
-#define jit_subxr(u,v,w) jit_new_node_www(jit_code_subxr,u,v,w)
-#define jit_subxi(u,v,w) jit_new_node_www(jit_code_subxi,u,v,w)
- jit_code_subxr, jit_code_subxi,
#define jit_subcr(u,v,w) jit_new_node_www(jit_code_subcr,u,v,w)
#define jit_subci(u,v,w) jit_new_node_www(jit_code_subci,u,v,w)
jit_code_subcr, jit_code_subci,
+#define jit_subxr(u,v,w) jit_new_node_www(jit_code_subxr,u,v,w)
+#define jit_subxi(u,v,w) jit_new_node_www(jit_code_subxi,u,v,w)
+ jit_code_subxr, jit_code_subxi,
#define jit_mulr(u,v,w) jit_new_node_www(jit_code_mulr,u,v,w)
#define jit_muli(u,v,w) jit_new_node_www(jit_code_muli,u,v,w)
diff --git a/lib/jit_mips-fpu.c b/lib/jit_mips-fpu.c
index bddbc4a..702a703 100644
--- a/lib/jit_mips-fpu.c
+++ b/lib/jit_mips-fpu.c
@@ -96,9 +96,11 @@
# define DIV_S(fd,fs,ft)
hrrrit(MIPS_COP1,MIPS_fmt_S,ft,fs,fd,MIPS_DIV_fmt)
# define DIV_D(fd,fs,ft)
hrrrit(MIPS_COP1,MIPS_fmt_D,ft,fs,fd,MIPS_DIV_fmt)
# define ABS_S(fd,fs)
hrrrit(MIPS_COP1,MIPS_fmt_S,0,fs,fd,MIPS_ABS_fmt)
-# define ABS_D(fd, fs)
hrrrit(MIPS_COP1,MIPS_fmt_D,0,fs,fd,MIPS_ABS_fmt)
+# define ABS_D(fd,fs)
hrrrit(MIPS_COP1,MIPS_fmt_D,0,fs,fd,MIPS_ABS_fmt)
# define NEG_S(fd,fs)
hrrrit(MIPS_COP1,MIPS_fmt_S,0,fs,fd,MIPS_NEG_fmt)
-# define NEG_D(fd, fs)
hrrrit(MIPS_COP1,MIPS_fmt_D,0,fs,fd,MIPS_NEG_fmt)
+# define NEG_D(fd,fs)
hrrrit(MIPS_COP1,MIPS_fmt_D,0,fs,fd,MIPS_NEG_fmt)
+# define SQRT_S(fd,fs)
hrrrit(MIPS_COP1,MIPS_fmt_S,0,fs,fd,MIPS_SQRT_fmt)
+# define SQRT_D(fd,fs)
hrrrit(MIPS_COP1,MIPS_fmt_D,0,fs,fd,MIPS_SQRT_fmt)
# define MFC1(rt, fs) hrrrit(MIPS_COP1,MIPS_MF,rt,fs,0,0)
# define MTC1(rt, fs) hrrrit(MIPS_COP1,MIPS_MT,rt,fs,0,0)
# define DMFC1(rt, fs)
hrrrit(MIPS_COP1,MIPS_DMF,rt,fs,0,0)
@@ -208,6 +210,8 @@ static void
_divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
# define absr_d(r0,r1) ABS_D(r0,r1)
# define negr_f(r0,r1) NEG_S(r0,r1)
# define negr_d(r0,r1) NEG_D(r0,r1)
+# define sqrtr_f(r0,r1) SQRT_S(r0,r1)
+# define sqrtr_d(r0,r1) SQRT_D(r0,r1)
# define getarg_f(r0, r1) MTC1(r1, r0)
# define pushargr_f(r0, r1) MFC1(r1, r0)
# define pushargi_f(r0, i0) _pushargi_f(_jit, r0, i0)
diff --git a/lib/jit_mips.c b/lib/jit_mips.c
index 2e220b2..f365e3c 100644
--- a/lib/jit_mips.c
+++ b/lib/jit_mips.c
@@ -973,6 +973,7 @@ _jit_emit(jit_state_t *_jit)
case_rrf(div, _f, 32);
case_rr(abs, _f);
case_rr(neg, _f);
+ case_rr(sqrt, _f);
case_rr(ext, _f);
case_rr(ld, _f);
case_rw(ld, _f);
@@ -1054,6 +1055,7 @@ _jit_emit(jit_state_t *_jit)
case_rrf(div, _d, 64);
case_rr(abs, _d);
case_rr(neg, _d);
+ case_rr(sqrt, _d);
case_rr(ext, _d);
case_rr(ld, _d);
case_rw(ld, _d);
diff --git a/lib/jit_print.c b/lib/jit_print.c
index 151ddba..e05e353 100644
--- a/lib/jit_print.c
+++ b/lib/jit_print.c
@@ -41,11 +41,11 @@ static char *code_name[] = {
"label",
"prolog",
"addr", "addi",
- "addxr", "addxi",
"addcr", "addci",
+ "addxr", "addxi",
"subr", "subi",
- "subxr", "subxi",
"subcr", "subci",
+ "subxr", "subxi",
"mulr", "muli",
"divr", "divi",
"divr_u", "divi_u",
- [Guile-commits] 98/437: always set and replace lightning_frag, (continued)
- [Guile-commits] 98/437: always set and replace lightning_frag, Andy Wingo, 2018/07/02
- [Guile-commits] 166/437: Correct extra regressions found by the call.tst test case., Andy Wingo, 2018/07/02
- [Guile-commits] 165/437: Add simple test case to test argument and return values., Andy Wingo, 2018/07/02
- [Guile-commits] 158/437: Add new test case to check stack integrity on complex stack frames., Andy Wingo, 2018/07/02
- [Guile-commits] 150/437: Add jit_ellipis and remove jit_prepare argument., Andy Wingo, 2018/07/02
- [Guile-commits] 108/437: fix x86_64 jit_bner_{f,d}, Andy Wingo, 2018/07/02
- [Guile-commits] 122/437: Correct ALU add and sub operations with 64 bit immediate operands., Andy Wingo, 2018/07/02
- [Guile-commits] 119/437: Correct branches and several ALU operations with 64 immediates, Andy Wingo, 2018/07/02
- [Guile-commits] 135/437: Correct implementation problems on ix86., Andy Wingo, 2018/07/02
- [Guile-commits] 169/437: Correct wrong and confusing reverse float comparison logic, Andy Wingo, 2018/07/02
- [Guile-commits] 139/437: Implement sqrt codes in mips.,
Andy Wingo <=
- [Guile-commits] 134/437: Correct make distcheck., Andy Wingo, 2018/07/02
- [Guile-commits] 156/437: Simplify listing of test cases with alternate jit generation options, Andy Wingo, 2018/07/02
- [Guile-commits] 157/437: Add two extra test cases for float operations., Andy Wingo, 2018/07/02
- [Guile-commits] 161/437: Add new register clobber detection test case., Andy Wingo, 2018/07/02
- [Guile-commits] 164/437: Add new carry test case., Andy Wingo, 2018/07/02
- [Guile-commits] 138/437: Correct mips backend implementation to pass initial tests., Andy Wingo, 2018/07/02
- [Guile-commits] 163/437: Add missing jit_htonr to ppc backend., Andy Wingo, 2018/07/02
- [Guile-commits] 177/437: Correct reference to dangling pointer and better note bounds checking, Andy Wingo, 2018/07/02
- [Guile-commits] 167/437: Change type of return of jit_arg* and argument to jit_getarg*, Andy Wingo, 2018/07/02
- [Guile-commits] 168/437: Add new extensive float comparison and conversion test case, Andy Wingo, 2018/07/02