summaryrefslogtreecommitdiff
path: root/sreals.s
diff options
context:
space:
mode:
Diffstat (limited to 'sreals.s')
-rw-r--r--sreals.s161
1 files changed, 161 insertions, 0 deletions
diff --git a/sreals.s b/sreals.s
new file mode 100644
index 0000000..2489b00
--- /dev/null
+++ b/sreals.s
@@ -0,0 +1,161 @@
+
+#define SP_G5
+
+#ifdef SP_G5
+# define sp %g5
+#else
+# define sp %g7
+#endif
+
+ .global r_to_i_real
+ .global entier_real
+ .global acos_real
+ .global pow_real
+ .global cos_real
+ .global exp_real
+ .global asin_real
+ .global atan_real
+ .global log10_real
+ .global tan_real
+ .global ln_real
+ .global sin_real
+
+!
+! REALS
+!
+
+exp_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @exp
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+ln_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @log
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+log10_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @log10
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+pow_real:
+ std %f2,[%fp-8]
+ ld [%fp-8],%o0
+ ld [%fp-4],%o1
+ std %f0,[%fp-8]
+ ld [%fp-8],%o2
+ call @pow
+ ld [%fp-4],%o3
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+sin_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @sin
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+cos_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @cos
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+tan_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @tan
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+acos_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @acos
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+asin_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @asin
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+atan_real:
+ std %f0,[%fp-8]
+ ld [%fp-8],%o0
+ call @atan
+ ld [%fp-4],%o1
+ ld [sp],%o7
+ retl
+ inc 4,sp
+
+entier_real:
+ sethi %hi d_0,%o0
+ ldd [%o0+%lo d_0],%f2
+ fdtoi %f0,%f4
+ ld [sp],%o7
+ st %f4,[%fp-4]
+ fcmpd %f0,%f2
+ ld [%fp-4],%l0
+ fbge entier_real_2
+ nop
+ fitod %f4,%f2
+ fcmpd %f0,%f2
+ nop
+ fbne,a entier_real_2
+ dec %l0
+entier_real_2:
+ retl
+ inc 4,sp
+
+ .data
+ .align 8
+d_0: .double 0r0.0
+d_0_5: .double 0r0.5
+ .text
+
+r_to_i_real:
+ sethi %hi d_0,%o0
+ ldd [%o0+%lo d_0],%f2
+ sethi %hi d_0_5,%o0
+ fcmpd %f0,%f2
+ ldd [%o0+%lo d_0_5],%f4
+ nop
+ fbge,a r_to_i_real_2
+ faddd %f0,%f4,%f0
+ fsubd %f0,%f4,%f0
+r_to_i_real_2:
+ fdtoi %f0,%f2
+ st %f2,[%fp-4]
+ ld [sp],%o7
+ ld [%fp-4],%l0
+ retl
+ inc 4,sp