summaryrefslogtreecommitdiff
path: root/src/code/fp.s
diff options
context:
space:
mode:
authorTharo <17233964+Thar0@users.noreply.github.com>2022-06-03 21:33:18 +0100
committerGitHub <noreply@github.com>2022-06-03 16:33:18 -0400
commit4775fd4a7ea8077f603900def093124f8aa7cec6 (patch)
tree23d5e36dbe6283a58760136602706bdf68893e1b /src/code/fp.s
parente989cb7ace48435ef1de1ea10f8e81c61a8a46e2 (diff)
Rename and move handwritten asm files (#1254)
* Rename handwritten asm files and move them to src * Fix progress.py * Remove handling for asm dir from Makefile
Diffstat (limited to 'src/code/fp.s')
-rw-r--r--src/code/fp.s165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/code/fp.s b/src/code/fp.s
new file mode 100644
index 000000000..431348d89
--- /dev/null
+++ b/src/code/fp.s
@@ -0,0 +1,165 @@
+#include "ultra64/asm.h"
+
+.set noreorder
+
+.section .data
+
+.balign 16
+
+DATA(qNaN0x3FFFFF)
+ .word 0x7FBFFFFF
+ENDDATA(qNaN0x3FFFFF)
+
+DATA(qNaN0x10000)
+ .word 0x7F810000
+ENDDATA(qNaN0x10000)
+
+DATA(sNaN0x3FFFFF)
+ .word 0x7FFFFFFF
+ENDDATA(sNaN0x3FFFFF)
+
+.section .text
+
+.balign 16
+
+LEAF(floorf)
+ floor.w.s $f12, $f12
+ jr $ra
+ cvt.s.w $f0, $f12
+END(floorf)
+
+LEAF(floor)
+ floor.w.d $f12, $f12
+ jr $ra
+ cvt.d.w $f0, $f12
+END(floor)
+
+LEAF(lfloorf)
+ floor.w.s $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(lfloorf)
+
+LEAF(lfloor)
+ floor.w.d $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(lfloor)
+
+LEAF(ceilf)
+ ceil.w.s $f12, $f12
+ jr $ra
+ cvt.s.w $f0, $f12
+END(ceilf)
+
+LEAF(ceil)
+ ceil.w.d $f12, $f12
+ jr $ra
+ cvt.d.w $f0, $f12
+END(ceil)
+
+LEAF(lceilf)
+ ceil.w.s $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(lceilf)
+
+LEAF(lceil)
+ ceil.w.d $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(lceil)
+
+LEAF(truncf)
+ trunc.w.s $f12, $f12
+ jr $ra
+ cvt.s.w $f0, $f12
+END(truncf)
+
+LEAF(trunc)
+ trunc.w.d $f12, $f12
+ jr $ra
+ cvt.d.w $f0, $f12
+END(trunc)
+
+LEAF(ltruncf)
+ trunc.w.s $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(ltruncf)
+
+LEAF(ltrunc)
+ trunc.w.d $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(ltrunc)
+
+LEAF(nearbyintf)
+ round.w.s $f12, $f12
+ jr $ra
+ cvt.s.w $f0, $f12
+END(nearbyintf)
+
+LEAF(nearbyint)
+ round.w.d $f12, $f12
+ jr $ra
+ cvt.d.w $f0, $f12
+END(nearbyint)
+
+LEAF(lnearbyintf)
+ round.w.s $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(lnearbyintf)
+
+LEAF(lnearbyint)
+ round.w.d $f4, $f12
+ mfc1 $v0, $f4
+ jr $ra
+ nop
+END(lnearbyint)
+
+LEAF(roundf)
+ li.s $f4, 0.5
+ nop
+ add.s $f0, $f12, $f4
+ floor.w.s $f0, $f0
+ jr $ra
+ cvt.s.w $f0, $f0
+END(roundf)
+
+LEAF(round)
+ li.d $f4, 0.5
+ nop
+ add.d $f0, $f12, $f4
+ floor.w.d $f0, $f0
+ jr $ra
+ cvt.d.w $f0, $f0
+END(round)
+
+LEAF(lroundf)
+ li.s $f4, 0.5
+ nop
+ add.s $f0, $f12, $f4
+ floor.w.s $f0, $f0
+ mfc1 $v0, $f0
+ jr $ra
+ nop
+END(lroundf)
+
+LEAF(lround)
+ li.d $f4, 0.5
+ nop
+ add.d $f0, $f12, $f4
+ floor.w.d $f0, $f0
+ mfc1 $v0, $f0
+ jr $ra
+ nop
+END(lround)