1234567891011121314151617181920212223242526272829303132333435363738 |
- #
- ! $Source$
- ! $State$
- ! $Revision$
- #include "powerpc.h"
-
- .sect .text
- ! Multiplies two floats, and returns the fraction and integer.
- .define .fif8
- .fif8:
- lfd f0, 8(sp)
- lfd f1, 0(sp)
- fmul f0, f0, f1
- fabs f1, f0 ! f0 = result
-
- ! The following chunk does f1 = floor(f1). See page 158 of the book.
-
- mtfsfi cr7, 3 ! set rounding mode to -inf.
- mtfsb0 23
- fctid f2, f1
- fcfid f2, f2
- mcrfs cr7, cr5
- bc IFFALSE, 31, toobig
- fmr f1, f2
- toobig:
- fabs f2, f1 ! f2 = fabs(f1)
- fsub f2, f2, f1
- stfd f2, 8(sp)
-
- fneg f2, f1
- fsel f2, f0, f1, f2
- stfd f2, 0(sp)
-
- bclr ALWAYS, 0, 0
|