1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-20 22:11:16 +00:00

Improve the state of handwritten assembly files (#865)

* Format all handwritten asm and document some

* Use c preprocessor for constants

* Fix

* Fix PI_STATUS_ERROR, some label improvements

* Avoid hi/lo for constants

* Some more comments

* Properly mark functions as functions and their sizes

* Fix merge

* Improvements

* Review suggestions, rework procedure start/end macros to be more like libreultra

* Move IPL3 symbol definitions into ipl3.s

* Fix undefined_syms, add include and language guards to asm.h and fix the comment in gbi.h

* Consistent hex capitalization, add some MIPS builtin defines to CC_CHECK to behave properly

* Add -no-pad-sections assembler option and clean up alignment in gu files and bzero

* Further suggestions and improvements

* Matrix conversion function clarifications

* Fix passing AVOID_UB to gcc

* Suggestions

* Suggestions, global interrupt mask improvements

* Further suggestions, interrupt mask comments

* Comments fixes, rdb.h

* Switch from # comments to // comments, remove unnecesary .set gp=64 directives

* Further review suggestions

* Missed one
This commit is contained in:
Tharo 2022-05-01 00:03:22 +01:00 committed by GitHub
parent b9fded7b4e
commit 7334ffa373
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
62 changed files with 2758 additions and 2083 deletions

125
asm/fp.s
View file

@ -1,138 +1,165 @@
.include "macro.inc"
#include "ultra64/asm.h"
.set noreorder
.section .data
.section .data
glabel qNaN0x3FFFFF
.word 0x7FBFFFFF
.balign 16
glabel qNaN0x10000
.word 0x7F810000
DATA(qNaN0x3FFFFF)
.word 0x7FBFFFFF
ENDDATA(qNaN0x3FFFFF)
glabel sNaN0x3FFFFF
.word 0x7FFFFFFF
DATA(qNaN0x10000)
.word 0x7F810000
ENDDATA(qNaN0x10000)
DATA(sNaN0x3FFFFF)
.word 0x7FFFFFFF
ENDDATA(sNaN0x3FFFFF)
.section .text
.section .text
glabel floorf
.balign 16
LEAF(floorf)
floor.w.s $f12, $f12
cvt.s.w $f0, $f12
jr $ra
cvt.s.w $f0, $f12
END(floorf)
glabel floor
LEAF(floor)
floor.w.d $f12, $f12
cvt.d.w $f0, $f12
jr $ra
cvt.d.w $f0, $f12
END(floor)
glabel lfloorf
LEAF(lfloorf)
floor.w.s $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(lfloorf)
glabel lfloor
LEAF(lfloor)
floor.w.d $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(lfloor)
glabel ceilf
LEAF(ceilf)
ceil.w.s $f12, $f12
cvt.s.w $f0, $f12
jr $ra
cvt.s.w $f0, $f12
END(ceilf)
glabel ceil
LEAF(ceil)
ceil.w.d $f12, $f12
cvt.d.w $f0, $f12
jr $ra
cvt.d.w $f0, $f12
END(ceil)
glabel lceilf
LEAF(lceilf)
ceil.w.s $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(lceilf)
glabel lceil
LEAF(lceil)
ceil.w.d $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(lceil)
glabel truncf
LEAF(truncf)
trunc.w.s $f12, $f12
cvt.s.w $f0, $f12
jr $ra
cvt.s.w $f0, $f12
END(truncf)
glabel trunc
LEAF(trunc)
trunc.w.d $f12, $f12
cvt.d.w $f0, $f12
jr $ra
cvt.d.w $f0, $f12
END(trunc)
glabel ltruncf
LEAF(ltruncf)
trunc.w.s $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(ltruncf)
glabel ltrunc
LEAF(ltrunc)
trunc.w.d $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(ltrunc)
glabel nearbyintf
LEAF(nearbyintf)
round.w.s $f12, $f12
cvt.s.w $f0, $f12
jr $ra
cvt.s.w $f0, $f12
END(nearbyintf)
glabel nearbyint
LEAF(nearbyint)
round.w.d $f12, $f12
cvt.d.w $f0, $f12
jr $ra
cvt.d.w $f0, $f12
END(nearbyint)
glabel lnearbyintf
LEAF(lnearbyintf)
round.w.s $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(lnearbyintf)
glabel lnearbyint
LEAF(lnearbyint)
round.w.d $f4, $f12
mfc1 $v0, $f4
nop
jr $ra
nop
END(lnearbyint)
glabel roundf
LEAF(roundf)
li.s $f4, 0.5
nop
add.s $f0, $f12, $f4
floor.w.s $f0, $f0
cvt.s.w $f0, $f0
jr $ra
cvt.s.w $f0, $f0
END(roundf)
glabel round
LEAF(round)
li.d $f4, 0.5
nop
add.d $f0, $f12, $f4
floor.w.d $f0, $f0
cvt.d.w $f0, $f0
jr $ra
cvt.d.w $f0, $f0
END(round)
glabel lroundf
LEAF(lroundf)
li.s $f4, 0.5
nop
add.s $f0, $f12, $f4
floor.w.s $f0, $f0
mfc1 $v0, $f0
nop
jr $ra
nop
END(lroundf)
glabel lround
LEAF(lround)
li.d $f4, 0.5
nop
add.d $f0, $f12, $f4
floor.w.d $f0, $f0
mfc1 $v0, $f0
nop
jr $ra
nop
END(lround)