105a0b428SJohn Marino/* $OpenBSD: e_asin.S,v 1.3 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/* asin = atan (x / sqrt(1 - x^2)) */ 1205a0b428SJohn MarinoENTRY(asin) 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 fpatan 2105a0b428SJohn Marino XMM_DOUBLE_EPILOGUE 2205a0b428SJohn Marino ret 23*a27bb01fSJohn MarinoEND(asin) 24*a27bb01fSJohn Marino 25*a27bb01fSJohn Marino .section .note.GNU-stack,"",%progbits 26