150 lines
2.1 KiB
PHP
150 lines
2.1 KiB
PHP
.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
|