.macro fp_assert a, b beq \a, \b, 1f nop j _fail nop 1: .endm .macro r6ck_1r inst, a, ret li $4, \a li $6, \ret \inst $7, $4 fp_assert $6, $7 .endm .macro r6ck_1dr inst, a, ret ld $4, \a ld $6, \ret \inst $7, $4 fp_assert $6, $7 .endm .macro r6ck_2r inst, a, b, ret li $4, \a li $5, \b li $6, \ret \inst $7, $4, $5 fp_assert $6, $7 .endm .macro r6ck_2dr inst, a, b, ret ld $4, \a ld $5, \b ld $6, \ret \inst $7, $4, $5 fp_assert $6, $7 .endm .macro r6ck_2dr1i inst, a, b, imm, ret ld $4, \a ld $5, \b ld $6, \ret \inst $7, $4, $5, \imm fp_assert $6, $7 .endm .macro r6ck_1r1i inst, a, imm, ret li $4, \a li $6, \ret \inst $7, $4, \imm fp_assert $6, $7 .endm .macro r6ck_1dr1i inst, a, imm, ret ld $4, \a ld $6, \ret \inst $7, $4, \imm fp_assert $6, $7 .endm .macro r6ck_0dr1i inst, a, imm, ret ld $4, \a ld $6, \ret \inst $4, $4, \imm fp_assert $6, $4 .endm .macro r6ck_2r1i inst, a, b, imm, ret li $4, \a li $5, \b li $6, \ret \inst $7, $4, $5, \imm fp_assert $6, $7 .endm .macro r6ck_3s inst, a, b, c, ret li $4, \a li $5, \b li $6, \c li $7, \ret mtc1 $4, $f2 mtc1 $5, $f4 mtc1 $6, $f6 \inst $f2, $f4, $f6 mfc1 $8, $f2 fp_assert $7, $8 .endm .macro r6ck_2s inst, a, b, ret li $4, \a li $5, \b li $6, \ret mtc1 $4, $f2 mtc1 $5, $f4 \inst $f2, $f4 mfc1 $7, $f2 fp_assert $6, $7 .endm .macro r6ck_2d inst, a, b, ret .data 1: .dword \a 2: .dword \b 3: .dword \ret .text la $4, 1b la $5, 2b la $6, 3b ldc1 $f2, 0($4) ldc1 $f4, 0($5) lw $7, 0($6) lw $8, 4($6) \inst $f2, $f4 #simulate dmfc1 mfhc1 $9, $f2 mfc1 $10, $f2 fp_assert $7, $9 fp_assert $8, $10 .endm .macro r6ck_3d inst, a, b, c, ret .data 1: .dword \a 2: .dword \b 3: .dword \c 4: .dword \ret .text la $4, 1b la $5, 2b la $6, 3b la $2, 4b ldc1 $f2, 0($4) ldc1 $f4, 0($5) ldc1 $f6, 0($6) lw $7, 0($2) lw $8, 4($2) \inst $f2, $f4, $f6 #simulate dmfc1 mfhc1 $9, $f2 mfc1 $10, $f2 fp_assert $7, $9 fp_assert $8, $10 .endm .text GetPC: move $6, $ra jr $ra