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#include <picolibc.h>
12
13#if !defined(_SOFT_FLOAT)
14
15/*
16Fast version of frexpf using Intel float instructions.
17
18   float _f_frexpf (float x, int *exp);
19
20Function splits x into y * 2 ** z.  It then
21returns the value of y and updates *exp with z.
22There is no error checking or setting of errno.
23*/
24
25	#include "i386mach.h"
26
27	.global SYM (_f_frexpf)
28       SOTYPE_FUNCTION(_f_frexpf)
29
30SYM (_f_frexpf):
31	pushl ebp
32	movl esp,ebp
33	flds 8(ebp)
34	movl 12(ebp),eax
35
36	fxtract
37	fld1
38	fchs
39	fxch
40	fscale
41	fstp st1
42	fxch
43	fld1
44	faddp
45	fistpl 0(eax)
46
47	leave
48	ret
49
50#endif
51