1  .macro fp_assert a, b
2  beq \a, \b, 1f
3  nop
4  j _fail
5  nop
61:
7  .endm
8
9  .macro r6ck_1r inst, a, ret
10  li $4, \a
11  li $6, \ret
12  \inst $7, $4
13  fp_assert $6, $7
14  .endm
15
16  .macro r6ck_1dr inst, a, ret
17  ld $4, \a
18  ld $6, \ret
19  \inst $7, $4
20  fp_assert $6, $7
21  .endm
22
23  .macro r6ck_2r inst, a, b, ret
24  li $4, \a
25  li $5, \b
26  li $6, \ret
27  \inst $7, $4, $5
28  fp_assert $6, $7
29  .endm
30
31  .macro r6ck_2dr inst, a, b, ret
32  ld $4, \a
33  ld $5, \b
34  ld $6, \ret
35  \inst $7, $4, $5
36  fp_assert $6, $7
37  .endm
38
39  .macro r6ck_2dr1i inst, a, b, imm, ret
40  ld $4, \a
41  ld $5, \b
42  ld $6, \ret
43  \inst $7, $4, $5, \imm
44  fp_assert $6, $7
45  .endm
46
47  .macro r6ck_1r1i inst, a, imm, ret
48  li $4, \a
49  li $6, \ret
50  \inst $7, $4, \imm
51  fp_assert $6, $7
52  .endm
53
54  .macro r6ck_1dr1i inst, a, imm, ret
55  ld $4, \a
56  ld $6, \ret
57  \inst $7, $4, \imm
58  fp_assert $6, $7
59  .endm
60
61  .macro r6ck_0dr1i inst, a, imm, ret
62  ld $4, \a
63  ld $6, \ret
64  \inst $4, $4, \imm
65  fp_assert $6, $4
66  .endm
67
68  .macro r6ck_2r1i inst, a, b, imm, ret
69  li $4, \a
70  li $5, \b
71  li $6, \ret
72  \inst $7, $4, $5, \imm
73  fp_assert $6, $7
74  .endm
75
76  .macro r6ck_3s inst, a, b, c, ret
77  li $4, \a
78  li $5, \b
79  li $6, \c
80  li $7, \ret
81  mtc1 $4, $f2
82  mtc1 $5, $f4
83  mtc1 $6, $f6
84  \inst $f2, $f4, $f6
85  mfc1 $8, $f2
86  fp_assert $7, $8
87  .endm
88
89  .macro r6ck_2s inst, a, b, ret
90  li $4, \a
91  li $5, \b
92  li $6, \ret
93  mtc1 $4, $f2
94  mtc1 $5, $f4
95  \inst $f2, $f4
96  mfc1 $7, $f2
97  fp_assert $6, $7
98  .endm
99
100  .macro r6ck_2d inst, a, b, ret
101  .data
1021: .dword \a
1032: .dword \b
1043: .dword \ret
105  .text
106  la $4, 1b
107  la $5, 2b
108  la $6, 3b
109  ldc1 $f2, 0($4)
110  ldc1 $f4, 0($5)
111  lw $7, 0($6)
112  lw $8, 4($6)
113  \inst $f2, $f4
114
115  #simulate dmfc1
116  mfhc1 $9, $f2
117  mfc1 $10, $f2
118  fp_assert $7, $9
119  fp_assert $8, $10
120  .endm
121
122  .macro r6ck_3d inst, a, b, c, ret
123  .data
1241: .dword \a
1252: .dword \b
1263: .dword \c
1274: .dword \ret
128  .text
129  la $4, 1b
130  la $5, 2b
131  la $6, 3b
132  la $2, 4b
133  ldc1 $f2, 0($4)
134  ldc1 $f4, 0($5)
135  ldc1 $f6, 0($6)
136  lw $7, 0($2)
137  lw $8, 4($2)
138  \inst $f2, $f4, $f6
139
140  #simulate dmfc1
141  mfhc1 $9, $f2
142  mfc1 $10, $f2
143  fp_assert $7, $9
144  fp_assert $8, $10
145  .endm
146
147.text
148GetPC:
149  move $6, $ra
150  jr $ra
151