📄 dependent.il
字号:
/* @(#)dependent.il 1.1 92/07/30 SMI *//* * Copyright (c) 1987 by Sun Microsystems, Inc. */ .inline _pow_rr,8 | float _pow_rr( float *x, *y ) movl sp@+,a0 | a0 gets address of x. movl sp@+,a1 | a1 gets address of y. fmovel fpsr,d1 | d1 gets caller's status. fmovel fpcr,d0 | d0 gets caller's modes. fmovel #0,fpcr | Set default modes. flogns a0@,fp0 | fp0 gets log(x). fmuls a1@,fp0 | fp0 gets y*log(x). fetoxx fp0,fp0 | fp0 gets x**y. fmovel d0,fpcr | Restore caller's modes. btst #9,d0 jne 1f | Go the long way if inexact trap is intended. btst #3,d1 jeq 1f | Go the long way if accrued inexact bit was off. fmovel fpsr,d0 andl #0x07000000,d0 | Get Z/I/NaN condition code bits. jeq 2f | Go the long way if result is zero, infinity, or NaN.1: fmovel d1,fpsr | Restore caller's status. movl a1,sp@- | Push parameters for _r_pow_. movl a0,sp@- jsr _r_pow_ | Compute carefully. fmoves d0,fp0 movl sp@+,a0 | Clear parameters for _r_pow_. movl sp@+,a02: fmoves fp0,d0 .end .inline _r_pow_,8 | float _r_pow_( float *x, *y ) movl sp@+,a0 | a0 gets address of x. movl sp@+,a1 | a1 gets address of y. fmovel fpsr,d1 | d1 gets caller's status. fmovel fpcr,d0 | d0 gets caller's modes. fmovel #0,fpcr | Set default modes. flogns a0@,fp0 | fp0 gets log(x). fmuls a1@,fp0 | fp0 gets y*log(x). fetoxx fp0,fp0 | fp0 gets x**y. fmovel d0,fpcr | Restore caller's modes. btst #9,d0 jne 1f | Go the long way if inexact trap is intended. btst #3,d1 jeq 1f | Go the long way if accrued inexact bit was off. fmovel fpsr,d0 andl #0x07000000,d0 | Get Z/I/NaN condition code bits. jeq 2f | Go the long way if result is zero, infinity, or NaN.1: fmovel d1,fpsr | Restore caller's status. movl a1,sp@- | Push parameters for _r_pow_. movl a0,sp@- jsr _r_pow_ | Compute carefully. fmoves d0,fp0 movl sp@+,a0 | Clear parameters for _r_pow_. movl sp@+,a02: fmoves fp0,d0 .end .inline _pow_dd,8 | double _pow_dd( double *x, *y ) movl sp@+,a0 | a0 gets address of x. movl sp@+,a1 | a1 gets address of y. fmovel fpsr,d1 | d1 gets caller's status. fmovel fpcr,d0 | d0 gets caller's modes. fmovel #0,fpcr | Set default modes. flognd a0@,fp0 | fp0 gets log(x). fmuld a1@,fp0 | fp0 gets y*log(x). fetoxx fp0,fp0 | fp0 gets x**y. fmovel d0,fpcr | Restore caller's modes. btst #9,d0 jne 1f | Go the long way if inexact trap is intended. btst #3,d1 jeq 1f | Go the long way if accrued inexact bit was off. fmovel fpsr,d0 andl #0x07000000,d0 | Get Z/I/NaN condition code bits. jeq 2f | Go the long way if result is zero, infinity, or NaN.1: fmovel d1,fpsr | Restore caller's status. movl a1@(4),sp@- | Push parameters for _pow. movl a1@,sp@- movl a0@(4),sp@- movl a0@,sp@- jsr _pow | Compute carefully. movl sp@+,a0 | Clear parameters for _pow. movl sp@+,a0 movl d0,sp@ movl d1,sp@(4) fmoved sp@+,fp02: fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _d_pow_,8 | double _pow_dd( double *x, *y ) movl sp@+,a0 | a0 gets address of x. movl sp@+,a1 | a1 gets address of y. fmovel fpsr,d1 | d1 gets caller's status. fmovel fpcr,d0 | d0 gets caller's modes. fmovel #0,fpcr | Set default modes. flognd a0@,fp0 | fp0 gets log(x). fmuld a1@,fp0 | fp0 gets y*log(x). fetoxx fp0,fp0 | fp0 gets x**y. fmovel d0,fpcr | Restore caller's modes. btst #9,d0 jne 1f | Go the long way if inexact trap is intended. btst #3,d1 jeq 1f | Go the long way if accrued inexact bit was off. fmovel fpsr,d0 andl #0x07000000,d0 | Get Z/I/NaN condition code bits. jeq 2f | Go the long way if result is zero, infinity, or NaN.1: fmovel d1,fpsr | Restore caller's status. movl a1@(4),sp@- | Push parameters for _pow. movl a1@,sp@- movl a0@(4),sp@- movl a0@,sp@- jsr _pow | Compute carefully. movl sp@+,a0 | Clear parameters for _pow. movl sp@+,a0 movl d0,sp@ movl d1,sp@(4) fmoved sp@+,fp02: fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _pow,16 | double _pow( double x, y ) fmoved sp@+,fp1 | fp1 gets x. fmovel fpsr,d1 | d1 gets caller's status. fmovel fpcr,d0 | d0 gets caller's modes. fmovel #0,fpcr | Set default modes. flognx fp1,fp0 | fp0 gets log(x). fmuld sp@,fp0 | fp0 gets y*log(x). fetoxx fp0,fp0 | fp0 gets x**y. fmovel d0,fpcr | Restore caller's modes. btst #9,d0 jne 1f | Go the long way if inexact trap is intended. btst #3,d1 jeq 1f | Go the long way if accrued inexact bit was off. fmovel fpsr,d0 andl #0x07000000,d0 | Get Z/I/NaN condition code bits. jeq 2f | Go the long way if result is zero, infinity, or NaN.1: fmovel d1,fpsr | Restore caller's status. fmoved fp1,sp@- | Push parameters for _pow. jsr _pow | Compute carefully. movl sp@+,a0 | Clear parameters for _pow. movl sp@+,a0 movl d0,sp@ movl d1,sp@(4) fmoved sp@,fp02: fmoved fp0,sp@ movl sp@+,d0 movl sp@+,d1 .end/* -f68881 templates for documented libm functions */ .inline _acos,8 facosd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _aint,8 fintrzd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _anint,8 movl sp@+,d0 movl sp@+,d1 jsr Manintd .end .inline _asin,8 fasind sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _atan,8 fatand sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _atanh,8 fatanhd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _r_atanh_,4 movl sp@+,a0 fatanhs a0@,fp0 fmoves fp0,d0 .end .inline _ceil,8 fmovel fpcr,d1 movl d1,d0 orb #0x30,d0 | Turn on round to +inf. fmovel d0,fpcr fintd sp@+,fp0 fmoved fp0,sp@- fmovel d1,fpcr movl sp@+,d0 movl sp@+,d1 .end .inline _floor,8 fmovel fpcr,d1 movl d1,d0 andb #0xcf,d0 orb #0x20,d0 | Turn on round to -inf. fmovel d0,fpcr fintd sp@+,fp0 fmoved fp0,sp@- fmovel d1,fpcr movl sp@+,d0 movl sp@+,d1 .end .inline _d_ceil_,4 movl sp@+,a0 fmovel fpcr,d1 movl d1,d0 orb #0x30,d0 | Turn on round to +inf. fmovel d0,fpcr fintd a0@,fp0 fmoved fp0,sp@- fmovel d1,fpcr movl sp@+,d0 movl sp@+,d1 .end .inline _d_floor_,4 movl sp@+,a0 fmovel fpcr,d1 movl d1,d0 andb #0xcf,d0 orb #0x20,d0 | Turn on round to -inf. fmovel d0,fpcr fintd a0@,fp0 fmoved fp0,sp@- fmovel d1,fpcr movl sp@+,d0 movl sp@+,d1 .end .inline _r_ceil_,4 movl sp@+,a0 fmovel fpcr,d1 movl d1,d0 orb #0x30,d0 | Turn on round to +inf. fmovel d0,fpcr fints a0@,fp0 fmoves fp0,d0 fmovel d1,fpcr .end .inline _r_floor_,4 movl sp@+,a0 fmovel fpcr,d1 movl d1,d0 andb #0xcf,d0 orb #0x20,d0 | Turn on round to -inf. fmovel d0,fpcr fints a0@,fp0 fmoves fp0,d0 fmovel d1,fpcr .end .inline _cos,8 fcosd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _cosh,8 fcoshd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _exp,8 fetoxd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _expm1,8 fetoxm1d sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _r_expm1_,4 movl sp@+,a0 fetoxm1s a0@,fp0 fmoves fp0,d0 .end .inline _exp2,8 ftwotoxd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _exp10,8 ftentoxd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _hypot,16 fmoved sp@+,fp0 fmulx fp0,fp0 fmoved sp@+,fp1 fmulx fp1,fp1 faddx fp1,fp0 fsqrtx fp0,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _d_hypot_,8 movl sp@+,a0 fmoved a0@,fp0 movl sp@+,a0 fmulx fp0,fp0 fmoved a0@,fp1 fmulx fp1,fp1 faddx fp1,fp0 fsqrtx fp0,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _r_hypot_,8 movl sp@+,a0 fmoves a0@,fp0 movl sp@+,a0 fmoves a0@,fp1 fmulx fp0,fp0 fmulx fp1,fp1 faddx fp1,fp0 fsqrtx fp0,fp0 fmoves fp0,d0 .end .inline _log,8 flognd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _log1p,8 flognp1d sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _r_log1p_,4 movl sp@+,a0 flognp1s a0@,fp0 fmoves fp0,d0 .end .inline _log2,8 flog2d sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _r_log2_,4 movl sp@+,a0 flog2s a0@,fp0 fmoves fp0,d0 .end .inline _log10,8 flog10d sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _nint,8 movl sp@+,d0 movl sp@+,d1 jsr Mnintd .end .inline _sin,8 fsind sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _sinh,8 fsinhd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _sqrt,8 fsqrtd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _tan,8 ftand sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _tanh,8 ftanhd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _rint,8 fintd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _d_rint_,4 movl sp@+,a0 fintd a0@,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _r_rint_,4 movl sp@+,a0 fints a0@,fp0 fmoves fp0,d0 .end .inline _irint,8 fintd sp@+,fp0 fmovel fp0,d0 .end .inline _id_irint_,4 movl sp@+,a0 fintd a0@,fp0 fmovel fp0,d0 .end .inline _ir_irint_,4 movl sp@+,a0 fints a0@,fp0 fmovel fp0,d0 .end .inline _fmod,16 fmoved sp@+,fp0 | fp0 gets first argument fmodd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _remainder,16 fmoved sp@+,fp0 | fp0 gets first argument fremd sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _ldexp,12 fmoved sp@+,fp0 fscalel sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _scalbn,12 fmoved sp@+,fp0 fscalel sp@+,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _d_scalbn_,8 movl sp@+,a0 fmoved a0@,fp0 movl sp@+,a0 fscalel a0@,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _r_scalbn_,8 movl sp@+,a0 fmoves a0@,fp0 movl sp@+,a0 fscalel a0@,fp0 fmoves fp0,d0 .end .inline _d_fmod_,8 movl sp@+,a0 fmoved a0@,fp0 movl sp@+,a0 fmodd a0@,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _d_remainder_,8 movl sp@+,a0 fmoved a0@,fp0 movl sp@+,a0 fremd a0@,fp0 fmoved fp0,sp@- movl sp@+,d0 movl sp@+,d1 .end .inline _ir_nint_,4 movl sp@+,a0 movl a0@,d0 jsr Mnints .end .inline _r_acos_,4 movl sp@+,a0 facoss a0@,fp0 fmoves fp0,d0 .end .inline _r_aint_,4 movl sp@+,a0 fintrzs a0@,fp0 fmoves fp0,d0 .end .inline _r_anint_,4 movl sp@+,a0 movl a0@,d0 jsr Manints .end .inline _r_asin_,4 movl sp@+,a0 fasins a0@,fp0 fmoves fp0,d0 .end .inline _r_atan_,4 movl sp@+,a0 fatans a0@,fp0 fmoves fp0,d0 .end .inline _r_cos_,4 movl sp@+,a0 fcoss a0@,fp0 fmoves fp0,d0 .end .inline _r_cosh_,4 movl sp@+,a0 fcoshs a0@,fp0 fmoves fp0,d0 .end .inline _r_exp10_,4 movl sp@+,a0 ftentoxs a0@,fp0 fmoves fp0,d0 .end .inline _r_exp2_,4 movl sp@+,a0 ftwotoxs a0@,fp0 fmoves fp0,d0 .end .inline _r_exp_,4 movl sp@+,a0 fetoxs a0@,fp0 fmoves fp0,d0 .end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -