bzero.s (2242B)
1 .set noreorder // don't insert nops after branches 2 3 #include "macros.inc" 4 5 // this file is probably handwritten 6 7 //TODO There seem to be patterns in these iQue diffs. Can we figure out what's causing them? Could this have been written in C? See also bcopy.s. 8 9 .section .text, "ax" 10 11 glabel bzero 12 13 #ifdef VERSION_CN 14 negu $v1, $a0 15 blt $a1, 0xc, .L80303790 16 nop 17 andi $v1, $v1, 3 18 beqz $v1, .L80303734 19 subu $a1, $a1, $v1 20 swl $zero, ($a0) 21 addu $a0, $a0, $v1 22 .L80303734: 23 and $a3, $a1, -32 24 beqz $a3, .L80303770 25 subu $a1, $a1, $a3 26 addu $a3, $a3, $a0 27 .L80303748: 28 sw $zero, ($a0) 29 sw $zero, 4($a0) 30 sw $zero, 8($a0) 31 sw $zero, 0xc($a0) 32 addiu $a0, $a0, 0x20 33 sw $zero, -0x10($a0) 34 sw $zero, -0xc($a0) 35 sw $zero, -8($a0) 36 bne $a0, $a3, .L80303748 37 sw $zero, -4($a0) 38 .L80303770: 39 and $a3, $a1, -4 40 beqz $a3, .L80303790 41 subu $a1, $a1, $a3 42 addu $a3, $a3, $a0 43 .L80303784: 44 addiu $a0, $a0, 4 45 bne $a0, $a3, .L80303784 46 sw $zero, -4($a0) 47 .L80303790: 48 blez $a1, .L803037A8 49 nop 50 addu $a1, $a1, $a0 51 .L8030379C: 52 addiu $a0, $a0, 1 53 bne $a0, $a1, .L8030379C 54 sb $zero, -1($a0) 55 .L803037A8: 56 jr $ra 57 nop 58 #else 59 blt $a1, 0xc, .L803236BC 60 negu $v1, $a0 61 andi $v1, $v1, 3 62 beqz $v1, .L80323660 63 subu $a1, $a1, $v1 64 swl $zero, ($a0) 65 addu $a0, $a0, $v1 66 .L80323660: 67 and $a3, $a1, -32 68 beqz $a3, .L8032369C 69 subu $a1, $a1, $a3 70 addu $a3, $a3, $a0 71 .L80323674: 72 addiu $a0, $a0, 0x20 73 sw $zero, -0x20($a0) 74 sw $zero, -0x1c($a0) 75 sw $zero, -0x18($a0) 76 sw $zero, -0x14($a0) 77 sw $zero, -0x10($a0) 78 sw $zero, -0xc($a0) 79 sw $zero, -8($a0) 80 bne $a0, $a3, .L80323674 81 sw $zero, -4($a0) 82 .L8032369C: 83 and $a3, $a1, -4 84 beqz $a3, .L803236BC 85 subu $a1, $a1, $a3 86 addu $a3, $a3, $a0 87 .L803236B0: 88 addiu $a0, $a0, 4 89 bne $a0, $a3, .L803236B0 90 sw $zero, -4($a0) 91 .L803236BC: 92 blez $a1, .L803236D4 93 nop 94 addu $a1, $a1, $a0 95 .L803236C8: 96 addiu $a0, $a0, 1 97 bne $a0, $a1, .L803236C8 98 sb $zero, -1($a0) 99 .L803236D4: 100 jr $ra 101 #endif 102