mirror of https://github.com/zeldaret/mm.git
Handwritten asm: fp (#1818)
This commit is contained in:
parent
9612575930
commit
1ca6ca804d
|
|
@ -42,8 +42,7 @@ beginseg
|
|||
include "$(BUILD_DIR)/src/boot/libu64/system_heap.o"
|
||||
include "$(BUILD_DIR)/src/boot/libu64/padsetup.o"
|
||||
include "$(BUILD_DIR)/src/boot/libc64/math64.o"
|
||||
include "$(BUILD_DIR)/asm/boot/fp.text.o" // Part of libc64
|
||||
include "$(BUILD_DIR)/data/boot/fp.data.o"
|
||||
include "$(BUILD_DIR)/src/boot/libc64/fp.o"
|
||||
include "$(BUILD_DIR)/src/boot/libc64/malloc.o"
|
||||
include "$(BUILD_DIR)/src/boot/libc64/qrand.o"
|
||||
include "$(BUILD_DIR)/src/boot/libc64/__osMalloc.o"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,162 @@
|
|||
#include "PR/asm.h"
|
||||
#include "PR/regdef.h"
|
||||
|
||||
.data
|
||||
|
||||
DATA(gPositiveInfinity)
|
||||
.word 0x7F800000
|
||||
ENDDATA(gPositiveInfinity)
|
||||
|
||||
DATA(gNegativeInfinity)
|
||||
.word 0xFF800000
|
||||
ENDDATA(gNegativeInfinity)
|
||||
|
||||
DATA(gPositiveZero)
|
||||
.word 0x00000000
|
||||
ENDDATA(gPositiveZero)
|
||||
|
||||
DATA(gNegativeZero)
|
||||
.word 0x80000000
|
||||
ENDDATA(gNegativeZero)
|
||||
|
||||
DATA(qNaN0x3FFFFF)
|
||||
.word 0x7FBFFFFF
|
||||
ENDDATA(qNaN0x3FFFFF)
|
||||
|
||||
DATA(qNaN0x10000)
|
||||
.word 0x7F810000
|
||||
ENDDATA(qNaN0x10000)
|
||||
|
||||
DATA(sNaN0x3FFFFF)
|
||||
.word 0x7FFFFFFF
|
||||
ENDDATA(sNaN0x3FFFFF)
|
||||
|
||||
.text
|
||||
|
||||
LEAF(floorf)
|
||||
floor.w.s fa0, fa0
|
||||
cvt.s.w fv0, fa0
|
||||
jr ra
|
||||
END(floorf)
|
||||
|
||||
LEAF(floor)
|
||||
floor.w.d fa0, fa0
|
||||
cvt.d.w fv0, fa0
|
||||
jr ra
|
||||
END(floor)
|
||||
|
||||
LEAF(lfloorf)
|
||||
floor.w.s ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(lfloorf)
|
||||
|
||||
LEAF(lfloor)
|
||||
floor.w.d ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(lfloor)
|
||||
|
||||
LEAF(ceilf)
|
||||
ceil.w.s fa0, fa0
|
||||
cvt.s.w fv0, fa0
|
||||
jr ra
|
||||
END(ceilf)
|
||||
|
||||
LEAF(ceil)
|
||||
ceil.w.d fa0, fa0
|
||||
cvt.d.w fv0, fa0
|
||||
jr ra
|
||||
END(ceil)
|
||||
|
||||
LEAF(lceilf)
|
||||
ceil.w.s ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(lceilf)
|
||||
|
||||
LEAF(lceil)
|
||||
ceil.w.d ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(lceil)
|
||||
|
||||
LEAF(truncf)
|
||||
trunc.w.s fa0, fa0
|
||||
cvt.s.w fv0, fa0
|
||||
jr ra
|
||||
END(truncf)
|
||||
|
||||
LEAF(trunc)
|
||||
trunc.w.d fa0, fa0
|
||||
cvt.d.w fv0, fa0
|
||||
jr ra
|
||||
END(trunc)
|
||||
|
||||
LEAF(ltruncf)
|
||||
trunc.w.s ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(ltruncf)
|
||||
|
||||
LEAF(ltrunc)
|
||||
trunc.w.d ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(ltrunc)
|
||||
|
||||
LEAF(nearbyintf)
|
||||
round.w.s fa0, fa0
|
||||
cvt.s.w fv0, fa0
|
||||
jr ra
|
||||
END(nearbyintf)
|
||||
|
||||
LEAF(nearbyint)
|
||||
round.w.d fa0, fa0
|
||||
cvt.d.w fv0, fa0
|
||||
jr ra
|
||||
END(nearbyint)
|
||||
|
||||
LEAF(lnearbyintf)
|
||||
round.w.s ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(lnearbyintf)
|
||||
|
||||
LEAF(lnearbyint)
|
||||
round.w.d ft0, fa0
|
||||
mfc1 v0, ft0
|
||||
jr ra
|
||||
END(lnearbyint)
|
||||
|
||||
LEAF(roundf)
|
||||
li.s ft0, 0.5
|
||||
add.s fv0, fa0, ft0
|
||||
floor.w.s fv0, fv0
|
||||
cvt.s.w fv0, fv0
|
||||
jr ra
|
||||
END(roundf)
|
||||
|
||||
LEAF(round)
|
||||
li.d ft0, 0.5
|
||||
add.d fv0, fa0, ft0
|
||||
floor.w.d fv0, fv0
|
||||
cvt.d.w fv0, fv0
|
||||
jr ra
|
||||
END(round)
|
||||
|
||||
LEAF(lroundf)
|
||||
li.s ft0, 0.5
|
||||
add.s fv0, fa0, ft0
|
||||
floor.w.s fv0, fv0
|
||||
mfc1 v0, fv0
|
||||
jr ra
|
||||
END(lroundf)
|
||||
|
||||
LEAF(lround)
|
||||
li.d ft0, 0.5
|
||||
add.d fv0, fa0, ft0
|
||||
floor.w.d fv0, fv0
|
||||
mfc1 v0, fv0
|
||||
jr ra
|
||||
END(lround)
|
||||
Loading…
Reference in New Issue