#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