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/system_heap.o"
|
||||||
include "$(BUILD_DIR)/src/boot/libu64/padsetup.o"
|
include "$(BUILD_DIR)/src/boot/libu64/padsetup.o"
|
||||||
include "$(BUILD_DIR)/src/boot/libc64/math64.o"
|
include "$(BUILD_DIR)/src/boot/libc64/math64.o"
|
||||||
include "$(BUILD_DIR)/asm/boot/fp.text.o" // Part of libc64
|
include "$(BUILD_DIR)/src/boot/libc64/fp.o"
|
||||||
include "$(BUILD_DIR)/data/boot/fp.data.o"
|
|
||||||
include "$(BUILD_DIR)/src/boot/libc64/malloc.o"
|
include "$(BUILD_DIR)/src/boot/libc64/malloc.o"
|
||||||
include "$(BUILD_DIR)/src/boot/libc64/qrand.o"
|
include "$(BUILD_DIR)/src/boot/libc64/qrand.o"
|
||||||
include "$(BUILD_DIR)/src/boot/libc64/__osMalloc.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