mirror of https://github.com/zeldaret/mm.git
				
				
				
			Handwritten asm: gu and mgu (#1816)
* Handwritten asm: gu and mgu * Remove some unnecessary pad_texts * Consistent add/and instructions
This commit is contained in:
		
							parent
							
								
									b1a50c2d1b
								
							
						
					
					
						commit
						086fc5635e
					
				
							
								
								
									
										22
									
								
								spec/spec
								
								
								
								
							
							
						
						
									
										22
									
								
								spec/spec
								
								
								
								
							|  | @ -60,7 +60,7 @@ beginseg | ||||||
|     include "$(BUILD_DIR)/src/libultra/voice/voicesetword.o" |     include "$(BUILD_DIR)/src/libultra/voice/voicesetword.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/vimodes/vimodentschpf1.o" |     include "$(BUILD_DIR)/src/libultra/vimodes/vimodentschpf1.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/vimodes/vimodepallan1.o" |     include "$(BUILD_DIR)/src/libultra/vimodes/vimodepallan1.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/guScale.text.o" |     include "$(BUILD_DIR)/src/libultra/mgu/scale.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/gu/sinf.o" |     include "$(BUILD_DIR)/src/libultra/gu/sinf.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/gu/sins.o" |     include "$(BUILD_DIR)/src/libultra/gu/sins.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/sptask.o" |     include "$(BUILD_DIR)/src/libultra/io/sptask.o" | ||||||
|  | @ -94,8 +94,7 @@ beginseg | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/sptaskyield.o" |     include "$(BUILD_DIR)/src/libultra/io/sptaskyield.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/pfsreadwritefile.o" |     include "$(BUILD_DIR)/src/libultra/io/pfsreadwritefile.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" |     include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" | ||||||
|     pad_text |     include "$(BUILD_DIR)/src/libultra/mgu/mtxidentf.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/guMtxIdentF.text.o" |  | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/visetmode.o" |     include "$(BUILD_DIR)/src/libultra/io/visetmode.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getconfig.o" |     include "$(BUILD_DIR)/src/libultra/os/getconfig.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/setconfig.o" |     include "$(BUILD_DIR)/src/libultra/os/setconfig.o" | ||||||
|  | @ -105,18 +104,16 @@ beginseg | ||||||
|     include "$(BUILD_DIR)/asm/boot/probetlb.text.o" |     include "$(BUILD_DIR)/asm/boot/probetlb.text.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/pimgr.o" |     include "$(BUILD_DIR)/src/libultra/io/pimgr.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/piacs.o" |     include "$(BUILD_DIR)/src/libultra/io/piacs.o" | ||||||
|     pad_text |  | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/devmgr.o" |     include "$(BUILD_DIR)/src/libultra/io/devmgr.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/pirawdma.o" |     include "$(BUILD_DIR)/src/libultra/io/pirawdma.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/vimodes/vimodentschpn1.o" |     include "$(BUILD_DIR)/src/libultra/vimodes/vimodentschpn1.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/contpfs.o" |     include "$(BUILD_DIR)/src/libultra/io/contpfs.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getcount.o" |     include "$(BUILD_DIR)/src/libultra/os/getcount.o" | ||||||
|     pad_text |     include "$(BUILD_DIR)/src/libultra/mgu/mtxl2f.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/guMtxL2F.text.o" |  | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getmemsize.o" |     include "$(BUILD_DIR)/src/libultra/os/getmemsize.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/pfssearchfile.o" |     include "$(BUILD_DIR)/src/libultra/io/pfssearchfile.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/seteventmesg.o" |     include "$(BUILD_DIR)/src/libultra/os/seteventmesg.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/sqrtf.text.o" |     include "$(BUILD_DIR)/src/libultra/gu/sqrtf.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/afterprenmi.o" |     include "$(BUILD_DIR)/src/libultra/os/afterprenmi.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/contquery.o" |     include "$(BUILD_DIR)/src/libultra/io/contquery.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/gu/lookathil.o" |     include "$(BUILD_DIR)/src/libultra/gu/lookathil.o" | ||||||
|  | @ -134,7 +131,7 @@ beginseg | ||||||
|     include "$(BUILD_DIR)/src/libultra/voice/voicecontread36.o" |     include "$(BUILD_DIR)/src/libultra/voice/voicecontread36.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/sp.o" |     include "$(BUILD_DIR)/src/libultra/io/sp.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/si.o" |     include "$(BUILD_DIR)/src/libultra/io/si.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/guMtxIdent.text.o" |     include "$(BUILD_DIR)/src/libultra/mgu/mtxident.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/jammesg.o" |     include "$(BUILD_DIR)/src/libultra/os/jammesg.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/setthreadpri.o" |     include "$(BUILD_DIR)/src/libultra/os/setthreadpri.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getthreadpri.o" |     include "$(BUILD_DIR)/src/libultra/os/getthreadpri.o" | ||||||
|  | @ -155,7 +152,7 @@ beginseg | ||||||
|     include "$(BUILD_DIR)/src/libultra/voice/voicecontwrite20.o" |     include "$(BUILD_DIR)/src/libultra/voice/voicecontwrite20.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/crc.o" |     include "$(BUILD_DIR)/src/libultra/io/crc.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getactivequeue.o" |     include "$(BUILD_DIR)/src/libultra/os/getactivequeue.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/normalize.text.o" |     include "$(BUILD_DIR)/src/libultra/mgu/normalize.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/setcompare.o" |     include "$(BUILD_DIR)/src/libultra/os/setcompare.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getcompare.o" |     include "$(BUILD_DIR)/src/libultra/os/getcompare.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/dpgetstat.o" |     include "$(BUILD_DIR)/src/libultra/io/dpgetstat.o" | ||||||
|  | @ -193,8 +190,7 @@ beginseg | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/epiwrite.o" |     include "$(BUILD_DIR)/src/libultra/io/epiwrite.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/maptlbrdb.text.o" |     include "$(BUILD_DIR)/asm/boot/maptlbrdb.text.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/yieldthread.o" |     include "$(BUILD_DIR)/src/libultra/os/yieldthread.o" | ||||||
|     pad_text |     include "$(BUILD_DIR)/src/libultra/mgu/translate.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/guTranslate.text.o" |  | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getcause.o" |     include "$(BUILD_DIR)/src/libultra/os/getcause.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/contramwrite.o" |     include "$(BUILD_DIR)/src/libultra/io/contramwrite.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/epirawwrite.o" |     include "$(BUILD_DIR)/src/libultra/io/epirawwrite.o" | ||||||
|  | @ -206,14 +202,12 @@ beginseg | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/sirawwrite.o" |     include "$(BUILD_DIR)/src/libultra/io/sirawwrite.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/spgetstat.o" |     include "$(BUILD_DIR)/src/libultra/io/spgetstat.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/spsetstat.o" |     include "$(BUILD_DIR)/src/libultra/io/spsetstat.o" | ||||||
|     pad_text |  | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/vimgr.o" |     include "$(BUILD_DIR)/src/libultra/io/vimgr.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/vigetcurrcontext.o" |     include "$(BUILD_DIR)/src/libultra/io/vigetcurrcontext.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/writebackdcacheall.text.o" |     include "$(BUILD_DIR)/asm/boot/writebackdcacheall.text.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/getcurrfaultthread.o" |     include "$(BUILD_DIR)/src/libultra/os/getcurrfaultthread.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/voice/voicemaskdictionary.o" |     include "$(BUILD_DIR)/src/libultra/voice/voicemaskdictionary.o" | ||||||
|     pad_text |     include "$(BUILD_DIR)/src/libultra/mgu/mtxf2l.o" | ||||||
|     include "$(BUILD_DIR)/asm/boot/guMtxF2L.text.o" |  | ||||||
|     include "$(BUILD_DIR)/src/libultra/os/startthread.o" |     include "$(BUILD_DIR)/src/libultra/os/startthread.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" |     include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" | ||||||
|     include "$(BUILD_DIR)/src/libultra/io/visetxscale.o" |     include "$(BUILD_DIR)/src/libultra/io/visetxscale.o" | ||||||
|  |  | ||||||
|  | @ -0,0 +1,9 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | 
 | ||||||
|  | LEAF(sqrtf) | ||||||
|  |     sqrt.s  fv0, fa0 | ||||||
|  |     j       ra | ||||||
|  | END(sqrtf) | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | .align 5
 | ||||||
|  | 
 | ||||||
|  | #define MTX_INTPART  0 | ||||||
|  | #define MTX_FRACPART 0x20 | ||||||
|  | 
 | ||||||
|  | LEAF(guMtxF2L) | ||||||
|  |     li.s    fv0, 65536.0 | ||||||
|  |     li      t9, 0xFFFF0000 | ||||||
|  |     addu    t8, a1, MTX_FRACPART | ||||||
|  | 1: | ||||||
|  |     lwc1    ft0, 0(a0) | ||||||
|  |     mul.s   ft1, ft0, fv0 | ||||||
|  |     trunc.w.s ft2, ft1 | ||||||
|  |     lwc1    ft3, 4(a0) | ||||||
|  |     mul.s   ft4, ft3, fv0 | ||||||
|  |     trunc.w.s ft5, ft4 | ||||||
|  |     mfc1    t0, ft2 | ||||||
|  |     mfc1    t1, ft5 | ||||||
|  |     and     t2, t0, t9 | ||||||
|  |     srl     t3, t1, 0x10 | ||||||
|  |     or      t4, t2, t3 | ||||||
|  |     sw      t4, (MTX_INTPART)(a1) | ||||||
|  |     sll     t5, t0, 0x10 | ||||||
|  |     and     t6, t1, 0xFFFF | ||||||
|  |     or      t7, t5, t6 | ||||||
|  |     sw      t7, (MTX_FRACPART)(a1) | ||||||
|  |     addu    a1, a1, 4 | ||||||
|  |     addu    a0, a0, 8 | ||||||
|  |     bne     a1, t8, 1b | ||||||
|  | 
 | ||||||
|  |     jr      ra | ||||||
|  | END(guMtxF2L) | ||||||
|  | @ -0,0 +1,27 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | .align 5
 | ||||||
|  | 
 | ||||||
|  | LEAF(guMtxIdent) | ||||||
|  |     add     t0, zero, 1 | ||||||
|  |     sll     t1, t0, 0x10 | ||||||
|  |     sw      t1,   0x00(a0) | ||||||
|  |     sw      zero, 0x04(a0) | ||||||
|  |     sw      t0,   0x08(a0) | ||||||
|  |     sw      zero, 0x0C(a0) | ||||||
|  |     sw      zero, 0x10(a0) | ||||||
|  |     sw      t1,   0x14(a0) | ||||||
|  |     sw      zero, 0x18(a0) | ||||||
|  |     sw      t0,   0x1C(a0) | ||||||
|  |     sw      zero, 0x20(a0) | ||||||
|  |     sw      zero, 0x24(a0) | ||||||
|  |     sw      zero, 0x28(a0) | ||||||
|  |     sw      zero, 0x2c(a0) | ||||||
|  |     sw      zero, 0x30(a0) | ||||||
|  |     sw      zero, 0x34(a0) | ||||||
|  |     sw      zero, 0x38(a0) | ||||||
|  |     sw      zero, 0x3C(a0) | ||||||
|  |     jr      ra | ||||||
|  | END(guMtxIdent) | ||||||
|  | @ -0,0 +1,26 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | .align 5
 | ||||||
|  | 
 | ||||||
|  | LEAF(guMtxIdentF) | ||||||
|  |     li.s    t0,   1.0 | ||||||
|  |     sw      t0,   0x00(a0) | ||||||
|  |     sw      zero, 0x04(a0) | ||||||
|  |     sw      zero, 0x08(a0) | ||||||
|  |     sw      zero, 0x0C(a0) | ||||||
|  |     sw      zero, 0x10(a0) | ||||||
|  |     sw      t0,   0x14(a0) | ||||||
|  |     sw      zero, 0x18(a0) | ||||||
|  |     sw      zero, 0x1C(a0) | ||||||
|  |     sw      zero, 0x20(a0) | ||||||
|  |     sw      zero, 0x24(a0) | ||||||
|  |     sw      t0,   0x28(a0) | ||||||
|  |     sw      zero, 0x2C(a0) | ||||||
|  |     sw      zero, 0x30(a0) | ||||||
|  |     sw      zero, 0x34(a0) | ||||||
|  |     sw      zero, 0x38(a0) | ||||||
|  |     sw      t0,   0x3C(a0) | ||||||
|  |     jr      ra | ||||||
|  | END(guMtxIdentF) | ||||||
|  | @ -0,0 +1,43 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | .align 5
 | ||||||
|  | 
 | ||||||
|  | #define MTX_INTPART  0 | ||||||
|  | #define MTX_FRACPART 0x20 | ||||||
|  | 
 | ||||||
|  | #define FIXTOF 0.0000152587890625 /* 1.0f / 65536.0f */ | ||||||
|  | 
 | ||||||
|  | LEAF(guMtxL2F) | ||||||
|  |     li.s    fv0, FIXTOF | ||||||
|  |     li      t9, 0xFFFF0000 | ||||||
|  |     addu    t8, a1, MTX_FRACPART | ||||||
|  | 1: | ||||||
|  |     lw      t0, MTX_INTPART(a1) | ||||||
|  |     lw      t1, MTX_FRACPART(a1) | ||||||
|  | 
 | ||||||
|  |     and     t2, t0, t9 | ||||||
|  |     srl     t3, t1, 0x10 | ||||||
|  |     or      t4, t2, t3 | ||||||
|  | 
 | ||||||
|  |     sll     t5, t0, 0x10 | ||||||
|  |     and     t6, t1, 0xFFFF | ||||||
|  |     or      t7, t5, t6 | ||||||
|  | 
 | ||||||
|  |     mtc1    t4, ft0 | ||||||
|  |     cvt.s.w ft1, ft0 | ||||||
|  |     mul.s   ft2, ft1, fv0 | ||||||
|  | 
 | ||||||
|  |     mtc1    t7, ft3 | ||||||
|  |     cvt.s.w ft4, ft3 | ||||||
|  |     mul.s   ft5, ft4, fv0 | ||||||
|  | 
 | ||||||
|  |     swc1    ft2, 0(a0) | ||||||
|  |     swc1    ft5, 4(a0) | ||||||
|  |     addu    a0, a0, 8 | ||||||
|  |     addu    a1, a1, 4 | ||||||
|  |     bne     a1, t8, 1b | ||||||
|  | 
 | ||||||
|  |     jr      ra | ||||||
|  | END(guMtxL2F) | ||||||
|  | @ -0,0 +1,33 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | .align 5
 | ||||||
|  | 
 | ||||||
|  | LEAF(guNormalize) | ||||||
|  |     lwc1    ft0, (a0) | ||||||
|  |     lwc1    ft1, (a1) | ||||||
|  |     lwc1    ft2, (a2) | ||||||
|  | .set noreorder
 | ||||||
|  |     mul.s   ft3, ft0, ft0 | ||||||
|  |     li.s    t0, 1.0 | ||||||
|  |     mul.s   ft4, ft1, ft1 | ||||||
|  |     add.s   ft5, ft3, ft4 | ||||||
|  |     mul.s   ft4, ft2, ft2 | ||||||
|  | .set reorder
 | ||||||
|  |     add.s   ft3, ft4, ft5 | ||||||
|  |     mtc1    t0, ft5 | ||||||
|  |     sqrt.s  ft4, ft3 | ||||||
|  |     div.s   ft3, ft5, ft4 | ||||||
|  | .set noreorder
 | ||||||
|  |     mul.s   ft4, ft0, ft3 | ||||||
|  |     nop | ||||||
|  |     mul.s   ft5, ft1, ft3 | ||||||
|  |     nop | ||||||
|  |     mul.s   ft0, ft2, ft3 | ||||||
|  | .set reorder
 | ||||||
|  |     swc1    ft4, (a0) | ||||||
|  |     swc1    ft5, (a1) | ||||||
|  |     swc1    ft0, (a2) | ||||||
|  |     jr      ra | ||||||
|  | END(guNormalize) | ||||||
|  | @ -0,0 +1,56 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | .align 5
 | ||||||
|  | 
 | ||||||
|  | LEAF(guScale) | ||||||
|  |     li.s    ft0, 65536.0 | ||||||
|  | 
 | ||||||
|  |     mtc1    a1, ft1 | ||||||
|  |     mul.s   ft2, ft1, ft0 | ||||||
|  |     trunc.w.s ft3, ft2 | ||||||
|  |     mfc1    t1, ft3 | ||||||
|  | 
 | ||||||
|  |     srl     t2, t1, 0x10 | ||||||
|  |     sll     t0, t2, 0x10 | ||||||
|  |     sw      t0, 0x00(a0) | ||||||
|  |     sll     t2, t1, 0x10 | ||||||
|  |     sw      t2, 0x20(a0) | ||||||
|  | 
 | ||||||
|  |     mtc1    a2, ft1 | ||||||
|  |     mul.s   ft2, ft1, ft0 | ||||||
|  |     trunc.w.s ft3, ft2 | ||||||
|  |     mfc1    t1, ft3 | ||||||
|  | 
 | ||||||
|  |     srl     t0, t1, 0x10 | ||||||
|  |     sw      t0, 0x08(a0) | ||||||
|  |     and     t2, t1, 0xFFFF | ||||||
|  |     sw      t2, 0x28(a0) | ||||||
|  | 
 | ||||||
|  |     mtc1    a3, ft1 | ||||||
|  |     mul.s   ft2, ft1, ft0 | ||||||
|  |     trunc.w.s ft3, ft2 | ||||||
|  |     mfc1    t1, ft3 | ||||||
|  | 
 | ||||||
|  |     srl     t2, t1, 0x10 | ||||||
|  |     sll     t0, t2, 0x10 | ||||||
|  |     sw      t0, 0x14(a0) | ||||||
|  |     sll     t2, t1, 0x10 | ||||||
|  |     sw      t2, 0x34(a0) | ||||||
|  | 
 | ||||||
|  |     li      t0, 1 | ||||||
|  |     sw      t0, 0x1C(a0) | ||||||
|  | 
 | ||||||
|  |     sw      zero, 0x04(a0) | ||||||
|  |     sw      zero, 0x0C(a0) | ||||||
|  |     sw      zero, 0x10(a0) | ||||||
|  |     sw      zero, 0x18(a0) | ||||||
|  |     sw      zero, 0x24(a0) | ||||||
|  |     sw      zero, 0x2C(a0) | ||||||
|  |     sw      zero, 0x30(a0) | ||||||
|  |     sw      zero, 0x38(a0) | ||||||
|  |     sw      zero, 0x3C(a0) | ||||||
|  | 
 | ||||||
|  |     jr      ra | ||||||
|  | END(guScale) | ||||||
|  | @ -0,0 +1,68 @@ | ||||||
|  | #include "PR/asm.h" | ||||||
|  | #include "PR/regdef.h" | ||||||
|  | 
 | ||||||
|  | .text | ||||||
|  | .align 5
 | ||||||
|  | 
 | ||||||
|  | LEAF(guTranslate) | ||||||
|  |     li.s    ft0, 65536.0 | ||||||
|  | 
 | ||||||
|  |     mtc1    a1, ft1 | ||||||
|  |     mul.s   ft2, ft1, ft0 | ||||||
|  |     trunc.w.s ft3, ft2 | ||||||
|  |     mfc1    t1, ft3 | ||||||
|  | 
 | ||||||
|  |     mtc1    a2, ft1 | ||||||
|  |     mul.s   ft2, ft1, ft0 | ||||||
|  |     trunc.w.s ft3, ft2 | ||||||
|  |     mfc1    t3, ft3 | ||||||
|  | 
 | ||||||
|  |     srl     t2, t1, 0x10 | ||||||
|  |     sll     t0, t2, 0x10 | ||||||
|  |     srl     t2, t3, 0x10 | ||||||
|  |     or      t0, t0, t2 | ||||||
|  |     sw      t0, 0x18(a0) | ||||||
|  | 
 | ||||||
|  |     sll     t0, t1, 0x10 | ||||||
|  |     sll     t2, t3, 0x10 | ||||||
|  |     srl     t2, t2, 0x10 | ||||||
|  |     or      t0, t0, t2 | ||||||
|  |     sw      t0, 0x38(a0) | ||||||
|  | 
 | ||||||
|  |     mtc1    a3, ft1 | ||||||
|  |     mul.s   ft2, ft1, ft0 | ||||||
|  |     trunc.w.s ft3, ft2 | ||||||
|  |     mfc1    t1, ft3 | ||||||
|  | 
 | ||||||
|  |     srl     t2, t1, 0x10 | ||||||
|  |     sll     t0, t2, 0x10 | ||||||
|  |     addu    t0, t0, 1 | ||||||
|  |     sw      t0, 0x1C(a0) | ||||||
|  | 
 | ||||||
|  |     sll     t2, t1, 0x10 | ||||||
|  |     sw      t2, 0x3C(a0) | ||||||
|  | 
 | ||||||
|  |     sw      zero, 0x00(a0) | ||||||
|  |     sw      zero, 0x04(a0) | ||||||
|  |     sw      zero, 0x08(a0) | ||||||
|  |     sw      zero, 0x0C(a0) | ||||||
|  |     sw      zero, 0x10(a0) | ||||||
|  |     sw      zero, 0x14(a0) | ||||||
|  |     sw      zero, 0x20(a0) | ||||||
|  |     sw      zero, 0x24(a0) | ||||||
|  |     sw      zero, 0x28(a0) | ||||||
|  |     sw      zero, 0x2C(a0) | ||||||
|  |     sw      zero, 0x30(a0) | ||||||
|  |     sw      zero, 0x34(a0) | ||||||
|  | 
 | ||||||
|  |     lui     t0, (0x00010000 >> 16) | ||||||
|  |     ori     t0, (0x00010000 & 0xFFFF) | ||||||
|  |     sw      t0, (a0) | ||||||
|  |     sw      t0, 0x14(a0) | ||||||
|  | 
 | ||||||
|  |     lui     t0, (0x00000001 >> 16) | ||||||
|  |     ori     t0, (0x00000001 & 0xFFFF) | ||||||
|  |     sw      t0, 8(a0) | ||||||
|  | 
 | ||||||
|  |     jr      ra | ||||||
|  | END(guTranslate) | ||||||
		Loading…
	
		Reference in New Issue
	
	 Tharo
						Tharo