| 1 | #if __WORDSIZE == 64 |
| 2 | # define I7f 0x7fffffffffffffff |
| 3 | # define I80 0x8000000000000000 |
| 4 | # define I81 0x8000000000000001 |
| 5 | # define Iff 0xffffffffffffffff |
| 6 | #else |
| 7 | # define I7f 0x7fffffff |
| 8 | # define I80 0x80000000 |
| 9 | # define I81 0x80000001 |
| 10 | # define Iff 0xffffffff |
| 11 | #endif |
| 12 | |
| 13 | .data 12 |
| 14 | ok: |
| 15 | .c "ok\n" |
| 16 | . $($NaN = 0.0 / 0.0) |
| 17 | |
| 18 | #define BOP(N, Ls, Rs, Lu, Ru, R0, R1) \ |
| 19 | movi %R0 Ls \ |
| 20 | movi %R1 Rs \ |
| 21 | b##N##r N##r_##R0##_##R1 %R0 %R1 \ |
| 22 | calli @abort \ |
| 23 | N##r_##R0##_##R1: \ |
| 24 | b##N##i N##i_##R0##_##R1 %R0 Rs \ |
| 25 | calli @abort \ |
| 26 | N##i_##R0##_##R1: \ |
| 27 | movi %R0 Lu \ |
| 28 | movi %R1 Ru \ |
| 29 | b##N##r_u N##r_u_##R0##_##R1 %R0 %R1 \ |
| 30 | calli @abort \ |
| 31 | N##r_u_##R0##_##R1: \ |
| 32 | b##N##i_u N##i_u_##R0##_##R1 %R0 Ru \ |
| 33 | calli @abort \ |
| 34 | N##i_u_##R0##_##R1: \ |
| 35 | movi %R0 Ls \ |
| 36 | movi %R1 Rs \ |
| 37 | N##r %R0 %R0 %R1 \ |
| 38 | beqi _##N##r_##R0##_##R1 %R0 1 \ |
| 39 | calli @abort \ |
| 40 | _##N##r_##R0##_##R1: \ |
| 41 | movi %R0 Ls \ |
| 42 | N##i %R1 %R0 Rs \ |
| 43 | beqi _##N##i_##R0##_##R1 %R1 1 \ |
| 44 | calli @abort \ |
| 45 | _##N##i_##R0##_##R1: \ |
| 46 | movi %R0 Lu \ |
| 47 | movi %R1 Ru \ |
| 48 | N##r_u %R0 %R0 %R1 \ |
| 49 | beqi _##N##r_u_##R0##_##R1 %R0 1 \ |
| 50 | calli @abort \ |
| 51 | _##N##r_u_##R0##_##R1: \ |
| 52 | movi %R0 Lu \ |
| 53 | N##i_u %R1 %R0 Ru \ |
| 54 | beqi _##N##i_u_##R0##_##R1 %R1 1 \ |
| 55 | calli @abort \ |
| 56 | _##N##i_u_##R0##_##R1: |
| 57 | |
| 58 | #define EB(N, L, R, R0, R1) \ |
| 59 | movi %R0 L \ |
| 60 | movi %R1 R \ |
| 61 | b##N##r N##r_##R0##_##R1 %R0 %R1 \ |
| 62 | calli @abort \ |
| 63 | N##r_##R0##_##R1: \ |
| 64 | b##N##i N##i_##R0##_##R1 %R0 R \ |
| 65 | calli @abort \ |
| 66 | N##i_##R0##_##R1: \ |
| 67 | movi %R0 L \ |
| 68 | movi %R1 R \ |
| 69 | N##r %R0 %R0 %R1 \ |
| 70 | beqi _##N##r_##R0##_##R1 %R0 1 \ |
| 71 | calli @abort \ |
| 72 | _##N##r_##R0##_##R1: \ |
| 73 | movi %R0 L \ |
| 74 | N##i %R1 %R0 R \ |
| 75 | beqi _##N##i_##R0##_##R1 %R1 1 \ |
| 76 | calli @abort \ |
| 77 | _##N##i_##R0##_##R1: |
| 78 | |
| 79 | #define XEB(N, L, R, R0, R1) \ |
| 80 | movi %R0 L \ |
| 81 | movi %R1 R \ |
| 82 | b##N##r N##r_##R0##_##R1 %R0 %R1 \ |
| 83 | calli @abort \ |
| 84 | N##r_##R0##_##R1: \ |
| 85 | b##N##i N##i_##R0##_##R1 %R0 R \ |
| 86 | calli @abort \ |
| 87 | N##i_##R0##_##R1: |
| 88 | |
| 89 | #define XBOP(N, Ls, Rs, Lu, Ru, R0, R1) \ |
| 90 | movi %R0 Ls \ |
| 91 | movi %R1 Rs \ |
| 92 | b##N##r N##r_##R0##_##R1 %R0 %R1 \ |
| 93 | calli @abort \ |
| 94 | N##r_##R0##_##R1: \ |
| 95 | movi %R0 Ls \ |
| 96 | b##N##i N##i_##R0##_##R1 %R0 Rs \ |
| 97 | calli @abort \ |
| 98 | N##i_##R0##_##R1: \ |
| 99 | movi %R0 Lu \ |
| 100 | movi %R1 Ru \ |
| 101 | b##N##r_u N##r_u_##R0##_##R1 %R0 %R1 \ |
| 102 | calli @abort \ |
| 103 | N##r_u_##R0##_##R1: \ |
| 104 | movi %R0 Lu \ |
| 105 | b##N##i_u N##i_u_##R0##_##R1 %R0 Ru \ |
| 106 | calli @abort \ |
| 107 | N##i_u_##R0##_##R1: |
| 108 | |
| 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) |
| 140 | |
| 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) \ |
| 171 | EB(N, L, R, r2, r1) |
| 172 | |
| 173 | |
| 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) \ |
| 204 | XEB(N, L, R, r2, r1) |
| 205 | |
| 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) |
| 237 | |
| 238 | #define TBOPF(N, T, L, R) \ |
| 239 | movi_##T %f0 L \ |
| 240 | movi_##T %f1 R \ |
| 241 | b##N##r##_##T N##r_##T %f0 %f1 \ |
| 242 | calli @abort \ |
| 243 | N##r_##T: \ |
| 244 | b##N##i##_##T N##i_##T %f0 R \ |
| 245 | calli @abort \ |
| 246 | N##i_##T: \ |
| 247 | movi_##T %f1 $NaN \ |
| 248 | b##N##r##_##T N##r_##T##_##u %f0 %f1 \ |
| 249 | jmpi N##r_##T##_##u0 \ |
| 250 | N##r_##T##_##u: \ |
| 251 | calli @abort \ |
| 252 | N##r##_##T##_##u0: \ |
| 253 | b##N##i##_##T N##i_##T##_##u %f0 $NaN \ |
| 254 | jmpi N##i_##T##_##u0 \ |
| 255 | N##i##_##T##_##u: \ |
| 256 | calli @abort \ |
| 257 | N##i##_##T##_##u0: |
| 258 | #define BOPF(N, L, R) \ |
| 259 | TBOPF(N, f, L, R) \ |
| 260 | TBOPF(N, d, L, R) |
| 261 | |
| 262 | #define TUBOPF(N, T, L, R) \ |
| 263 | movi_##T %f0 L \ |
| 264 | movi_##T %f1 R \ |
| 265 | b##N##r##_##T N##r_##T %f0 %f1 \ |
| 266 | calli @abort \ |
| 267 | N##r_##T: \ |
| 268 | b##N##i##_##T N##i_##T %f0 R \ |
| 269 | calli @abort \ |
| 270 | N##i_##T: \ |
| 271 | movi_##T %f1 $NaN \ |
| 272 | b##N##r##_##T N##r_##T##_##u %f0 %f1 \ |
| 273 | calli @abort \ |
| 274 | N##r_##T##_##u: \ |
| 275 | b##N##i##_##T N##i_##T##_##u %f0 $NaN \ |
| 276 | calli @abort \ |
| 277 | N##i##_##T##_##u: |
| 278 | |
| 279 | #define UBOPF(N, L, R) \ |
| 280 | TUBOPF(N, f, L, R) \ |
| 281 | TUBOPF(N, d, L, R) |
| 282 | |
| 283 | .code |
| 284 | prolog |
| 285 | |
| 286 | movi %r0 -1 |
| 287 | movi %r1 1 |
| 288 | bltr xltr_r0_r1 %r0 %r1 |
| 289 | calli @abort |
| 290 | xltr_r0_r1: |
| 291 | blti xlti_r0_r1 %r0 1 |
| 292 | calli @abort |
| 293 | xlti_r0_r1: |
| 294 | movi %r0 1 |
| 295 | movi %r1 -1 |
| 296 | bltr_u xltru_r0_r1 %r0 %r1 |
| 297 | calli @abort |
| 298 | xltru_r0_r1: |
| 299 | blti_u xltiu_r0_r1 %r0 -1 |
| 300 | calli @abort |
| 301 | xltiu_r0_r1: |
| 302 | movi %r0 -1 |
| 303 | movi %r1 -1 |
| 304 | bler xler_r0_r1 %r0 %r1 |
| 305 | calli @abort |
| 306 | xler_r0_r1: |
| 307 | blti xlei_r0_r1 %r0 1 |
| 308 | calli @abort |
| 309 | xlei_r0_r1: |
| 310 | movi %r0 1 |
| 311 | movi %r1 -1 |
| 312 | bltr_u xlteu_r0_r1 %r0 %r1 |
| 313 | calli @abort |
| 314 | xlteu_r0_r1: |
| 315 | blei_u xleiu_r0_r1 %r0 -1 |
| 316 | calli @abort |
| 317 | xleiu_r0_r1: |
| 318 | movi %r0 32 |
| 319 | movi %r1 32 |
| 320 | beqr xeqr_r0_r1 %r0 %r1 |
| 321 | calli @abort |
| 322 | xeqr_r0_r1: |
| 323 | beqi xeqi_r0_r1 %r0 32 |
| 324 | calli @abort |
| 325 | xeqi_r0_r1: |
| 326 | movi %r0 -2 |
| 327 | movi %r1 -2 |
| 328 | bger xger_r0_r1 %r0 %r1 |
| 329 | calli @abort |
| 330 | xger_r0_r1: |
| 331 | bgei xgei_r0_r1 %r0 -2 |
| 332 | calli @abort |
| 333 | xgei_r0_r1: |
| 334 | movi %r0 2 |
| 335 | movi %r1 2 |
| 336 | bger_u xgeru_r0_r1 %r0 %r1 |
| 337 | calli @abort |
| 338 | xgeru_r0_r1: |
| 339 | bgei_u xgeiu_r0_r1 %r0 2 |
| 340 | calli @abort |
| 341 | xgeiu_r0_r1: |
| 342 | movi %r0 2 |
| 343 | movi %r1 -2 |
| 344 | bgtr xgtr_r0_r1 %r0 %r1 |
| 345 | calli @abort |
| 346 | xgtr_r0_r1: |
| 347 | bgti xgti_r0_r1 %r0 -2 |
| 348 | calli @abort |
| 349 | xgti_r0_r1: |
| 350 | movi %r0 -2 |
| 351 | movi %r1 2 |
| 352 | bgtr_u xgtru_r0_r1 %r0 %r1 |
| 353 | calli @abort |
| 354 | xgtru_r0_r1: |
| 355 | bgti_u xgtiu_r0_r1 %r0 2 |
| 356 | calli @abort |
| 357 | xgtiu_r0_r1: |
| 358 | movi %r0 -3 |
| 359 | movi %r1 3 |
| 360 | bner xner_r0_r1 %r0 %r1 |
| 361 | calli @abort |
| 362 | xner_r0_r1: |
| 363 | bnei xnei_r0_r1 %r0 3 |
| 364 | calli @abort |
| 365 | xnei_r0_r1: |
| 366 | movi %r0 1 |
| 367 | movi %r1 3 |
| 368 | bmsr xmsr_r0_r1 %r0 %r1 |
| 369 | calli @abort |
| 370 | xmsr_r0_r1: |
| 371 | bmsi xmsi_r0_r1 %r0 3 |
| 372 | calli @abort |
| 373 | xmsi_r0_r1: |
| 374 | movi %r0 1 |
| 375 | movi %r1 2 |
| 376 | bmcr xmcr_r0_r1 %r0 %r1 |
| 377 | calli @abort |
| 378 | xmcr_r0_r1: |
| 379 | bmci xmci_r0_r1 %r0 2 |
| 380 | calli @abort |
| 381 | xmci_r0_r1: |
| 382 | movi %r0 I7f |
| 383 | movi %r1 1 |
| 384 | boaddr xoaddr_r0_r1 %r0 %r1 |
| 385 | calli @abort |
| 386 | xoaddr_r0_r1: |
| 387 | movi %r0 Iff |
| 388 | movi %r1 1 |
| 389 | boaddr_u xoaddr_u_r0_r1 %r0 %r1 |
| 390 | calli @abort |
| 391 | xoaddr_u_r0_r1: |
| 392 | movi %r0 I7f |
| 393 | boaddi xoaddi_r0_r1 %r0 1 |
| 394 | calli @abort |
| 395 | xoaddi_r0_r1: |
| 396 | movi %r0 Iff |
| 397 | boaddi_u xoaddi_u_r0_r1 %r0 1 |
| 398 | calli @abort |
| 399 | xoaddi_u_r0_r1: |
| 400 | movi %r0 I80 |
| 401 | movi %r1 1 |
| 402 | bxaddr xxaddr_r0_r1 %r0 %r1 |
| 403 | calli @abort |
| 404 | xxaddr_r0_r1: |
| 405 | movi %r0 I80 |
| 406 | bxaddi xxaddi_r0_r1 %r0 1 |
| 407 | calli @abort |
| 408 | xxaddi_r0_r1: |
| 409 | movi %r0 I7f |
| 410 | movi %r1 1 |
| 411 | bxaddr_u xxaddr_u_r0_r1 %r0 %r1 |
| 412 | calli @abort |
| 413 | xxaddr_u_r0_r1: |
| 414 | movi %r0 I7f |
| 415 | bxaddi_u xxaddi_u_r0_r1 %r0 1 |
| 416 | calli @abort |
| 417 | xxaddi_u_r0_r1: |
| 418 | movi %r0 I80 |
| 419 | movi %r1 1 |
| 420 | bosubr xosubr_r0_r1 %r0 %r1 |
| 421 | calli @abort |
| 422 | xosubr_r0_r1: |
| 423 | movi %r0 0 |
| 424 | movi %r1 1 |
| 425 | bosubr_u xosubr_u_r0_r1 %r0 %r1 |
| 426 | calli @abort |
| 427 | xosubr_u_r0_r1: |
| 428 | movi %r0 I80 |
| 429 | bosubi xosubi_r0_r1 %r0 1 |
| 430 | calli @abort |
| 431 | xosubi_r0_r1: |
| 432 | movi %r0 0 |
| 433 | bosubi_u xosubi_u_r0_r1 %r0 1 |
| 434 | calli @abort |
| 435 | xosubi_u_r0_r1: |
| 436 | movi %r0 I81 |
| 437 | movi %r1 1 |
| 438 | bxsubr xxsubr_r0_r1 %r0 %r1 |
| 439 | calli @abort |
| 440 | xxsubr_r0_r1: |
| 441 | movi %r0 I81 |
| 442 | bxsubi xxsubi_r0_r1 %r0 1 |
| 443 | calli @abort |
| 444 | xxsubi_r0_r1: |
| 445 | movi %r0 I80 |
| 446 | movi %r1 1 |
| 447 | bxsubr_u xxsubr_u_r0_r1 %r0 %r1 |
| 448 | calli @abort |
| 449 | xxsubr_u_r0_r1: |
| 450 | movi %r0 I80 |
| 451 | bxsubi_u xxsubi_u_r0_r1 %r0 1 |
| 452 | calli @abort |
| 453 | xxsubi_u_r0_r1: |
| 454 | movi_f %f0 1 |
| 455 | movi_f %f1 2 |
| 456 | bltr_f xltr_f_f0_f1 %f0 %f1 |
| 457 | calli @abort |
| 458 | xltr_f_f0_f1: |
| 459 | blti_f xlti_f_f0_f1 %f0 2 |
| 460 | calli @abort |
| 461 | xlti_f_f0_f1: |
| 462 | movi_f %f0 -1 |
| 463 | movi_f %f1 -1 |
| 464 | bler_f xler_f_f0_f1 %f0 %f1 |
| 465 | calli @abort |
| 466 | xler_f_f0_f1: |
| 467 | blei_f xlei_f_f0_f1 %f0 -1 |
| 468 | calli @abort |
| 469 | xlei_f_f0_f1: |
| 470 | movi_f %f0 -2 |
| 471 | movi_f %f1 -2 |
| 472 | beqr_f xeqr_f_f0_f1 %f0 %f1 |
| 473 | calli @abort |
| 474 | xeqr_f_f0_f1: |
| 475 | beqi_f xeqi_f_f0_f1 %f0 -2 |
| 476 | calli @abort |
| 477 | xeqi_f_f0_f1: |
| 478 | movi_f %f0 -3 |
| 479 | movi_f %f1 -3 |
| 480 | bger_f xger_f_f0_f1 %f0 %f1 |
| 481 | calli @abort |
| 482 | xger_f_f0_f1: |
| 483 | bgei_f xgei_f_f0_f1 %f0 -3 |
| 484 | calli @abort |
| 485 | xgei_f_f0_f1: |
| 486 | movi_f %f0 2 |
| 487 | movi_f %f1 1 |
| 488 | bgtr_f xgtr_f_f0_f1 %f0 %f1 |
| 489 | calli @abort |
| 490 | xgtr_f_f0_f1: |
| 491 | bgti_f xgti_f_f0_f1 %f0 1 |
| 492 | calli @abort |
| 493 | xgti_f_f0_f1: |
| 494 | movi_f %f0 0 |
| 495 | movi_f %f1 2 |
| 496 | bner_f xner_f_f0_f1 %f0 %f1 |
| 497 | calli @abort |
| 498 | xner_f_f0_f1: |
| 499 | bnei_f xnei_f_f0_f1 %f0 2 |
| 500 | calli @abort |
| 501 | xnei_f_f0_f1: |
| 502 | |
| 503 | BOPI(lt, -1, 1, 1, -1) |
| 504 | BOPI(le, -1, -1, 1, 1) |
| 505 | EBI(eq, 32, 32) |
| 506 | BOPI(ge, -2, -2, 2, 2) |
| 507 | BOPI(gt, 2, -2, -2, 2) |
| 508 | EBI(ne, 3, -3) |
| 509 | XEBI(ms, 1, 3) |
| 510 | XEBI(mc, 1, 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) |
| 515 | BOPF(lt, 1, 2) |
| 516 | BOPF(le, 2, 2) |
| 517 | BOPF(eq, 3, 3) |
| 518 | BOPF(ge, 3, 3) |
| 519 | BOPF(gt, 4, 3) |
| 520 | UBOPF(ne, 4, 3) |
| 521 | UBOPF(unlt, 1, 2) |
| 522 | UBOPF(unle, 2, 2) |
| 523 | UBOPF(uneq, 3, 3) |
| 524 | UBOPF(unge, 3, 3) |
| 525 | UBOPF(ungt, 4, 3) |
| 526 | BOPF(ltgt, 4, 3) |
| 527 | movi_f %f0 5 |
| 528 | movi_f %f1 5 |
| 529 | bordr_f ordr_f %f0 %f1 |
| 530 | calli @abort |
| 531 | ordr_f: |
| 532 | bordi_f ordi_f %f0 1 |
| 533 | calli @abort |
| 534 | ordi_f: |
| 535 | bordi_f ordi_f_u %f0 $NaN |
| 536 | jmpi ordi_f_u0 |
| 537 | ordi_f_u: |
| 538 | calli @abort |
| 539 | ordi_f_u0: |
| 540 | movi_f %f0 5 |
| 541 | movi_f %f1 5 |
| 542 | bunordr_f unordr_f %f0 %f1 |
| 543 | jmpi unordr_f_0 |
| 544 | unordr_f: |
| 545 | calli @abort |
| 546 | unordr_f_0: |
| 547 | bunordi_f unordi_f %f0 1 |
| 548 | jmpi unordi_f_0 |
| 549 | unordi_f: |
| 550 | calli @abort |
| 551 | unordi_f_0: |
| 552 | bunordi_f unordi_f_1 %f0 $NaN |
| 553 | calli @abort |
| 554 | unordi_f_1: |
| 555 | |
| 556 | // just to know did not crash or abort |
| 557 | prepare |
| 558 | pushargi ok |
| 559 | ellipsis |
| 560 | finishi @printf |
| 561 | |
| 562 | ret |
| 563 | epilog |