diff options
Diffstat (limited to 'sreals.s')
-rw-r--r-- | sreals.s | 161 |
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 |