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