diff options
| author | Tharo <17233964+Thar0@users.noreply.github.com> | 2022-06-03 21:33:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-03 16:33:18 -0400 |
| commit | 4775fd4a7ea8077f603900def093124f8aa7cec6 (patch) | |
| tree | 23d5e36dbe6283a58760136602706bdf68893e1b /src/code/fp.s | |
| parent | e989cb7ace48435ef1de1ea10f8e81c61a8a46e2 (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.s | 165 |
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) |
