0,0 → 1,48 |
/* |
* ==================================================== |
* Copyright (C) 1998, 2002 by Red Hat Inc. 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 |