1 ; @OC@ test 2 ; Generic unary operations supporting all sizes and their various 3 ; addressing modes. 4 5 ; Some fairly big pseudorandom numbers we don't want to compute 6 ; as differences in actual data or code. 7 8 .set const_int_32, 0x1b94452b 9 .set const_int_m32, -3513208907 10 .set two701867, 2701867 11 12 ; Other constants that are not differences 13 .set forty2, 42 14 .set mforty2, -42 15 16 .set three2767, 32767 17 .set six5535, 65535 18 19 .text 20 .syntax no_register_prefix 21 notstart: 22 .dword 0 23 24 start: 25 26 ;;;;;;;;;;;;;;;;; 27 ; 28 ; r 29 @OC@.b r3 30 @OC@.w r5 31 @OC@.d r10 32 33 @OC@ r7 34 @OC@ r6 35 36 ;;;;;;;;;;;;;;;;; 37 ; 38 ; [r] 39 @OC@.b [r0] 40 @OC@.w [r5] 41 @OC@.d [r10] 42 43 @OC@ [r0] 44 @OC@ [r3] 45 46 ;;;;;;;;;;;;;;;;; 47 ; 48 ; [r+] 49 @OC@.b [r0+] 50 @OC@.w [r5+] 51 @OC@.d [r10+] 52 53 @OC@ [r4+] 54 @OC@ [r1+] 55 56 ;;;;;;;;;;;;;;;;; 57 ; 58 ; [r+X] 59 60 ; [r+r.b] 61 62 @OC@.b [r2+r0.b] 63 @OC@.w [r2+r5.b] 64 @OC@.d [r2+r10.b] 65 66 @OC@ [r11+r13.b] 67 @OC@ [r2+r10.b] 68 69 ; [r+[r].b] 70 @OC@.b [r2+[r0].b] 71 @OC@.w [r2+[r5].b] 72 @OC@.d [r2+[r10].b] 73 74 @OC@ [r12+[r5].b] 75 @OC@ [r13+[r10].b] 76 77 ; [r+[r+].b] 78 @OC@.b [r2+[r0+].b] 79 @OC@.w [r2+[r5+].b] 80 @OC@.d [r2+[r10+].b] 81 82 @OC@ [r2+[r13+].b] 83 @OC@ [r12+[r0+].b] 84 85 ; [r+r.w] 86 87 @OC@.b [r2+r0.w] 88 @OC@.w [r2+r5.w] 89 @OC@.d [r2+r10.w] 90 91 @OC@ [r5+r11.w] 92 @OC@ [r1+r1.w] 93 94 ; [r+[r].w] 95 @OC@.b [r2+[r0].w] 96 @OC@.w [r2+[r5].w] 97 @OC@.d [r2+[r10].w] 98 99 @OC@ [r0+[r0].w] 100 @OC@ [r2+[r7].w] 101 102 ; [r+[r+].w] 103 @OC@.b [r2+[r0+].w] 104 @OC@.w [r2+[r5+].w] 105 @OC@.d [r2+[r10+].w] 106 107 @OC@ [r2+[r3+].w] 108 @OC@ [r7+[r8+].w] 109 110 ; [r+r.d] 111 112 @OC@.b [r2+r0.d] 113 @OC@.w [r2+r5.d] 114 @OC@.d [r2+r10.d] 115 116 @OC@ [r2+r5.d] 117 @OC@ [r3+r10.d] 118 119 ; [r+[r].d] 120 @OC@.b [r2+[r0].d] 121 @OC@.w [r2+[r5].d] 122 @OC@.d [r2+[r10].d] 123 124 @OC@ [r5+[r2].d] 125 @OC@ [r12+[r10].d] 126 127 ; [r+[r+].d] 128 @OC@.b [r2+[r0+].d] 129 @OC@.w [r2+[r5+].d] 130 @OC@.d [r2+[r10+].d] 131 132 @OC@ [r1+[r5+].d] 133 @OC@ [r2+[r10+].d] 134 135 ; [r+const] 136 137 ; Note that I forgot 16-bit offsets and 32-bit offsets here and later. 138 ; Maybe add them later if it feels necessary. 139 140 @OC@.b [r2+0] 141 @OC@.b [r2+1] 142 @OC@.b [r2+127] 143 @OC@.b [r2+128] 144 @OC@.b [r2+-1] 145 @OC@.b [r2+-127] 146 @OC@.b [r2+-128] 147 @OC@.b [r2+255] 148 149 @OC@.b [r2+42] 150 @OC@.b [r2+-42] 151 @OC@.b [r2-42] 152 @OC@.b [r2+forty2] 153 @OC@.b [r2+mforty2] 154 @OC@.b [r2+-forty2] 155 @OC@.b [r2+-mforty2] 156 @OC@.b [r2-forty2] 157 @OC@.b [r2-mforty2] 158 @OC@.b [r2+externalsym] 159 160 ; Note that I missed 32-bit offsets (except -32769) here and later. 161 ; Maybe add them later if it feels necessary. 162 163 @OC@.w [r2+0] 164 @OC@.w [r2+1] 165 @OC@.w [r2+127] 166 @OC@.w [r2+128] 167 @OC@.w [r2+-1] 168 @OC@.w [r2-1] 169 @OC@.w [r2+-127] 170 @OC@.w [r2+-128] 171 @OC@.w [r2+-129] 172 @OC@.w [r2-127] 173 @OC@.w [r2-128] 174 @OC@.w [r2-129] 175 @OC@.w [r2+255] 176 @OC@.w [r2+-255] 177 @OC@.w [r2-255] 178 @OC@.w [r2+256] 179 @OC@.w [r2-256] 180 @OC@.w [r2+-8856] 181 @OC@.w [r2-8856] 182 @OC@.w [r2+8856] 183 184 @OC@.w [r2+42] 185 @OC@.w [r2+-42] 186 @OC@.w [r2-42] 187 @OC@.w [r2+forty2] 188 @OC@.w [r2+mforty2] 189 @OC@.w [r2+-forty2] 190 @OC@.w [r2-forty2] 191 @OC@.w [r2+-mforty2] 192 193 @OC@.w [r2+three2767] 194 @OC@.w [r2+three2767+1] 195 @OC@.w [r2+three2767+2] 196 @OC@.w [r2+-three2767] 197 @OC@.w [r2+-(three2767+1)] 198 @OC@.w [r2+-(three2767+2)] 199 @OC@.w [r2-three2767] 200 @OC@.w [r2-(three2767+1)] 201 @OC@.w [r2-(three2767+2)] 202 @OC@.w [r2+six5535] 203 @OC@.w [r2+externalsym] 204 205 @OC@.d [r2+0] 206 @OC@.d [r2+1] 207 @OC@.d [r2+127] 208 @OC@.d [r2+128] 209 @OC@.d [r2+-1] 210 @OC@.d [r2-1] 211 @OC@.d [r2+-127] 212 @OC@.d [r2+-128] 213 @OC@.d [r2-127] 214 @OC@.d [r2-128] 215 @OC@.d [r2+255] 216 @OC@.d [r2+-255] 217 @OC@.d [r2-255] 218 @OC@.d [r2+256] 219 @OC@.d [r2-256] 220 @OC@.d [r2-8856] 221 @OC@.d [r2+-256] 222 @OC@.d [r2+-8856] 223 @OC@.d [r2+8856] 224 225 @OC@.d [r2+2781868] 226 @OC@.d [r2+-2701867] 227 228 @OC@.d [r2+0x9ec0ceac] 229 @OC@.d [r2+-0x7ec0cead] 230 @OC@.d [r2-0x7ec0cead] 231 @OC@.d [r2+const_int_m32] 232 @OC@.d [r2+const_int_32] 233 234 @OC@.d [r2+42] 235 @OC@.d [r2-42] 236 @OC@.d [r2+-42] 237 @OC@.d [r2+forty2] 238 @OC@.d [r2+mforty2] 239 @OC@.d [r2-forty2] 240 @OC@.d [r2-mforty2] 241 @OC@.d [r2+-forty2] 242 @OC@.d [r2+-mforty2] 243 244 @OC@.d [r2+three2767] 245 @OC@.d [r2+three2767+1] 246 @OC@.d [r2+three2767+2] 247 @OC@.d [r2+-three2767] 248 @OC@.d [r2+-(three2767+1)] 249 @OC@.d [r2+-(three2767+2)] 250 @OC@.d [r2-three2767] 251 @OC@.d [r2-(three2767+1)] 252 @OC@.d [r2-(three2767+2)] 253 @OC@.d [r2+six5535] 254 @OC@.d [r2+six5535+1] 255 @OC@.d [r2+two701867] 256 @OC@.d [r2+-two701867] 257 @OC@.d [r2-two701867] 258 259 @OC@.d [r2+externalsym] 260 261 @OC@ [r2+0] 262 @OC@ [r2+1] 263 @OC@ [r2+127] 264 @OC@ [r2+128] 265 @OC@ [r2+-1] 266 @OC@ [r2-1] 267 @OC@ [r2+-127] 268 @OC@ [r2+-128] 269 @OC@ [r2-127] 270 @OC@ [r2-128] 271 @OC@ [r2+255] 272 @OC@ [r2+-255] 273 @OC@ [r2-255] 274 @OC@ [r2+256] 275 @OC@ [r2-256] 276 @OC@ [r2-8856] 277 @OC@ [r2+-256] 278 @OC@ [r2+-8856] 279 @OC@ [r2+8856] 280 281 @OC@ [r2+2781868] 282 @OC@ [r2+-2701867] 283 284 @OC@ [r2+0x9ec0ceac] 285 @OC@ [r2+-0x7ec0cead] 286 @OC@ [r2-0x7ec0cead] 287 @OC@ [r2+const_int_m32] 288 @OC@ [r2+const_int_32] 289 290 @OC@ [r2+42] 291 @OC@ [r2-42] 292 @OC@ [r2+-42] 293 @OC@ [r2+forty2] 294 @OC@ [r2+mforty2] 295 @OC@ [r2-forty2] 296 @OC@ [r2-mforty2] 297 @OC@ [r2+-forty2] 298 @OC@ [r2+-mforty2] 299 300 @OC@ [r2+three2767] 301 @OC@ [r2+three2767+1] 302 @OC@ [r2+three2767+2] 303 @OC@ [r2+-three2767] 304 @OC@ [r2+-(three2767+1)] 305 @OC@ [r2+-(three2767+2)] 306 @OC@ [r2-three2767] 307 @OC@ [r2-(three2767+1)] 308 @OC@ [r2-(three2767+2)] 309 @OC@ [r2+six5535] 310 @OC@ [r2+six5535+1] 311 @OC@ [r2+two701867] 312 @OC@ [r2+-two701867] 313 @OC@ [r2-two701867] 314 315 @OC@ [r2+externalsym] 316 317 @OC@ [r2+0] 318 @OC@ [r2+1] 319 @OC@ [r2+127] 320 @OC@ [r2+128] 321 @OC@ [r2+-1] 322 @OC@ [r2-1] 323 @OC@ [r2+-127] 324 @OC@ [r2+-128] 325 @OC@ [r2-127] 326 @OC@ [r2-128] 327 @OC@ [r2+255] 328 @OC@ [r2+-255] 329 @OC@ [r2-255] 330 @OC@ [r2+256] 331 @OC@ [r2-256] 332 @OC@ [r2-8856] 333 @OC@ [r2+-256] 334 @OC@ [r2+-8856] 335 @OC@ [r2+8856] 336 337 @OC@ [r2+2781868] 338 @OC@ [r2+-2701867] 339 340 @OC@ [r2+0x9ec0ceac] 341 @OC@ [r2+-0x7ec0cead] 342 @OC@ [r2-0x7ec0cead] 343 @OC@ [r2+const_int_m32] 344 @OC@ [r2+const_int_32] 345 346 @OC@ [r2+42] 347 @OC@ [r2-42] 348 @OC@ [r2+-42] 349 @OC@ [r2+forty2] 350 @OC@ [r2+mforty2] 351 @OC@ [r2-forty2] 352 @OC@ [r2-mforty2] 353 @OC@ [r2+-forty2] 354 @OC@ [r2+-mforty2] 355 356 @OC@ [r2+three2767] 357 @OC@ [r2+three2767+1] 358 @OC@ [r2+three2767+2] 359 @OC@ [r2+-three2767] 360 @OC@ [r2+-(three2767+1)] 361 @OC@ [r2+-(three2767+2)] 362 @OC@ [r2-three2767] 363 @OC@ [r2-(three2767+1)] 364 @OC@ [r2-(three2767+2)] 365 @OC@ [r2+six5535] 366 @OC@ [r2+six5535+1] 367 @OC@ [r2+two701867] 368 @OC@ [r2+-two701867] 369 @OC@ [r2-two701867] 370 371 @OC@ [r2+externalsym] 372 373 ;;;;;;;;;;;;;;;;; 374 ; 375 ; [r=r+X],r 376 377 ; [r=r+r.b],r 378 379 @OC@.b [r12=r2+r0.b] 380 @OC@.w [r12=r2+r5.b] 381 @OC@.d [r12=r2+r10.b] 382 383 @OC@ [r1=r2+r3.b] 384 @OC@ [r12=r2+r10.b] 385 386 ; [r=r+[r].b],r 387 @OC@.b [r12=r2+[r0].b] 388 @OC@.w [r12=r2+[r5].b] 389 @OC@.d [r12=r2+[r10].b] 390 391 @OC@ [r0=r2+[r5].b] 392 @OC@ [r3=r2+[r10].b] 393 394 ; [r=r+[r+].b],r 395 @OC@.b [r12=r2+[r0+].b] 396 @OC@.w [r12=r2+[r5+].b] 397 @OC@.d [r12=r2+[r10+].b] 398 399 @OC@.w [r12=r2+[r5+].b] 400 401 @OC@.d [r12=r2+[r10+].b] 402 403 @OC@ [r5=r2+[r4+].b] 404 @OC@ [r2=r4+[r7+].b] 405 406 ; [r=r+r.w],r 407 408 @OC@.b [r12=r2+r0.w] 409 @OC@.w [r12=r2+r5.w] 410 @OC@.d [r12=r2+r10.w] 411 412 @OC@ [r12=r12+r5.w] 413 @OC@ [r1=r3+r10.w] 414 415 ; [r=r+[r].w],r 416 @OC@.b [r12=r2+[r0].w] 417 @OC@.w [r12=r2+[r5].w] 418 @OC@.d [r12=r2+[r10].w] 419 420 @OC@ [r12=r2+[r5].w] 421 @OC@ [r12=r7+[r10].w] 422 423 ; [r=r+[r+].w],r 424 @OC@.b [r12=r2+[r0+].w] 425 @OC@.w [r12=r2+[r5+].w] 426 @OC@.d [r12=r2+[r10+].w] 427 428 @OC@.w [r12=r2+[r5+].w] 429 430 @OC@.d [r12=r2+[r10+].w] 431 432 @OC@ [r12=r6+[r7+].w] 433 @OC@ [r12=r3+[r1+].w] 434 435 ; [r=r+r.d],r 436 437 @OC@.b [r12=r2+r0.d] 438 @OC@.w [r12=r2+r5.d] 439 @OC@.d [r12=r2+r10.d] 440 441 @OC@ [r4=r2+r5.d] 442 @OC@ [r12=r2+r10.d] 443 444 ; [r=r+[r].d],r 445 @OC@.b [r12=r2+[r0].d] 446 @OC@.w [r12=r2+[r5].d] 447 @OC@.d [r12=r2+[r10].d] 448 449 @OC@ [r12=r3+[r5].d] 450 @OC@ [r12=r4+[r10].d] 451 452 ; [r=r+[r+].d],r 453 @OC@.b [r12=r2+[r0+].d] 454 @OC@.w [r12=r2+[r5+].d] 455 @OC@.d [r12=r2+[r10+].d] 456 457 @OC@.w [r12=r2+[r5+].d] 458 459 @OC@.d [r12=r2+[r10+].d] 460 461 @OC@ [r12=r8+[r5+].d] 462 @OC@ [r12=r9+[r10+].d] 463 464 ; [r=r+const],r 465 @OC@.b [r12=r2+0] 466 @OC@.b [r12=r2+1] 467 @OC@.b [r12=r2+127] 468 @OC@.b [r12=r2+128] 469 @OC@.b [r12=r2+-1] 470 @OC@.b [r12=r2+-127] 471 @OC@.b [r12=r2+-128] 472 @OC@.b [r12=r2+255] 473 474 @OC@.b [r12=r2+42] 475 @OC@.b [r12=r2+-42] 476 @OC@.b [r12=r2-42] 477 @OC@.b [r12=r2+forty2] 478 @OC@.b [r12=r2+mforty2] 479 @OC@.b [r12=r2+-forty2] 480 @OC@.b [r12=r2+-mforty2] 481 @OC@.b [r12=r2-forty2] 482 @OC@.b [r12=r2-mforty2] 483 @OC@.b [r12=r2+externalsym] 484 485 @OC@.w [r12=r2+0] 486 @OC@.w [r12=r2+1] 487 @OC@.w [r12=r2+127] 488 @OC@.w [r12=r2+128] 489 @OC@.w [r12=r2+-1] 490 @OC@.w [r12=r2-1] 491 @OC@.w [r12=r2+-127] 492 @OC@.w [r12=r2+-128] 493 @OC@.w [r12=r2+-129] 494 @OC@.w [r12=r2-127] 495 @OC@.w [r12=r2-128] 496 @OC@.w [r12=r2-129] 497 @OC@.w [r12=r2+255] 498 @OC@.w [r12=r2+-255] 499 @OC@.w [r12=r2-255] 500 @OC@.w [r12=r2+256] 501 @OC@.w [r12=r2-256] 502 @OC@.w [r12=r2+-8856] 503 @OC@.w [r12=r2-8856] 504 @OC@.w [r12=r2+8856] 505 506 @OC@.w [r12=r2+42] 507 @OC@.w [r12=r2+-42] 508 @OC@.w [r12=r2-42] 509 @OC@.w [r12=r2+forty2] 510 @OC@.w [r12=r2+mforty2] 511 @OC@.w [r12=r2+-forty2] 512 @OC@.w [r12=r2-forty2] 513 @OC@.w [r12=r2+-mforty2] 514 515 @OC@.w [r12=r2+three2767] 516 @OC@.w [r12=r2+three2767+1] 517 @OC@.w [r12=r2+three2767+2] 518 @OC@.w [r12=r2+-three2767] 519 @OC@.w [r12=r2+-(three2767+1)] 520 @OC@.w [r12=r2+-(three2767+2)] 521 @OC@.w [r12=r2-three2767] 522 @OC@.w [r12=r2-(three2767+1)] 523 @OC@.w [r12=r2-(three2767+2)] 524 @OC@.w [r12=r2+six5535] 525 @OC@.w [r12=r2+externalsym] 526 527 @OC@.d [r12=r2+0] 528 @OC@.d [r12=r2+1] 529 @OC@.d [r12=r2+127] 530 @OC@.d [r12=r2+128] 531 @OC@.d [r12=r2+-1] 532 @OC@.d [r12=r2-1] 533 @OC@.d [r12=r2+-127] 534 @OC@.d [r12=r2+-128] 535 @OC@.d [r12=r2-127] 536 @OC@.d [r12=r2-128] 537 @OC@.d [r12=r2+255] 538 @OC@.d [r12=r2+-255] 539 @OC@.d [r12=r2-255] 540 @OC@.d [r12=r2+256] 541 @OC@.d [r12=r2-256] 542 @OC@.d [r12=r2-8856] 543 @OC@.d [r12=r2+-256] 544 @OC@.d [r12=r2+-8856] 545 @OC@.d [r12=r2+8856] 546 547 @OC@.d [r12=r2+2781868] 548 @OC@.d [r12=r2+-2701867] 549 550 @OC@.d [r12=r2+0x9ec0ceac] 551 @OC@.d [r12=r2+-0x7ec0cead] 552 @OC@.d [r12=r2-0x7ec0cead] 553 @OC@.d [r12=r2+const_int_m32] 554 @OC@.d [r12=r2+const_int_32] 555 556 @OC@.d [r12=r2+42] 557 @OC@.d [r12=r2-42] 558 @OC@.d [r12=r2+-42] 559 @OC@.d [r12=r2+forty2] 560 @OC@.d [r12=r2+mforty2] 561 @OC@.d [r12=r2-forty2] 562 @OC@.d [r12=r2-mforty2] 563 @OC@.d [r12=r2+-forty2] 564 @OC@.d [r12=r2+-mforty2] 565 566 @OC@.d [r12=r2+three2767] 567 @OC@.d [r12=r2+three2767+1] 568 @OC@.d [r12=r2+three2767+2] 569 @OC@.d [r12=r2+-three2767] 570 @OC@.d [r12=r2+-(three2767+1)] 571 @OC@.d [r12=r2+-(three2767+2)] 572 @OC@.d [r12=r2-three2767] 573 @OC@.d [r12=r2-(three2767+1)] 574 @OC@.d [r12=r2-(three2767+2)] 575 @OC@.d [r12=r2+six5535] 576 @OC@.d [r12=r2+six5535+1] 577 @OC@.d [r12=r2+two701867] 578 @OC@.d [r12=r2+-two701867] 579 @OC@.d [r12=r2-two701867] 580 581 @OC@.d [r12=r2+externalsym] 582 583 @OC@ [r12=r2+0] 584 @OC@ [r12=r2+1] 585 @OC@ [r12=r2+127] 586 @OC@ [r12=r2+128] 587 @OC@ [r12=r2+-1] 588 @OC@ [r12=r2-1] 589 @OC@ [r12=r2+-127] 590 @OC@ [r12=r2+-128] 591 @OC@ [r12=r2-127] 592 @OC@ [r12=r2-128] 593 @OC@ [r12=r2+255] 594 @OC@ [r12=r2+-255] 595 @OC@ [r12=r2-255] 596 @OC@ [r12=r2+256] 597 @OC@ [r12=r2-256] 598 @OC@ [r12=r2-8856] 599 @OC@ [r12=r2+-256] 600 @OC@ [r12=r2+-8856] 601 @OC@ [r12=r2+8856] 602 603 @OC@ [r12=r2+2781868] 604 @OC@ [r12=r2+-2701867] 605 606 @OC@ [r12=r2+0x9ec0ceac] 607 @OC@ [r12=r2+-0x7ec0cead] 608 @OC@ [r12=r2-0x7ec0cead] 609 @OC@ [r12=r2+const_int_m32] 610 @OC@ [r12=r2+const_int_32] 611 612 @OC@ [r12=r2+42] 613 @OC@ [r12=r2-42] 614 @OC@ [r12=r2+-42] 615 @OC@ [r12=r2+forty2] 616 @OC@ [r12=r2+mforty2] 617 @OC@ [r12=r2-forty2] 618 @OC@ [r12=r2-mforty2] 619 @OC@ [r12=r2+-forty2] 620 @OC@ [r12=r2+-mforty2] 621 622 @OC@ [r12=r2+three2767] 623 @OC@ [r12=r2+three2767+1] 624 @OC@ [r12=r2+three2767+2] 625 @OC@ [r12=r2+-three2767] 626 @OC@ [r12=r2+-(three2767+1)] 627 @OC@ [r12=r2+-(three2767+2)] 628 @OC@ [r12=r2-three2767] 629 @OC@ [r12=r2-(three2767+1)] 630 @OC@ [r12=r2-(three2767+2)] 631 @OC@ [r12=r2+six5535] 632 @OC@ [r12=r2+six5535+1] 633 @OC@ [r12=r2+two701867] 634 @OC@ [r12=r2+-two701867] 635 @OC@ [r12=r2-two701867] 636 637 @OC@ [r12=r2+externalsym] 638 639 ;;;;;;;;;;;;;;;;;;; 640 ; 641 ; [[r(+)]],r 642 643 @OC@.b [[r3]] 644 @OC@.w [[r2]] 645 @OC@.d [[r3]] 646 647 @OC@ [[r2]] 648 @OC@ [[r3]] 649 650 @OC@.b [[r9+]] 651 @OC@.w [[r3+]] 652 @OC@.d [[r1+]] 653 654 @OC@ [[r3+]] 655 @OC@ [[r1+]] 656 657 @OC@.b [externalsym] 658 @OC@.w [externalsym] 659 @OC@.d [externalsym] 660 661 @OC@ [externalsym] 662 663 @OC@.b [notstart] 664 @OC@.w [notstart] 665 @OC@.d [notstart] 666 667 @OC@ [notstart] 668 669 end: 670