.set noreorder .set noat .include "gtereg.h" .include "inline_s.h" .section .text .global VectorNormalS .type VectorNormalS, @function VectorNormalS: lw $t0, 0($a0) lw $t1, 4($a0) lw $t2, 8($a0) mtc2 $t0, C2_IR1 mtc2 $t1, C2_IR2 mtc2 $t2, C2_IR3 nSQR(0) mfc2 $t3, C2_MAC1 mfc2 $t4, C2_MAC2 mfc2 $t5, C2_MAC3 add $t3, $t4 add $v0, $t3, $t5 mtc2 $v0, C2_LZCS nop nop mfc2 $v1, C2_LZCR addiu $at, $0 , -2 and $v1, $at addiu $t6, $0 , 0x1f sub $t6, $v1 sra $t6, 1 addiu $t3, $v1, -24 bltz $t3, $value_neg nop b $value_pos sllv $t4, $v0, $t3 $value_neg: addiu $t3, $0 , 24 sub $t3, $v1 srav $t4, $v0, $t3 $value_pos: addi $t4, -64 sll $t4, 1 la $t5, _norm_table addu $t5, $t4 lh $t5, 0($t5) nop mtc2 $t5, C2_IR0 mtc2 $t0, C2_IR1 mtc2 $t1, C2_IR2 mtc2 $t2, C2_IR3 nGPF(0) mfc2 $t0, C2_MAC1 mfc2 $t1, C2_MAC2 mfc2 $t2, C2_MAC3 sra $t0, $t6 sra $t1, $t6 sra $t2, $t6 sh $t0, 0($a1) sh $t1, 2($a1) jr $ra sh $t2, 4($a1) .section .data _norm_table: .hword 0x1000, 0x0FE0, 0x0FC1, 0x0FA3, 0x0F85, 0x0F68, 0x0F4C, 0x0F30 .hword 0x0F15, 0x0EFB, 0x0EE1, 0x0EC7, 0x0EAE, 0x0E96, 0x0E7E, 0x0E66 .hword 0x0E4F, 0x0E38, 0x0E22, 0x0E0C, 0x0DF7, 0x0DE2, 0x0DCD, 0x0DB9 .hword 0x0DA5, 0x0D91, 0x0D7E, 0x0D6B, 0x0D58, 0x0D45, 0x0D33, 0x0D21 .hword 0x0D10, 0x0CFF, 0x0CEE, 0x0CDD, 0x0CCC, 0x0CBC, 0x0CAC, 0x0C9C .hword 0x0C8D, 0x0C7D, 0x0C6E, 0x0C5F, 0x0C51, 0x0C42, 0x0C34, 0x0C26 .hword 0x0C18, 0x0C0A, 0x0BFD, 0x0BEF, 0x0BE2, 0x0BD5, 0x0BC8, 0x0BBB .hword 0x0BAF, 0x0BA2, 0x0B96, 0x0B8A, 0x0B7E, 0x0B72, 0x0B67, 0x0B5B .hword 0x0B50, 0x0B45, 0x0B39, 0x0B2E, 0x0B24, 0x0B19, 0x0B0E, 0x0B04 .hword 0x0AF9, 0x0AEF, 0x0AE5, 0x0ADB, 0x0AD1, 0x0AC7, 0x0ABD, 0x0AB4 .hword 0x0AAA, 0x0AA1, 0x0A97, 0x0A8E, 0x0A85, 0x0A7C, 0x0A73, 0x0A6A .hword 0x0A61, 0x0A59, 0x0A50, 0x0A47, 0x0A3F, 0x0A37, 0x0A2E, 0x0A26 .hword 0x0A1E, 0x0A16, 0x0A0E, 0x0A06, 0x09FE, 0x09F6, 0x09EF, 0x09E7 .hword 0x09E0, 0x09D8, 0x09D1, 0x09C9, 0x09C2, 0x09BB, 0x09B4, 0x09AD .hword 0x09A5, 0x099E, 0x0998, 0x0991, 0x098A, 0x0983, 0x097C, 0x0976 .hword 0x096F, 0x0969, 0x0962, 0x095C, 0x0955, 0x094F, 0x0949, 0x0943 .hword 0x093C, 0x0936, 0x0930, 0x092A, 0x0924, 0x091E, 0x0918, 0x0912 .hword 0x090D, 0x0907, 0x0901, 0x08FB, 0x08F6, 0x08F0, 0x08EB, 0x08E5 .hword 0x08E0, 0x08DA, 0x08D5, 0x08CF, 0x08CA, 0x08C5, 0x08BF, 0x08BA .hword 0x08B5, 0x08B0, 0x08AB, 0x08A6, 0x08A1, 0x089C, 0x0897, 0x0892 .hword 0x088D, 0x0888, 0x0883, 0x087E, 0x087A, 0x0875, 0x0870, 0x086B .hword 0x0867, 0x0862, 0x085E, 0x0859, 0x0855, 0x0850, 0x084C, 0x0847 .hword 0x0843, 0x083E, 0x083A, 0x0836, 0x0831, 0x082D, 0x0829, 0x0824 .hword 0x0820, 0x081C, 0x0818, 0x0814, 0x0810, 0x080C, 0x0808, 0x0804