fixes for host gcc 4.6.1
[zpugcc/jano.git] / toolchain / gcc / newlib / libc / machine / i386 / f_frexp.S
blobfebe115bc371bbb797b7534ed9e4761c5ed19972
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  */
11 #if !defined(_SOFT_FLOAT)
14 Fast version of frexp using Intel float instructions.
16    double _f_frexp (double x, int *exp);
18 Function splits x into y * 2 ** z.  It then
19 returns the value of y and updates *exp with z.
20 There is no error checking or setting of errno.
23         #include "i386mach.h"
25         .global SYM (_f_frexp)
26        SOTYPE_FUNCTION(_f_frexp)
28 SYM (_f_frexp):
29         pushl ebp
30         movl esp,ebp
31         fldl 8(ebp)
32         movl 16(ebp),eax
34         fxtract
35         fld1
36         fchs
37         fxch
38         fscale
39         fstp st1
40         fxch
41         fld1
42         faddp
43         fistpl 0(eax)
45         leave
46         ret
48 #endif