1*c9945492SAndroid Build Coastguard Worker# use acos(x) = atan2(fabs(sqrt((1-x)*(1+x))), x) 2*c9945492SAndroid Build Coastguard Worker 3*c9945492SAndroid Build Coastguard Worker.global acos 4*c9945492SAndroid Build Coastguard Worker.type acos,@function 5*c9945492SAndroid Build Coastguard Workeracos: 6*c9945492SAndroid Build Coastguard Worker fldl 4(%esp) 7*c9945492SAndroid Build Coastguard Worker fld %st(0) 8*c9945492SAndroid Build Coastguard Worker fld1 9*c9945492SAndroid Build Coastguard Worker fsub %st(0),%st(1) 10*c9945492SAndroid Build Coastguard Worker fadd %st(2) 11*c9945492SAndroid Build Coastguard Worker fmulp 12*c9945492SAndroid Build Coastguard Worker fsqrt 13*c9945492SAndroid Build Coastguard Worker fabs # fix sign of zero (matters in downward rounding mode) 14*c9945492SAndroid Build Coastguard Worker fxch %st(1) 15*c9945492SAndroid Build Coastguard Worker fpatan 16*c9945492SAndroid Build Coastguard Worker fstpl 4(%esp) 17*c9945492SAndroid Build Coastguard Worker fldl 4(%esp) 18*c9945492SAndroid Build Coastguard Worker ret 19