Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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. /*
  14. Fast version of frexpf using Intel float instructions.
  15.  
  16.    float _f_frexpf (float x, int *exp);
  17.  
  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.
  21. */
  22.  
  23.         #include "i386mach.h"
  24.  
  25.         .global SYM (_f_frexpf)
  26.        SOTYPE_FUNCTION(_f_frexpf)
  27.  
  28. SYM (_f_frexpf):
  29.         pushl ebp
  30.         movl esp,ebp
  31.         flds 8(ebp)
  32.         movl 12(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.