.file 1 "testbench.c" .set nobopt .text .align 2 .globl fibonacci .ent fibonacci fibonacci: .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 .mask 0x00000000,0 .fmask 0x00000000,0 li $8,2 # 0x2 slt $2,$8,$7 sw $4,0($6) .set noreorder .set nomacro beq $2,$0,$L7 sw $5,4($6) .set macro .set reorder addiu $6,$6,8 $L5: lw $2,-8($6) lw $3,-4($6) addiu $8,$8,1 addu $2,$2,$3 slt $4,$8,$7 sw $2,0($6) .set noreorder .set nomacro bne $4,$0,$L5 addiu $6,$6,4 .set macro .set reorder $L7: .set noreorder .set nomacro j $31 move $2,$8 .set macro .set reorder .end fibonacci .align 2 .globl StatusRegister_read .ent StatusRegister_read StatusRegister_read: .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 .mask 0x00000000,0 .fmask 0x00000000,0 #APP .set noreorder mfc0 $2, $12 .set reorder #NO_APP j $31 .end StatusRegister_read .align 2 .globl RevisionRegister_read .ent RevisionRegister_read RevisionRegister_read: .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 .mask 0x00000000,0 .fmask 0x00000000,0 #APP .set noreorder mfc0 $2, $15 .set reorder #NO_APP j $31 .end RevisionRegister_read .section .rodata.str1.4,"aMS",@progbits,1 .align 2 $LC0: .ascii "invalid\000" .align 2 $LC1: .ascii "R2000\000" .align 2 $LC2: .ascii "R3000\000" .align 2 $LC3: .ascii "R6000\000" .align 2 $LC4: .ascii "R4000\000" .align 2 $LC5: .ascii "reserved\000" .align 2 $LC6: .ascii "R6000A\000" .rdata .align 2 $LC7: .word $LC0 .word $LC1 .word $LC2 .word $LC3 .word $LC4 .word $LC5 .word $LC6 .section .rodata.str1.4 .align 2 $LC8: .ascii "Status : \000" .align 2 $LC9: .ascii "\r\n\000" .align 2 $LC10: .ascii "CPU type: \000" .align 2 $LC12: .ascii "Unknown\000" .align 2 $LC11: .ascii " Rev.\000" .text .align 2 .globl PrintCPUinfo .ent PrintCPUinfo PrintCPUinfo: .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0 .mask 0x80030000,-8 .fmask 0x00000000,0 lw $2,$LC7 addiu $sp,$sp,-64 lw $3,$LC7+4 sw $2,16($sp) lw $2,$LC7+8 sw $3,20($sp) sw $2,24($sp) lw $3,$LC7+12 lw $2,$LC7+16 sw $3,28($sp) sw $2,32($sp) lw $3,$LC7+20 lw $2,$LC7+24 sw $3,36($sp) sw $31,56($sp) sw $17,52($sp) sw $16,48($sp) .set noreorder .set nomacro jal StatusRegister_read sw $2,40($sp) .set macro .set reorder la $4,$LC8 .set noreorder .set nomacro jal sputs move $17,$2 .set macro .set reorder .set noreorder .set nomacro jal print_word move $4,$17 .set macro .set reorder la $4,$LC9 jal sputs jal RevisionRegister_read sra $16,$2,8 andi $16,$16,0xff la $4,$LC10 .set noreorder .set nomacro jal sputs move $17,$2 .set macro .set reorder sll $3,$16,2 addiu $16,$16,-1 sltu $16,$16,6 la $4,$LC12 .set noreorder .set nomacro beq $16,$0,$L12 addu $2,$sp,$3 .set macro .set reorder lw $4,16($2) jal sputs la $4,$LC11 jal sputs sll $4,$17,24 .set noreorder .set nomacro jal print_byte sra $4,$4,24 .set macro .set reorder la $4,$LC9 jal sputs lw $31,56($sp) lw $17,52($sp) lw $16,48($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,64 .set macro .set reorder $L12: jal sputs la $4,$LC9 jal sputs lw $31,56($sp) lw $17,52($sp) lw $16,48($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,64 .set macro .set reorder .end PrintCPUinfo .align 2 .globl Test10_LoadStore .ent Test10_LoadStore Test10_LoadStore: .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 .mask 0x80010000,-4 .fmask 0x00000000,0 addiu $sp,$sp,-24 li $4,128 # 0x80 sw $31,20($sp) .set noreorder .set nomacro jal malloc sw $16,16($sp) .set macro .set reorder move $4,$2 li $2,1431633920 # 0x55550000 li $3,-1431699456 # 0xffffffffaaaa0000 ori $5,$2,0x5555 ori $6,$3,0xaaaa li $7,-1 # 0xffffffffffffffff sw $0,0($4) sw $5,4($4) sw $6,8($4) sw $7,12($4) lw $3,0($4) li $2,-2147483648 # 0xffffffff80000000 .set noreorder .set nomacro bne $3,$0,$L16 ori $16,$2,0x10 .set macro .set reorder lw $2,4($4) beq $2,$5,$L73 $L16: jal free move $2,$16 lw $31,20($sp) lw $16,16($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,24 .set macro .set reorder $L73: lw $2,8($4) bne $2,$6,$L16 lw $2,12($4) .set noreorder .set nomacro bne $2,$7,$L16 move $3,$4 .set macro .set reorder move $5,$0 li $7,-2147483648 # 0xffffffff80000000 li $6,31 # 0x1f $L24: sra $2,$5,1 addiu $6,$6,-1 sw $5,0($3) addiu $3,$3,4 .set noreorder .set nomacro bgez $6,$L24 or $5,$2,$7 .set macro .set reorder move $3,$4 move $5,$0 move $6,$0 .set noreorder .set nomacro j $L29 li $8,-2147483648 # 0xffffffff80000000 .set macro .set reorder $L74: addiu $6,$6,1 slt $2,$6,32 .set noreorder .set nomacro beq $2,$0,$L26 or $5,$7,$8 .set macro .set reorder $L29: lw $2,0($3) sra $7,$5,1 .set noreorder .set nomacro beq $2,$5,$L74 addiu $3,$3,4 .set macro .set reorder $L26: li $2,32 # 0x20 .set noreorder .set nomacro bne $6,$2,$L16 move $3,$4 .set macro .set reorder move $5,$0 li $6,31 # 0x1f $L34: sll $2,$5,1 addiu $6,$6,-1 sw $5,0($3) addiu $3,$3,4 .set noreorder .set nomacro bgez $6,$L34 ori $5,$2,0x1 .set macro .set reorder move $3,$4 move $5,$0 .set noreorder .set nomacro j $L39 move $6,$0 .set macro .set reorder $L75: addiu $6,$6,1 slt $2,$6,32 .set noreorder .set nomacro beq $2,$0,$L36 ori $5,$7,0x1 .set macro .set reorder $L39: lw $2,0($3) sll $7,$5,1 .set noreorder .set nomacro beq $2,$5,$L75 addiu $3,$3,4 .set macro .set reorder $L36: li $2,32 # 0x20 .set noreorder .set nomacro bne $6,$2,$L16 move $3,$4 .set macro .set reorder li $5,1 # 0x1 li $6,31 # 0x1f $L44: addiu $6,$6,-1 sw $5,0($3) addiu $3,$3,4 .set noreorder .set nomacro bgez $6,$L44 sll $5,$5,1 .set macro .set reorder move $3,$4 li $5,1 # 0x1 .set noreorder .set nomacro j $L49 move $6,$0 .set macro .set reorder $L76: addiu $6,$6,1 slt $2,$6,32 .set noreorder .set nomacro beq $2,$0,$L46 sll $5,$5,1 .set macro .set reorder $L49: lw $2,0($3) .set noreorder .set nomacro beq $2,$5,$L76 addiu $3,$3,4 .set macro .set reorder $L46: li $2,32 # 0x20 .set noreorder .set nomacro bne $6,$2,$L16 move $3,$4 .set macro .set reorder li $5,-2 # 0xfffffffffffffffe li $6,31 # 0x1f $L54: sll $2,$5,1 addiu $6,$6,-1 sw $5,0($3) addiu $3,$3,4 .set noreorder .set nomacro bgez $6,$L54 ori $5,$2,0x1 .set macro .set reorder move $3,$4 li $5,-2 # 0xfffffffffffffffe .set noreorder .set nomacro j $L59 move $6,$0 .set macro .set reorder $L77: addiu $6,$6,1 slt $2,$6,32 .set noreorder .set nomacro beq $2,$0,$L56 ori $5,$7,0x1 .set macro .set reorder $L59: lw $2,0($3) sll $7,$5,1 .set noreorder .set nomacro beq $2,$5,$L77 addiu $3,$3,4 .set macro .set reorder $L56: li $2,32 # 0x20 bne $6,$2,$L16 .set noreorder .set nomacro j $L16 move $16,$0 .set macro .set reorder .end Test10_LoadStore .align 2 .globl Test11_AddSub .ent Test11_AddSub Test11_AddSub: .frame $sp,120,$31 # vars= 80, regs= 5/0, args= 16, gp= 0 .mask 0x800f0000,-8 .fmask 0x00000000,0 addiu $sp,$sp,-120 li $2,-1431699456 # 0xffffffffaaaa0000 sw $19,108($sp) sw $18,104($sp) sw $16,96($sp) sw $31,112($sp) sw $17,100($sp) ori $16,$2,0xaaaa move $19,$0 move $4,$0 addiu $18,$sp,16 $L92: move $2,$18 li $6,19 # 0x13 $L85: addiu $6,$6,-1 sw $16,0($2) .set noreorder .set nomacro bgez $6,$L85 addiu $2,$2,4 .set macro .set reorder xor $2,$16,$4 addiu $17,$4,1 addiu $2,$2,-1 move $5,$17 addiu $6,$sp,16 li $7,20 # 0x14 .set noreorder .set nomacro jal fibonacci sll $16,$2,1 .set macro .set reorder li $7,2 # 0x2 addiu $5,$18,8 .set noreorder .set nomacro j $L90 li $6,17 # 0x11 .set macro .set reorder $L88: bltz $6,$L100 $L90: lw $2,0($5) lw $3,-4($5) lw $4,-8($5) subu $2,$2,$3 addiu $6,$6,-1 .set noreorder .set nomacro bne $4,$2,$L88 addiu $5,$5,4 .set macro .set reorder .set noreorder .set nomacro bgez $6,$L90 addiu $7,$7,1 .set macro .set reorder $L100: li $6,20 # 0x14 beq $7,$6,$L101 $L81: slt $2,$17,3 .set noreorder .set nomacro bne $2,$0,$L92 move $4,$17 .set macro .set reorder li $2,3 # 0x3 .set noreorder .set nomacro bne $19,$2,$L102 move $3,$0 .set macro .set reorder lw $31,112($sp) lw $19,108($sp) lw $18,104($sp) lw $17,100($sp) lw $16,96($sp) move $2,$3 .set noreorder .set nomacro j $31 addiu $sp,$sp,120 .set macro .set reorder $L101: .set noreorder .set nomacro j $L81 addiu $19,$19,1 .set macro .set reorder $L102: li $2,-2147483648 # 0xffffffff80000000 ori $3,$2,0x11 lw $31,112($sp) lw $19,108($sp) lw $18,104($sp) lw $17,100($sp) lw $16,96($sp) move $2,$3 .set noreorder .set nomacro j $31 addiu $sp,$sp,120 .set macro .set reorder .end Test11_AddSub .align 2 .globl Test12_MulDiv .ent Test12_MulDiv Test12_MulDiv: .frame $sp,48,$31 # vars= 8, regs= 5/0, args= 16, gp= 0 .mask 0x800f0000,-8 .fmask 0x00000000,0 li $4,426770432 # 0x19700000 addiu $sp,$sp,-48 ori $4,$4,0x1031 sw $19,36($sp) sw $31,40($sp) sw $18,32($sp) sw $17,28($sp) sw $16,24($sp) .set noreorder .set nomacro jal srand move $19,$0 .set macro .set reorder .set noreorder .set nomacro j $L111 li $18,1 # 0x1 .set macro .set reorder $L109: beq $4,$0,$L117 $L111: .set noreorder .set nomacro jal rand addiu $18,$18,1 .set macro .set reorder sll $3,$2,16 sll $2,$2,8 .set noreorder .set nomacro jal rand xor $16,$2,$3 .set macro .set reorder .set noreorder .set nomacro jal rand xor $17,$2,$16 .set macro .set reorder sll $3,$2,16 sll $2,$2,8 .set noreorder .set nomacro jal rand xor $16,$2,$3 .set macro .set reorder xor $16,$2,$16 addiu $4,$sp,16 move $5,$17 .set noreorder .set nomacro jal div move $6,$16 .set macro .set reorder lw $3,16($sp) lw $2,20($sp) mult $3,$16 mflo $3 addu $2,$2,$3 .set noreorder .set nomacro beq $2,$17,$L109 slt $4,$18,1000 .set macro .set reorder li $2,-2147483648 # 0xffffffff80000000 ori $2,$2,0x12 $L103: lw $31,40($sp) lw $19,36($sp) lw $18,32($sp) lw $17,28($sp) lw $16,24($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,48 .set macro .set reorder $L117: addiu $19,$19,1 slt $2,$19,100 .set noreorder .set nomacro bne $2,$0,$L111 li $18,1 # 0x1 .set macro .set reorder .set noreorder .set nomacro j $L103 move $2,$0 .set macro .set reorder .end Test12_MulDiv .section .rodata.str1.4 .align 2 $LC13: .ascii "Iteration %d: Passed\r\n\000" .align 2 $LC14: .ascii "Iteration \000" .align 2 $LC15: .ascii ": Passed\r\n\000" .align 2 $LC16: .ascii ":\000" .align 2 $LC17: .ascii "Failed with error \000" .align 2 $LC18: .ascii " \r\n\000" .text .align 2 .globl main .ent main main: .frame $sp,48,$31 # vars= 8, regs= 5/0, args= 16, gp= 0 .mask 0x800f0000,-8 .fmask 0x00000000,0 li $3,-2147483648 # 0xffffffff80000000 li $2,13 ori $3,$3,0x9 addiu $sp,$sp,-48 sb $2,0($3) sw $19,36($sp) sw $18,32($sp) sw $17,28($sp) sw $31,40($sp) .set noreorder .set nomacro jal PrintCPUinfo sw $16,24($sp) .set macro .set reorder li $2,1073676288 # 0x3fff0000 ori $19,$2,0xffff li $18,-2147483648 # 0xffffffff80000000 .set noreorder .set nomacro j $L119 move $17,$0 .set macro .set reorder $L124: jal Test11_AddSub .set noreorder .set nomacro bltz $2,$L120 move $16,$2 .set macro .set reorder jal Test12_MulDiv move $16,$2 la $4,$LC13 .set noreorder .set nomacro bltz $2,$L120 move $5,$17 .set macro .set reorder .set noreorder .set nomacro jal printf addiu $17,$17,1 .set macro .set reorder la $4,$LC14 jal sputs .set noreorder .set nomacro jal print_word move $4,$17 .set macro .set reorder la $4,$LC15 .set noreorder .set nomacro jal sputs addiu $17,$17,1 .set macro .set reorder .set noreorder .set nomacro jal time move $4,$0 .set macro .set reorder addiu $4,$sp,16 .set noreorder .set nomacro jal gmtime sw $2,16($sp) .set macro .set reorder lb $4,8($2) .set noreorder .set nomacro jal print_byte move $16,$2 .set macro .set reorder la $4,$LC16 jal sputs lb $4,4($16) jal print_byte la $4,$LC16 jal sputs lb $4,0($16) jal print_byte la $4,$LC9 jal sputs $L119: and $2,$17,$19 sw $2,0($18) jal Test10_LoadStore .set noreorder .set nomacro bgez $2,$L124 move $16,$2 .set macro .set reorder $L120: li $2,1073741824 # 0x40000000 or $2,$17,$2 la $4,$LC17 sw $2,0($18) jal sputs .set noreorder .set nomacro jal print_word move $4,$16 .set macro .set reorder la $4,$LC18 jal sputs lw $31,40($sp) lw $19,36($sp) lw $18,32($sp) lw $17,28($sp) lw $16,24($sp) li $2,1 # 0x1 .set noreorder .set nomacro j $31 addiu $sp,$sp,48 .set macro .set reorder .end main