2 # define I7f 0x7fffffffffffffff
3 # define I80 0x8000000000000000
4 # define I81 0x8000000000000001
5 # define Iff 0xffffffffffffffff
7 # define I7f 0x7fffffff
8 # define I80 0x80000000
9 # define I81 0x80000001
10 # define Iff 0xffffffff
18 #define BOP(N, Ls, Rs, Lu, Ru, R0, R1) \
21 b##N##r N##r_##R0##_##R1 %R0 %R1 \
24 b##N##i N##i_##R0##_##R1 %R0 Rs \
29 b##N##r_u N##r_u_##R0##_##R1 %R0 %R1 \
32 b##N##i_u N##i_u_##R0##_##R1 %R0 Ru \
38 beqi _##N##r_##R0##_##R1 %R0 1 \
40 _##N##r_##R0##_##R1: \
43 beqi _##N##i_##R0##_##R1 %R1 1 \
45 _##N##i_##R0##_##R1: \
49 beqi _##N##r_u_##R0##_##R1 %R0 1 \
51 _##N##r_u_##R0##_##R1: \
54 beqi _##N##i_u_##R0##_##R1 %R1 1 \
56 _##N##i_u_##R0##_##R1:
58 #define EB(N, L, R, R0, R1) \
61 b##N##r N##r_##R0##_##R1 %R0 %R1 \
64 b##N##i N##i_##R0##_##R1 %R0 R \
70 beqi _##N##r_##R0##_##R1 %R0 1 \
72 _##N##r_##R0##_##R1: \
75 beqi _##N##i_##R0##_##R1 %R1 1 \
79 #define XEB(N, L, R, R0, R1) \
82 b##N##r N##r_##R0##_##R1 %R0 %R1 \
85 b##N##i N##i_##R0##_##R1 %R0 R \
89 #define XBOP(N, Ls, Rs, Lu, Ru, R0, R1) \
92 b##N##r N##r_##R0##_##R1 %R0 %R1 \
96 b##N##i N##i_##R0##_##R1 %R0 Rs \
101 b##N##r_u N##r_u_##R0##_##R1 %R0 %R1 \
103 N##r_u_##R0##_##R1: \
105 b##N##i_u N##i_u_##R0##_##R1 %R0 Ru \
109 #define BOPI(N, Ls, Rs, Lu, Ru) \
110 BOP(N, Ls, Rs, Lu, Ru, v0, v1) \
111 BOP(N, Ls, Rs, Lu, Ru, v0, v2) \
112 BOP(N, Ls, Rs, Lu, Ru, v0, r0) \
113 BOP(N, Ls, Rs, Lu, Ru, v0, r1) \
114 BOP(N, Ls, Rs, Lu, Ru, v0, r2) \
115 BOP(N, Ls, Rs, Lu, Ru, v1, v0) \
116 BOP(N, Ls, Rs, Lu, Ru, v1, v2) \
117 BOP(N, Ls, Rs, Lu, Ru, v1, r0) \
118 BOP(N, Ls, Rs, Lu, Ru, v1, r1) \
119 BOP(N, Ls, Rs, Lu, Ru, v1, r2) \
120 BOP(N, Ls, Rs, Lu, Ru, v2, v0) \
121 BOP(N, Ls, Rs, Lu, Ru, v2, v1) \
122 BOP(N, Ls, Rs, Lu, Ru, v2, r0) \
123 BOP(N, Ls, Rs, Lu, Ru, v2, r1) \
124 BOP(N, Ls, Rs, Lu, Ru, v2, r2) \
125 BOP(N, Ls, Rs, Lu, Ru, r0, v0) \
126 BOP(N, Ls, Rs, Lu, Ru, r0, v1) \
127 BOP(N, Ls, Rs, Lu, Ru, r0, v2) \
128 BOP(N, Ls, Rs, Lu, Ru, r0, r1) \
129 BOP(N, Ls, Rs, Lu, Ru, r0, r2) \
130 BOP(N, Ls, Rs, Lu, Ru, r1, v0) \
131 BOP(N, Ls, Rs, Lu, Ru, r1, v1) \
132 BOP(N, Ls, Rs, Lu, Ru, r1, v2) \
133 BOP(N, Ls, Rs, Lu, Ru, r1, r0) \
134 BOP(N, Ls, Rs, Lu, Ru, r1, r2) \
135 BOP(N, Ls, Rs, Lu, Ru, r2, v0) \
136 BOP(N, Ls, Rs, Lu, Ru, r2, v1) \
137 BOP(N, Ls, Rs, Lu, Ru, r2, v2) \
138 BOP(N, Ls, Rs, Lu, Ru, r2, r0) \
139 BOP(N, Ls, Rs, Lu, Ru, r2, r1)
141 #define EBI(N, L, R) \
142 EB(N, L, R, v0, v1) \
143 EB(N, L, R, v0, v2) \
144 EB(N, L, R, v0, r0) \
145 EB(N, L, R, v0, r1) \
146 EB(N, L, R, v0, r2) \
147 EB(N, L, R, v1, v0) \
148 EB(N, L, R, v1, v2) \
149 EB(N, L, R, v1, r0) \
150 EB(N, L, R, v1, r1) \
151 EB(N, L, R, v1, r2) \
152 EB(N, L, R, v2, v0) \
153 EB(N, L, R, v2, v1) \
154 EB(N, L, R, v2, r0) \
155 EB(N, L, R, v2, r1) \
156 EB(N, L, R, v2, r2) \
157 EB(N, L, R, r0, v0) \
158 EB(N, L, R, r0, v1) \
159 EB(N, L, R, r0, v2) \
160 EB(N, L, R, r0, r1) \
161 EB(N, L, R, r0, r2) \
162 EB(N, L, R, r1, v0) \
163 EB(N, L, R, r1, v1) \
164 EB(N, L, R, r1, v2) \
165 EB(N, L, R, r1, r0) \
166 EB(N, L, R, r1, r2) \
167 EB(N, L, R, r2, v0) \
168 EB(N, L, R, r2, v1) \
169 EB(N, L, R, r2, v2) \
170 EB(N, L, R, r2, r0) \
174 #define XEBI(N, L, R) \
175 XEB(N, L, R, v0, v1) \
176 XEB(N, L, R, v0, v2) \
177 XEB(N, L, R, v0, r0) \
178 XEB(N, L, R, v0, r1) \
179 XEB(N, L, R, v0, r2) \
180 XEB(N, L, R, v1, v0) \
181 XEB(N, L, R, v1, v2) \
182 XEB(N, L, R, v1, r0) \
183 XEB(N, L, R, v1, r1) \
184 XEB(N, L, R, v1, r2) \
185 XEB(N, L, R, v2, v0) \
186 XEB(N, L, R, v2, v1) \
187 XEB(N, L, R, v2, r0) \
188 XEB(N, L, R, v2, r1) \
189 XEB(N, L, R, v2, r2) \
190 XEB(N, L, R, r0, v0) \
191 XEB(N, L, R, r0, v1) \
192 XEB(N, L, R, r0, v2) \
193 XEB(N, L, R, r0, r1) \
194 XEB(N, L, R, r0, r2) \
195 XEB(N, L, R, r1, v0) \
196 XEB(N, L, R, r1, v1) \
197 XEB(N, L, R, r1, v2) \
198 XEB(N, L, R, r1, r0) \
199 XEB(N, L, R, r1, r2) \
200 XEB(N, L, R, r2, v0) \
201 XEB(N, L, R, r2, v1) \
202 XEB(N, L, R, r2, v2) \
203 XEB(N, L, R, r2, r0) \
206 #define XBOPI(N, Ls, Rs, Lu, Ru) \
207 XBOP(N, Ls, Rs, Lu, Ru, v0, v1) \
208 XBOP(N, Ls, Rs, Lu, Ru, v0, v2) \
209 XBOP(N, Ls, Rs, Lu, Ru, v0, r0) \
210 XBOP(N, Ls, Rs, Lu, Ru, v0, r1) \
211 XBOP(N, Ls, Rs, Lu, Ru, v0, r2) \
212 XBOP(N, Ls, Rs, Lu, Ru, v1, v0) \
213 XBOP(N, Ls, Rs, Lu, Ru, v1, v2) \
214 XBOP(N, Ls, Rs, Lu, Ru, v1, r0) \
215 XBOP(N, Ls, Rs, Lu, Ru, v1, r1) \
216 XBOP(N, Ls, Rs, Lu, Ru, v1, r2) \
217 XBOP(N, Ls, Rs, Lu, Ru, v2, v0) \
218 XBOP(N, Ls, Rs, Lu, Ru, v2, v1) \
219 XBOP(N, Ls, Rs, Lu, Ru, v2, r0) \
220 XBOP(N, Ls, Rs, Lu, Ru, v2, r1) \
221 XBOP(N, Ls, Rs, Lu, Ru, v2, r2) \
222 XBOP(N, Ls, Rs, Lu, Ru, r0, v0) \
223 XBOP(N, Ls, Rs, Lu, Ru, r0, v1) \
224 XBOP(N, Ls, Rs, Lu, Ru, r0, v2) \
225 XBOP(N, Ls, Rs, Lu, Ru, r0, r1) \
226 XBOP(N, Ls, Rs, Lu, Ru, r0, r2) \
227 XBOP(N, Ls, Rs, Lu, Ru, r1, v0) \
228 XBOP(N, Ls, Rs, Lu, Ru, r1, v1) \
229 XBOP(N, Ls, Rs, Lu, Ru, r1, v2) \
230 XBOP(N, Ls, Rs, Lu, Ru, r1, r0) \
231 XBOP(N, Ls, Rs, Lu, Ru, r1, r2) \
232 XBOP(N, Ls, Rs, Lu, Ru, r2, v0) \
233 XBOP(N, Ls, Rs, Lu, Ru, r2, v1) \
234 XBOP(N, Ls, Rs, Lu, Ru, r2, v2) \
235 XBOP(N, Ls, Rs, Lu, Ru, r2, r0) \
236 XBOP(N, Ls, Rs, Lu, Ru, r2, r1)
238 #define TBOPF(N, T, L, R) \
241 b##N##r##_##T N##r_##T %f0 %f1 \
244 b##N##i##_##T N##i_##T %f0 R \
248 b##N##r##_##T N##r_##T##_##u %f0 %f1 \
249 jmpi N##r_##T##_##u0 \
253 b##N##i##_##T N##i_##T##_##u %f0 $NaN \
254 jmpi N##i_##T##_##u0 \
258 #define BOPF(N, L, R) \
262 #define TUBOPF(N, T, L, R) \
265 b##N##r##_##T N##r_##T %f0 %f1 \
268 b##N##i##_##T N##i_##T %f0 R \
272 b##N##r##_##T N##r_##T##_##u %f0 %f1 \
275 b##N##i##_##T N##i_##T##_##u %f0 $NaN \
279 #define UBOPF(N, L, R) \
288 bltr xltr_r0_r1 %r0 %r1
291 blti xlti_r0_r1 %r0 1
296 bltr_u xltru_r0_r1 %r0 %r1
299 blti_u xltiu_r0_r1 %r0 -1
304 bler xler_r0_r1 %r0 %r1
307 blti xlei_r0_r1 %r0 1
312 bltr_u xlteu_r0_r1 %r0 %r1
315 blei_u xleiu_r0_r1 %r0 -1
320 beqr xeqr_r0_r1 %r0 %r1
323 beqi xeqi_r0_r1 %r0 32
328 bger xger_r0_r1 %r0 %r1
331 bgei xgei_r0_r1 %r0 -2
336 bger_u xgeru_r0_r1 %r0 %r1
339 bgei_u xgeiu_r0_r1 %r0 2
344 bgtr xgtr_r0_r1 %r0 %r1
347 bgti xgti_r0_r1 %r0 -2
352 bgtr_u xgtru_r0_r1 %r0 %r1
355 bgti_u xgtiu_r0_r1 %r0 2
360 bner xner_r0_r1 %r0 %r1
363 bnei xnei_r0_r1 %r0 3
368 bmsr xmsr_r0_r1 %r0 %r1
371 bmsi xmsi_r0_r1 %r0 3
376 bmcr xmcr_r0_r1 %r0 %r1
379 bmci xmci_r0_r1 %r0 2
384 boaddr xoaddr_r0_r1 %r0 %r1
389 boaddr_u xoaddr_u_r0_r1 %r0 %r1
393 boaddi xoaddi_r0_r1 %r0 1
397 boaddi_u xoaddi_u_r0_r1 %r0 1
402 bxaddr xxaddr_r0_r1 %r0 %r1
406 bxaddi xxaddi_r0_r1 %r0 1
411 bxaddr_u xxaddr_u_r0_r1 %r0 %r1
415 bxaddi_u xxaddi_u_r0_r1 %r0 1
420 bosubr xosubr_r0_r1 %r0 %r1
425 bosubr_u xosubr_u_r0_r1 %r0 %r1
429 bosubi xosubi_r0_r1 %r0 1
433 bosubi_u xosubi_u_r0_r1 %r0 1
438 bxsubr xxsubr_r0_r1 %r0 %r1
442 bxsubi xxsubi_r0_r1 %r0 1
447 bxsubr_u xxsubr_u_r0_r1 %r0 %r1
451 bxsubi_u xxsubi_u_r0_r1 %r0 1
456 bltr_f xltr_f_f0_f1 %f0 %f1
459 blti_f xlti_f_f0_f1 %f0 2
464 bler_f xler_f_f0_f1 %f0 %f1
467 blei_f xlei_f_f0_f1 %f0 -1
472 beqr_f xeqr_f_f0_f1 %f0 %f1
475 beqi_f xeqi_f_f0_f1 %f0 -2
480 bger_f xger_f_f0_f1 %f0 %f1
483 bgei_f xgei_f_f0_f1 %f0 -3
488 bgtr_f xgtr_f_f0_f1 %f0 %f1
491 bgti_f xgti_f_f0_f1 %f0 1
496 bner_f xner_f_f0_f1 %f0 %f1
499 bnei_f xnei_f_f0_f1 %f0 2
503 BOPI(lt, -1, 1, 1, -1)
504 BOPI(le, -1, -1, 1, 1)
506 BOPI(ge, -2, -2, 2, 2)
507 BOPI(gt, 2, -2, -2, 2)
511 XBOPI(oadd, I7f, 1, Iff, 1)
512 XBOPI(xadd, I80, 1, I7f, 1)
513 XBOPI(osub, I80, 1, 0, 1)
514 XBOPI(xsub, I81, 1, I80, 1)
529 bordr_f ordr_f %f0 %f1
535 bordi_f ordi_f_u %f0 $NaN
542 bunordr_f unordr_f %f0 %f1
547 bunordi_f unordi_f %f0 1
552 bunordi_f unordi_f_1 %f0 $NaN
556 // just to know did not crash or abort