105a0b428SJohn Marino/* $OpenBSD: e_acos.S,v 1.4 2008/09/07 20:36:08 martynas Exp $ */ 205a0b428SJohn Marino/* 305a0b428SJohn Marino * Written by J.T. Conklin <jtc@NetBSD.org>. 405a0b428SJohn Marino * Public domain. 505a0b428SJohn Marino */ 605a0b428SJohn Marino 705a0b428SJohn Marino#include <machine/asm.h> 805a0b428SJohn Marino 905a0b428SJohn Marino#include "abi.h" 1005a0b428SJohn Marino 1105a0b428SJohn Marino/* acos = atan (sqrt(1 - x^2) / x) */ 1205a0b428SJohn MarinoENTRY(acos) 1305a0b428SJohn Marino XMM_ONE_ARG_DOUBLE_PROLOGUE 1405a0b428SJohn Marino fldl ARG_DOUBLE_ONE /* x */ 1505a0b428SJohn Marino fld %st(0) 1605a0b428SJohn Marino fmul %st(0) /* x^2 */ 1705a0b428SJohn Marino fld1 1805a0b428SJohn Marino fsubp /* 1 - x^2 */ 1905a0b428SJohn Marino fsqrt /* sqrt (1 - x^2) */ 2005a0b428SJohn Marino fxch %st(1) 2105a0b428SJohn Marino fpatan 2205a0b428SJohn Marino XMM_DOUBLE_EPILOGUE 2305a0b428SJohn Marino ret 24*a27bb01fSJohn MarinoEND(acos) 25*a27bb01fSJohn Marino 26*a27bb01fSJohn Marino .section .note.GNU-stack,"",%progbits 27