1/* 2 * ==================================================== 3 * Copyright (C) 1998, 2002 by Red Hat Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and distribute this 6 * software is freely granted, provided that this notice 7 * is preserved. 8 * ==================================================== 9 */ 10 11#if !defined(_SOFT_FLOAT) 12 13/* 14Fast version of frexp using Intel float instructions. 15 16 double _f_frexp (double x, int *exp); 17 18Function splits x into y * 2 ** z. It then 19returns the value of y and updates *exp with z. 20There is no error checking or setting of errno. 21*/ 22 23 #include "i386mach.h" 24 25 .global SYM (_f_frexp) 26 SOTYPE_FUNCTION(_f_frexp) 27 28SYM (_f_frexp): 29 pushl ebp 30 movl esp,ebp 31 fldl 8(ebp) 32 movl 16(ebp),eax 33 34 fxtract 35 fld1 36 fchs 37 fxch 38 fscale 39 fstp st1 40 fxch 41 fld1 42 faddp 43 fistpl 0(eax) 44 45 leave 46 ret 47 48#endif 49