1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
.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
|