1# license:BSD-3-Clause 2# copyright-holders:Olivier Galibert 3macro bxx_any %cond 4 prefetch_start(); 5 TMP2 = read16i(TMP1); 6 if(%cond) 7 prefetch_switch(TMP1, TMP2); 8 prefetch_done(); 9 10macro bxx_8 %cond 11 TMP1 = PC + int8_t(IR[0]); 12 bxx_any %cond 13 14macro bxx_16 %cond 15 TMP1 = PC + int16_t(IR[1]); 16 bxx_any %cond 17 18macro bset %bit 19 TMP1 |= 1 << ((%bit) & 7); 20 21macro bnot %bit 22 TMP1 ^= 1 << ((%bit) & 7); 23 24macro bclr %bit 25 TMP1 &= ~(1 << ((%bit) & 7)); 26 27macro btst %bit 28 if(TMP1 & (1 << ((%bit) & 7))) 29 CCR &= ~F_Z; 30 else 31 CCR |= F_Z; 32 33macro bor %bit 34 if(TMP1 & (1 << ((%bit) & 7))) 35 CCR |= F_C; 36 37macro bior %bit 38 if(!(TMP1 & (1 << ((%bit) & 7)))) 39 CCR |= F_C; 40 41macro bxor %bit 42 if(TMP1 & (1 << ((%bit) & 7))) 43 CCR ^= F_C; 44 45macro bixor %bit 46 if(!(TMP1 & (1 << ((%bit) & 7)))) 47 CCR ^= F_C; 48 49macro band %bit 50 if(!(TMP1 & (1 << ((%bit) & 7)))) 51 CCR &= ~F_C; 52 53macro biand %bit 54 if(TMP1 & (1 << ((%bit) & 7))) 55 CCR &= ~F_C; 56 57macro bld %bit 58 if(TMP1 & (1 << ((%bit) & 7))) 59 CCR |= F_C; 60 else 61 CCR &= ~F_C; 62 63macro bild %bit 64 if(!(TMP1 & (1 << ((%bit) & 7)))) 65 CCR |= F_C; 66 else 67 CCR &= ~F_C; 68 69macro bst %bit 70 if(CCR & F_C) 71 TMP1 |= 1 << ((%bit) & 7); 72 else 73 TMP1 &= ~(1 << ((%bit) & 7)); 74 75macro bist %bit 76 if(!(CCR & F_C)) 77 TMP1 |= 1 << ((%bit) & 7); 78 else 79 TMP1 &= ~(1 << ((%bit) & 7)); 80 81macro jsr16 %opc %spreg 82 prefetch_start(); 83 %spreg = r16_r(7) - 2; 84 r16_w(7, %spreg); 85 write16(%spreg, %opc); 86 prefetch_done(); 87 88macro jsr32 %opc %spreg 89 prefetch_start(); 90 if(mode_advanced) { 91 %spreg = r32_r(7) - 4; 92 r32_w(7, %spreg); 93 write16(%spreg, %opc >> 16); 94 write16(%spreg+2, %opc); 95 } else { 96 %spreg = r32_r(7) - 2; 97 r32_w(7, %spreg); 98 write16(%spreg, %opc); 99 } 100 prefetch_done(); 101 10210000 reset 103 CCR |= F_I; 104 EXR = EXR_I | EXR_NC; 105 if(mode_advanced) { 106 IR[0] = read16i(0); 107 IR[1] = read16i(2); 108 PC = (IR[0] << 16) | IR[1]; 109 } else { 110 PC = read16i(0); 111 } 112 update_irq_filter(); 113 prefetch_noirq(); 114 11510001 irq o 116 internal(1); 117 TMP1 = r16_r(7) - 2; 118 r16_w(7, TMP1); 119 write16(TMP1, NPC); 120 TMP1 = r16_r(7) - 2; 121 r16_w(7, TMP1); 122 write16(TMP1, (CCR << 8) | ((PC >> 16) & 0xff)); 123 PC = read16i(2*taken_irq_vector); 124 internal(1); 125 irq_setup(); 126 update_irq_filter(); 127 interrupt_taken(); 128 prefetch_noirq(); 129 13010001 irq h 131 internal(1); 132 TMP1 = r32_r(7) - 2; 133 r32_w(7, TMP1); 134 write16(TMP1, NPC); 135 TMP1 = r32_r(7) - 2; 136 r32_w(7, TMP1); 137 write16(TMP1, (CCR << 8) | ((NPC >> 16) & 0xff)); 138 if(exr_in_stack()) { 139 TMP1 = r32_r(7) - 2; 140 r32_w(7, TMP1); 141 write16(TMP1, EXR << 8); 142 } 143 if(mode_advanced) { 144 IR[0] = read16i(4*taken_irq_vector); 145 IR[1] = read16i(4*taken_irq_vector+2); 146 PC = (IR[0] << 16) | IR[1]; 147 } else { 148 PC = read16i(2*taken_irq_vector); 149 } 150 internal(1); 151 irq_setup(); 152 update_irq_filter(); 153 interrupt_taken(); 154 prefetch_noirq(); 155 15610002 trace s20 157 internal(1); 158 TMP1 = r32_r(7) - 2; 159 r32_w(7, TMP1); 160 write16(TMP1, NPC); 161 TMP1 = r32_r(7) - 2; 162 r32_w(7, TMP1); 163 write16(TMP1, (CCR << 8) | ((NPC >> 16) & 0xff)); 164 TMP1 = r32_r(7) - 2; 165 r32_w(7, TMP1); 166 write16(TMP1, EXR << 8); 167 taken_irq_vector = trace_setup(); 168 if(mode_advanced) { 169 IR[0] = read16i(4*taken_irq_vector); 170 IR[1] = read16i(4*taken_irq_vector+2); 171 PC = (IR[0] << 16) | IR[1]; 172 } else { 173 PC = read16i(2*taken_irq_vector); 174 } 175 internal(1); 176 prefetch_noirq(); 177 17810003 dma 179 if(current_dma->count == 1) 180 dma_device->count_last(current_dma->id); 181 if(current_dma->mode_16) { 182 TMP1 = read16(current_dma->source); 183 write16(current_dma->dest, TMP1); 184 } else { 185 TMP1 = read8(current_dma->source); 186 write8(current_dma->dest, TMP1); 187 } 188 current_dma->source += current_dma->incs; 189 current_dma->dest += current_dma->incd; 190 current_dma->count--; 191 if(!current_dma->autoreq) 192 current_dma->suspended = true; 193 if(!current_dma->count) { 194 uint8_t id = current_dma->id; 195 current_dma = nullptr; 196 dma_device->count_done(id); 197 } 198 prefetch_done(); 199 20010004 dtc s20 201 if(current_dtc->sra & 0x01000000) { 202 TMP1 = read16(current_dtc->sra & 0xffffff); 203 write16(current_dtc->dar & 0xffffff, TMP1); 204 } else { 205 TMP1 = read8(current_dtc->sra & 0xffffff); 206 write8(current_dtc->dar & 0xffffff, TMP1); 207 } 208 current_dtc->sra = (current_dtc->sra & 0xff000000) | ((current_dtc->sra + current_dtc->incs) & 0x00ffffff); 209 current_dtc->dar = (current_dtc->dar & 0xff000000) | ((current_dtc->dar + current_dtc->incd) & 0x00ffffff); 210 current_dtc->count--; 211 if(!current_dtc->count) { 212 uint8_t id = current_dtc->id; 213 current_dtc = nullptr; 214 dtc_device->count_done(id); 215 } 216 prefetch_done(); 217 21810005 dtc_vector s20 219 TMP1 = dtc_device->get_waiting_vector(); 220 if(TMP1 < h8_dtc_device::DTC_CHAINED) { 221 TMP2 = dtc_device->get_vector_address(TMP1); 222 TMP2 = read16(TMP2); 223 TMP2 |= 0xff0000; 224 } else { 225 TMP1 -= h8_dtc_device::DTC_CHAINED; 226 TMP2 = dtc_device->get_object(TMP1)->base + 12; 227 } 228 229 dtc_device->get_object(TMP1)->base = TMP2; 230 dtc_device->get_object(TMP1)->sra = read16(TMP2) << 16; 231 dtc_device->get_object(TMP1)->sra |= read16(TMP2+2); 232 dtc_device->get_object(TMP1)->dar = read16(TMP2+4) << 16; 233 dtc_device->get_object(TMP1)->dar |= read16(TMP2+6); 234 dtc_device->get_object(TMP1)->cr = read16(TMP2+8) << 16; 235 dtc_device->get_object(TMP1)->cr |= read16(TMP2+10); 236 dtc_device->vector_done(TMP1); 237 prefetch_done(); 238 23910006 dtc_writeback s20 240 TMP1 = dtc_device->get_waiting_writeback(); 241 TMP2 = dtc_device->get_object(TMP1)->base; 242 write16(TMP2, dtc_device->get_object(TMP1)->sra >> 16); 243 write16(TMP2+2, dtc_device->get_object(TMP1)->sra); 244 write16(TMP2+4, dtc_device->get_object(TMP1)->dar >> 16); 245 write16(TMP2+6, dtc_device->get_object(TMP1)->dar); 246 write16(TMP2+8, dtc_device->get_object(TMP1)->cr >> 16); 247 write16(TMP2+10, dtc_device->get_object(TMP1)->cr); 248 dtc_device->writeback_done(TMP1); 249 prefetch_done(); 250 2510000 ffff 0 nop - - 252 prefetch(); 253 25401006900 ffffff88 0 mov.l r32ih r32l h 255 prefetch_start(); 256 TMP2 = r32_r(IR[1] >> 4); 257 TMP1 = read16(TMP2) << 16; 258 TMP1 |= read16(TMP2+2); 259 set_nzv32(TMP1); 260 r32_w(IR[1], TMP1); 261 prefetch_done(); 262 26301006980 ffffff88 0 mov.l r32l r32ih h 264 prefetch_start(); 265 TMP2 = r32_r(IR[1] >> 4); 266 TMP1 = r32_r(IR[1]); 267 set_nzv32(TMP1); 268 write16(TMP2, TMP1 >> 16); 269 write16(TMP2+2, TMP1); 270 prefetch_done(); 271 27201006b00 fffffff8 0 mov.l abs16 r32l h 273 prefetch_start(); 274 TMP2 = int16_t(IR[2]); 275 TMP1 = read16(TMP2) << 16; 276 TMP1 |= read16(TMP2+2); 277 set_nzv32(TMP1); 278 r32_w(IR[1], TMP1); 279 prefetch_done(); 280 28101006b20 fffffff8 0 mov.l abs32 r32l h 282 prefetch_start(); 283 TMP2 = (IR[2] << 16) | IR[3]; 284 TMP1 = read16(TMP2) << 16; 285 TMP1 |= read16(TMP2+2); 286 set_nzv32(TMP1); 287 r32_w(IR[1], TMP1); 288 prefetch_done(); 289 29001006b80 fffffff8 0 mov.l r32l abs16 h 291 prefetch_start(); 292 TMP1 = r32_r(IR[1]); 293 TMP2 = int16_t(IR[2]); 294 set_nzv32(TMP1); 295 write16(TMP2, TMP1 >> 16); 296 write16(TMP2+2, TMP1); 297 prefetch_done(); 298 29901006ba0 fffffff8 0 mov.l r32l abs32 h 300 prefetch_start(); 301 TMP1 = r32_r(IR[1]); 302 TMP2 = (IR[2] << 16) | IR[3]; 303 set_nzv32(TMP1); 304 write16(TMP2, TMP1 >> 16); 305 write16(TMP2+2, TMP1); 306 prefetch_done(); 307 30801006d00 ffffff88 0 mov.l r32ph r32l h 309 prefetch_start(); 310 internal(1); 311 TMP2 = r32_r(IR[1] >> 4); 312 TMP1 = read16(TMP2) << 16; 313 TMP1 |= read16(TMP2+2); 314 TMP2 += 4; 315 r32_w(IR[1] >> 4, TMP2); 316 set_nzv32(TMP1); 317 r32_w(IR[1], TMP1); 318 prefetch_done(); 319 32001006d80 ffffff88 0 mov.l r32l pr32h h 321 prefetch_start(); 322 internal(1); 323 TMP1 = r32_r(IR[1]); 324 TMP2 = r32_r(IR[1] >> 4); 325 TMP2 -= 4; 326 r32_w(IR[1] >> 4, TMP2); 327 write16(TMP2, TMP1 >> 16); 328 write16(TMP2+2, TMP1); 329 set_nzv32(TMP1); 330 prefetch_done(); 331 33201006f00 ffffff88 0 mov.l r32d16h r32l h 333 prefetch_start(); 334 TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]); 335 TMP2 = read16(TMP1) << 16; 336 TMP2 |= read16(TMP1+2); 337 set_nzv32(TMP2); 338 r32_w(IR[1], TMP2); 339 prefetch_done(); 340 34101006f80 ffffff88 0 mov.l r32l r32d16h h 342 prefetch_start(); 343 TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]); 344 TMP2 = r32_r(IR[1]); 345 set_nzv32(TMP2); 346 write16(TMP1, TMP2 >> 16); 347 write16(TMP1+2, TMP2); 348 prefetch_done(); 349 350010078006b20 ffffff0ffff8 0 mov.l r32d32hh r32l h 351 prefetch_start(); 352 TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4]; 353 TMP2 = read16(TMP1) << 16; 354 TMP2 |= read16(TMP1+2); 355 set_nzv32(TMP2); 356 r32_w(IR[2], TMP2); 357 prefetch_done(); 358 359010078006ba0 ffffff0ffff8 0 mov.l r32l r32d32hh h 360 prefetch_start(); 361 TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4]; 362 TMP2 = r32_r(IR[2]); 363 set_nzv32(TMP2); 364 write16(TMP1, TMP2 >> 16); 365 write16(TMP1+2, TMP2); 366 prefetch_done(); 367 36801106d71 fffffff9 0 ldm.l spp r32n2l s20 369 prefetch_start(); 370 internal(1); 371 TMP1 = r32_r(7); 372 TMP2 = read16(TMP1) << 16; 373 TMP2 |= read16(TMP1+2); 374 r32_w(IR[1], TMP2); 375 if((IR[1] & 7) == 7) 376 TMP1 = TMP2; 377 TMP1 += 4; 378 r32_w(7, TMP1); 379 TMP2 = read16(TMP1) << 16; 380 TMP2 |= read16(TMP1+2); 381 r32_w(IR[1]-1, TMP2); 382 TMP1 += 4; 383 r32_w(7, TMP1); 384 prefetch_done(); 385 38601106df0 fffffff9 0 stm.l r32n2l psp s20 387 prefetch_start(); 388 internal(1); 389 TMP1 = r32_r(7); 390 TMP1 -= 4; 391 r32_w(7, TMP1); 392 TMP2 = r32_r(IR[1]); 393 write16(TMP1, TMP2 >> 16); 394 write16(TMP1+2, TMP2); 395 TMP1 -= 4; 396 r32_w(7, TMP1); 397 TMP2 = r32_r(IR[1]+1); 398 write16(TMP1, TMP2 >> 16); 399 write16(TMP1+2, TMP2); 400 prefetch_done(); 401 40201206d72 fffffffb 0 ldm.l spp r32n3l s20 403 prefetch_start(); 404 internal(1); 405 TMP1 = r32_r(7); 406 TMP2 = read16(TMP1) << 16; 407 TMP2 |= read16(TMP1+2); 408 r32_w(IR[1], TMP2); 409 TMP1 += 4; 410 r32_w(7, TMP1); 411 TMP2 = read16(TMP1) << 16; 412 TMP2 |= read16(TMP1+2); 413 r32_w(IR[1]-1, TMP2); 414 TMP1 += 4; 415 r32_w(7, TMP1); 416 TMP2 = read16(TMP1) << 16; 417 TMP2 |= read16(TMP1+2); 418 r32_w(IR[1]-2, TMP2); 419 TMP1 += 4; 420 r32_w(7, TMP1); 421 prefetch_done(); 422 42301206df0 fffffffb 0 stm.l r32n3l psp s20 424 prefetch_start(); 425 internal(1); 426 TMP1 = r32_r(7); 427 TMP1 -= 4; 428 r32_w(7, TMP1); 429 TMP2 = r32_r(IR[1]); 430 write16(TMP1, TMP2 >> 16); 431 write16(TMP1+2, TMP2); 432 TMP1 -= 4; 433 r32_w(7, TMP1); 434 TMP2 = r32_r(IR[1]+1); 435 write16(TMP1, TMP2 >> 16); 436 write16(TMP1+2, TMP2); 437 TMP1 -= 4; 438 r32_w(7, TMP1); 439 TMP2 = r32_r(IR[1]+2); 440 write16(TMP1, TMP2 >> 16); 441 write16(TMP1+2, TMP2); 442 prefetch_done(); 443 44401306d73 fffffffb 0 ldm.l spp r32n4l s20 445 prefetch_start(); 446 internal(1); 447 TMP1 = r32_r(7); 448 TMP2 = read16(TMP1) << 16; 449 TMP2 |= read16(TMP1+2); 450 r32_w(IR[1], TMP2); 451 if((IR[1] & 7) == 7) 452 TMP1 = TMP2; 453 TMP1 += 4; 454 r32_w(7, TMP1); 455 TMP2 = read16(TMP1) << 16; 456 TMP2 |= read16(TMP1+2); 457 r32_w(IR[1]-1, TMP2); 458 TMP1 += 4; 459 r32_w(7, TMP1); 460 TMP2 = read16(TMP1) << 16; 461 TMP2 |= read16(TMP1+2); 462 r32_w(IR[1]-2, TMP2); 463 TMP1 += 4; 464 r32_w(7, TMP1); 465 TMP2 = read16(TMP1) << 16; 466 TMP2 |= read16(TMP1+2); 467 r32_w(IR[1]-3, TMP2); 468 TMP1 += 4; 469 r32_w(7, TMP1); 470 prefetch_done(); 471 47201306df0 fffffffb 0 stm.l r32n4l psp s20 473 prefetch_start(); 474 internal(1); 475 TMP1 = r32_r(7); 476 TMP1 -= 4; 477 r32_w(7, TMP1); 478 TMP2 = r32_r(IR[1]); 479 write16(TMP1, TMP2 >> 16); 480 write16(TMP1+2, TMP2); 481 TMP1 -= 4; 482 r32_w(7, TMP1); 483 TMP2 = r32_r(IR[1]+1); 484 write16(TMP1, TMP2 >> 16); 485 write16(TMP1+2, TMP2); 486 TMP1 -= 4; 487 r32_w(7, TMP1); 488 TMP2 = r32_r(IR[1]+2); 489 write16(TMP1, TMP2 >> 16); 490 write16(TMP1+2, TMP2); 491 TMP1 -= 4; 492 r32_w(7, TMP1); 493 TMP2 = r32_r(IR[1]+3); 494 write16(TMP1, TMP2 >> 16); 495 write16(TMP1+2, TMP2); 496 prefetch_done(); 497 49801406900 ffffff8f 0 ldc.w r32ih ccr h 499 prefetch_start(); 500 TMP1 = r32_r(IR[1] >> 4); 501 CCR = read16(TMP1) >> 8; 502 update_irq_filter(); 503 prefetch_done_noirq(); 504 50501406980 ffffff8f 0 stc.w ccr r32ih h 506 prefetch_start(); 507 TMP1 = r32_r(IR[1] >> 4); 508 write16(TMP1, (CCR << 8) | CCR); 509 prefetch_done(); 510 51101406b00 ffffffff 0 ldc.w abs16 ccr h 512 prefetch_start(); 513 TMP1 = int16_t(IR[2]); 514 CCR = read16(TMP1) >> 8; 515 update_irq_filter(); 516 prefetch_done_noirq(); 517 51801406b20 ffffffff 0 ldc.w abs32 ccr h 519 prefetch_start(); 520 TMP1 = (IR[2] << 16) | IR[3]; 521 CCR = read16(TMP1) >> 8; 522 update_irq_filter(); 523 prefetch_done_noirq(); 524 52501406b80 ffffffff 0 stc.w ccr abs16 h 526 prefetch_start(); 527 TMP1 = int16_t(IR[2]); 528 write16(TMP1, (CCR << 8) | CCR); 529 prefetch_done(); 530 53101406ba0 ffffffff 0 stc.w ccr abs32 h 532 prefetch_start(); 533 TMP1 = (IR[2] << 16) | IR[3]; 534 write16(TMP1, (CCR << 8) | CCR); 535 prefetch_done(); 536 53701406d00 ffffff8f 0 ldc.w r32ph ccr h 538 prefetch_start(); 539 internal(1); 540 TMP1 = r32_r(IR[1] >> 4); 541 r32_w(IR[1] >> 4, TMP1+2); 542 CCR = read16(TMP1) >> 8; 543 update_irq_filter(); 544 prefetch_done_noirq(); 545 54601406d80 ffffff8f 0 stc.w ccr pr32h h 547 prefetch_start(); 548 internal(1); 549 TMP1 = r32_r(IR[1] >> 4) - 2; 550 r32_w(IR[1] >> 4, TMP1); 551 write16(TMP1, (CCR << 8) | CCR); 552 prefetch_done(); 553 55401406f00 ffffff8f 0 ldc.w r32d16h ccr h 555 prefetch_start(); 556 TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]); 557 CCR = read16(TMP1) >> 8; 558 update_irq_filter(); 559 prefetch_done_noirq(); 560 56101406f80 ffffff8f 0 stc.w ccr r32d16h h 562 prefetch_start(); 563 TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]); 564 write16(TMP1, (CCR << 8) | CCR); 565 prefetch_done(); 566 567014078006b20 ffffff8fffff 0 ldc.w r32d32hh ccr h 568 prefetch_start(); 569 TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4]; 570 CCR = read16(TMP1) >> 8; 571 update_irq_filter(); 572 prefetch_done_noirq(); 573 574014078806ba0 ffffff8fffff 0 stc.w ccr r32d32hh h 575 prefetch_start(); 576 TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4]; 577 write16(TMP1, (CCR << 8) | CCR); 578 prefetch_done(); 579 58001410400 ffffff00 0 orc imm8 exr s20 581 EXR |= IR[1]; 582 update_irq_filter(); 583 prefetch_noirq(); 584 58501410500 ffffff00 0 xorc imm8 exr s20 586 EXR ^= IR[1] & ~EXR_NC; 587 update_irq_filter(); 588 prefetch_noirq(); 589 59001410600 ffffff00 0 andc imm8 exr s20 591 EXR &= IR[1] | EXR_NC; 592 update_irq_filter(); 593 prefetch_noirq(); 594 59501410700 ffffff00 0 ldc imm8 exr s20 596 EXR = IR[1] | EXR_NC; 597 update_irq_filter(); 598 prefetch_noirq(); 599 60001416900 ffffff8f 0 ldc.w r32ih exr s20 601 prefetch_start(); 602 TMP1 = r32_r(IR[1] >> 4); 603 EXR = (read16(TMP1) >> 8) | EXR_NC; 604 update_irq_filter(); 605 prefetch_done_noirq(); 606 60701416980 ffffff8f 0 stc.w exr r32ih s20 608 prefetch_start(); 609 TMP1 = r32_r(IR[1] >> 4); 610 write16(TMP1, (EXR << 8) | EXR); 611 prefetch_done(); 612 61301416b00 ffffffff 0 ldc.w abs16 exr s20 614 prefetch_start(); 615 TMP1 = int16_t(IR[2]); 616 EXR = (read16(TMP1) >> 8) | EXR_NC; 617 update_irq_filter(); 618 prefetch_done_noirq(); 619 62001416b20 ffffffff 0 ldc.w abs32 exr s20 621 prefetch_start(); 622 TMP1 = (IR[2] << 16) | IR[3]; 623 EXR = (read16(TMP1) >> 8) | EXR_NC; 624 update_irq_filter(); 625 prefetch_done_noirq(); 626 62701416b80 ffffffff 0 stc.w exr abs16 s20 628 prefetch_start(); 629 TMP1 = int16_t(IR[2]); 630 write16(TMP1, (EXR << 8) | EXR); 631 prefetch_done(); 632 63301416ba0 ffffffff 0 stc.w exr abs32 s20 634 prefetch_start(); 635 TMP1 = (IR[2] << 16) | IR[3]; 636 write16(TMP1, (EXR << 8) | EXR); 637 prefetch_done(); 638 63901416d00 ffffff8f 0 ldc.w r32ph exr s20 640 prefetch_start(); 641 internal(1); 642 TMP1 = r32_r(IR[1] >> 4); 643 r32_w(IR[1] >> 4, TMP1+2); 644 EXR = (read16(TMP1) >> 8) | EXR_NC; 645 update_irq_filter(); 646 prefetch_done_noirq(); 647 64801416d80 ffffff8f 0 stc.w exr pr32h s20 649 prefetch_start(); 650 internal(1); 651 TMP1 = r32_r(IR[1] >> 4) - 2; 652 r32_w(IR[1] >> 4, TMP1); 653 write16(TMP1, (EXR << 8) | EXR); 654 prefetch_done(); 655 65601416f00 ffffff8f 0 ldc.w r32d16h exr s20 657 prefetch_start(); 658 TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]); 659 EXR = (read16(TMP1) >> 8) | EXR_NC; 660 update_irq_filter(); 661 prefetch_done_noirq(); 662 66301416f80 ffffff8f 0 stc.w exr r32d16h s20 664 prefetch_start(); 665 TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]); 666 write16(TMP1, (EXR << 8) | EXR); 667 prefetch_done(); 668 669014178006b20 ffffff8fffff 0 ldc.w r32d32hh exr s20 670 prefetch_start(); 671 TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4]; 672 EXR = (read16(TMP1) >> 8) | EXR_NC; 673 update_irq_filter(); 674 prefetch_done_noirq(); 675 676014178806ba0 ffffff8fffff 0 stc.w exr r32d32hh s20 677 prefetch_start(); 678 TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4]; 679 write16(TMP1, (EXR << 8) | EXR); 680 prefetch_done(); 681 68201606d00 ffffff88 0 mac r32ph r32pl s26 683 prefetch_start(); 684 TMP1 = read16(r32_r(IR[1])); 685 r32_w(IR[1], r32_r(IR[1]) + 2); 686 TMP2 = read16(r32_r(IR[1] >> 4)); 687 r32_w(IR[1] >> 4, r32_r(IR[1] >> 4) + 2); 688 MAC += int16_t(TMP1)*int16_t(TMP2); 689 MACF &= ~(F_Z|F_N); 690 if(MAC) 691 MACF |= F_Z; 692 else if(MAC < 0) 693 MACF |= F_N; 694 if(mac_saturating) { 695 if(MAC < -0x80000000LL) { 696 MAC = -0x80000000LL; 697 MACF |= F_V; 698 } else if(MAC > 0x7fffffffLL) { 699 MAC = 0x7fffffffLL; 700 MACF |= F_V; 701 } 702 } else { 703 if(MAC < -0x20000000000LL) { 704 MAC = -0x20000000000LL; 705 MACF |= F_V; 706 } else if(MAC > 0x1ffffffffffLL) { 707 MAC = 0x1ffffffffffLL; 708 MACF |= F_V; 709 } 710 } 711 prefetch_done(); 712 7130180 ffff 0 sleep - - 714 prefetch_start(); 715 while(!irq_vector) { 716 eat-all-cycles; 717 } 718 prefetch_done(); 719 72001a0 ffff 0 clrmac - - s26 721 prefetch_start(); 722 internal(1); 723 MAC = 0; 724 MACF &= ~F_V; 725 prefetch_done(); 726 72701c05000 ffffff00 0 mulxs.b r8h r16l h 728 prefetch_start(); 729 TMP1 = int8_t(r16_r(IR[1])) * int8_t(r8_r(IR[1] >> 4)); 730 set_nz16(TMP1); 731 r16_w(IR[1], TMP1); 732 internal(2); 733 prefetch_done(); 734 73501c05200 ffffff08 0 mulxs.w r16h r32l h 736 prefetch_start(); 737 TMP1 = int16_t(r32_r(IR[1])) * int16_t(r16_r(IR[1] >> 4)); 738 set_nz32(TMP1); 739 r32_w(IR[1], TMP1); 740 internal(3); 741 prefetch_done(); 742 74301d05100 ffffff00 0 divxs.b r8h r16l h 744 prefetch_start(); 745 internal(11); 746 TMP1 = int16_t(r16_r(IR[1])); 747 TMP2 = int8_t(r8_r(IR[1] >> 4)); 748 CCR &= ~(F_Z|F_N); 749 if(!TMP2) { 750 CCR |= F_Z; 751 } else { 752 // Conditions: 753 // p = q*d + r 754 // abs(r) < abs(d) 755 // d and r are same sign or r=0 756 // p = +20, d = +3 -> q = 6, r = 2 757 // p = +20, d = -3 -> q = -6, r = -2 758 // p = -20, d = +3 -> q = -7, r = 1 759 // p = -20, d = -3 -> q = 7, r = -1 760 int q, r; 761 if(TMP2 < 0) { 762 if(TMP1 < 0) { // - - 763 q = (-TMP1) / (-TMP2); 764 r = (-TMP1) % (-TMP2); 765 if(r) { 766 r = r + TMP2; 767 q++; 768 } 769 } else { // + - 770 CCR |= F_N; 771 q = -(TMP1 / (-TMP2)); 772 r = -(TMP1 % (-TMP2)); 773 } 774 } else { 775 if(TMP1 < 0) { // - + 776 CCR |= F_N; 777 q = -((-TMP1) / TMP2); 778 r = (-TMP1) % TMP2; 779 if(r) { 780 r = TMP2 - r; 781 q--; 782 } 783 } else { // + + 784 q = TMP1 / TMP2; 785 r = TMP1 % TMP2; 786 } 787 } 788 r16_w(IR[1], (q & 0xff) | ((r & 0xff) << 8)); 789 } 790 prefetch_done(); 791 79201d05300 ffffff08 0 divxs.w r16h r32l h 793 prefetch_start(); 794 internal(19); 795 TMP1 = r32_r(IR[1]); 796 TMP2 = int16_t(r16_r(IR[1] >> 4)); 797 CCR &= ~(F_Z|F_N); 798 if(!TMP2) { 799 CCR |= F_Z; 800 } else { 801 // Conditions: 802 // p = q*d + r 803 // abs(r) < abs(d) 804 // d and r are same sign or r=0 805 // p = +20, d = +3 -> q = 6, r = 2 806 // p = +20, d = -3 -> q = -6, r = -2 807 // p = -20, d = +3 -> q = -7, r = 1 808 // p = -20, d = -3 -> q = 7, r = -1 809 int q, r; 810 if(TMP2 < 0) { 811 if(TMP1 < 0) { // - - 812 q = (-TMP1) / (-TMP2); 813 r = (-TMP1) % (-TMP2); 814 if(r) { 815 r = r + TMP2; 816 q++; 817 } 818 } else { // + - 819 CCR |= F_N; 820 q = -(TMP1 / (-TMP2)); 821 r = -(TMP1 % (-TMP2)); 822 } 823 } else { 824 if(TMP1 < 0) { // - + 825 CCR |= F_N; 826 q = -((-TMP1) / TMP2); 827 r = (-TMP1) % TMP2; 828 if(r) { 829 r = TMP2 - r; 830 q--; 831 } 832 } else { // + + 833 q = TMP1 / TMP2; 834 r = TMP1 % TMP2; 835 } 836 } 837 r32_w(IR[1], (q & 0xffff) | ((r & 0xffff) << 16)); 838 } 839 prefetch_done(); 840 84101e07b0c ffffffaf 0 tas r32ih - s20 842 prefetch_start(); 843 TMP1 = r32_r(IR[1] >> 4); 844 TMP2 = read8(TMP1); 845 set_nzv8(TMP2); 846 write8(TMP1, TMP2 | 0x80); 847 prefetch_done(); 848 84901f06400 ffffff88 0 or.l r32h r32l h 850 TMP1 = r32_r(IR[1] >> 4) | r32_r(IR[1]); 851 set_nzv32(TMP1); 852 r32_w(IR[1], TMP1); 853 prefetch(); 854 85501f06500 ffffff88 0 xor.l r32h r32l h 856 TMP1 = r32_r(IR[1] >> 4) ^ r32_r(IR[1]); 857 set_nzv32(TMP1); 858 r32_w(IR[1], TMP1); 859 prefetch(); 860 86101f06600 ffffff88 0 and.l r32h r32l h 862 TMP1 = r32_r(IR[1] >> 4) & r32_r(IR[1]); 863 set_nzv32(TMP1); 864 r32_w(IR[1], TMP1); 865 prefetch(); 866 8670200 fff0 0 stc ccr r8l 868 r8_w(IR[0], CCR); 869 prefetch(); 870 8710210 fff0 0 stc exr r8l s20 872 r8_w(IR[0], EXR); 873 prefetch(); 874 8750220 fff8 0 stmac mach r32l s26 876 r32_w(IR[0], MAC >> 32); 877 CCR = (CCR & ~(F_V|F_N|F_Z)) | MACF; 878 prefetch(); 879 8800230 fff8 0 stmac macl r32l s26 881 r32_w(IR[0], MAC); 882 CCR = (CCR & ~(F_V|F_N|F_Z)) | MACF; 883 prefetch(); 884 8850300 fff0 0 ldc r8l ccr 886 CCR = r8_r(IR[0]); 887 update_irq_filter(); 888 prefetch_noirq(); 889 8900310 fff0 0 ldc r8l exr s20 891 EXR = r8_r(IR[0]) | EXR_NC; 892 update_irq_filter(); 893 prefetch_noirq(); 894 8950320 fff8 0 ldmac r32l mach s26 896 prefetch_start(); 897 internal(1); 898 TMP1 = r32_r(IR[0]); 899 if(TMP1 & 0x200) 900 TMP1 |= 0xfffffc00; 901 else 902 TMP1 &= ~0xfffffc00; 903 MAC = (MAC & 0x00000000ffffffffULL) | (uint64_t(TMP1) << 32); 904 MACF &= ~F_V; 905 prefetch_done(); 906 9070330 fff8 0 ldmac r32l macl s26 908 prefetch_start(); 909 internal(1); 910 MAC = (MAC & 0xffffffff00000000ULL) | r32_r(IR[0]); 911 MACF &= ~F_V; 912 prefetch_done(); 913 9140400 ff00 0 orc imm8 ccr 915 CCR |= IR[0]; 916 update_irq_filter(); 917 prefetch_noirq(); 918 9190500 ff00 0 xorc imm8 ccr 920 CCR ^= IR[0]; 921 update_irq_filter(); 922 prefetch_noirq(); 923 9240600 ff00 0 andc imm8 ccr 925 CCR &= IR[0]; 926 update_irq_filter(); 927 prefetch_noirq(); 928 9290700 ff00 0 ldc imm8 ccr 930 CCR = IR[0]; 931 update_irq_filter(); 932 prefetch_noirq(); 933 9340800 ff00 0 add.b r8h r8l 935 r8_w(IR[0], do_add8(r8_r(IR[0]), r8_r(IR[0] >> 4))); 936 prefetch(); 937 9380900 ff00 0 add.w r16h r16l 939 r16_w(IR[0], do_add16(r16_r(IR[0]), r16_r(IR[0] >> 4))); 940 prefetch(); 941 9420a00 fff0 0 inc.b one r8l 943 r8_w(IR[0], do_inc8(r8_r(IR[0]), 1)); 944 prefetch(); 945 9460a80 ff88 0 add.l r32h r32l h 947 r32_w(IR[0], do_add32(r32_r(IR[0]), r32_r(IR[0] >> 4))); 948 prefetch(); 949 9500b00 fff8 0 adds.l one r16l o 951 r16_w(IR[0], r16_r(IR[0])+1); 952 prefetch(); 953 9540b00 fff8 0 adds.l one r32l h 955 r32_w(IR[0], r32_r(IR[0])+1); 956 prefetch(); 957 9580b50 fff0 0 inc.w one r16l h 959 r16_w(IR[0], do_inc16(r16_r(IR[0]), 1)); 960 prefetch(); 961 9620b70 fff8 0 inc.l one r32l h 963 r32_w(IR[0], do_inc32(r32_r(IR[0]), 1)); 964 prefetch(); 965 9660b80 fff8 0 adds.l two r16l o 967 r16_w(IR[0], r16_r(IR[0])+2); 968 prefetch(); 969 9700b80 fff8 0 adds.l two r32l h 971 r32_w(IR[0], r32_r(IR[0])+2); 972 prefetch(); 973 9740b90 fff8 0 adds.l four r16l o 975 r16_w(IR[0], r16_r(IR[0])+4); 976 prefetch(); 977 9780b90 fff8 0 adds.l four r32l h 979 r32_w(IR[0], r32_r(IR[0])+4); 980 prefetch(); 981 9820bd0 fff0 0 inc.w two r16l h 983 r16_w(IR[0], do_inc16(r16_r(IR[0]), 2)); 984 prefetch(); 985 9860bf0 fff8 0 inc.l two r32l h 987 r32_w(IR[0], do_inc32(r32_r(IR[0]), 2)); 988 prefetch(); 989 9900c00 ff00 0 mov.b r8h r8l 991 TMP1 = r8_r(IR[0] >> 4); 992 set_nzv8(TMP1); 993 r8_w(IR[0], TMP1); 994 prefetch(); 995 9960d00 ff00 0 mov.w r16h r16l 997 TMP1 = r16_r(IR[0] >> 4); 998 set_nzv16(TMP1); 999 r16_w(IR[0], TMP1); 1000 prefetch(); 1001 10020e00 ff00 0 addx.b r8h r8l 1003 r8_w(IR[0], do_addx8(r8_r(IR[0]), r8_r(IR[0] >> 4))); 1004 prefetch(); 1005 10060f00 fff0 0 daa.b r8l - 1007 TMP1 = r8_r(IR[0]); 1008 TMP2 = 0; 1009 if(CCR & F_C) { 1010 if(CCR & F_H) { 1011 if((TMP1 & 0xf0) <= 0x30 && (TMP1 & 0x0f) <= 3) 1012 TMP2 = 0x66; 1013 } else { 1014 if((TMP1 & 0xf0) <= 0x20) 1015 TMP2 = (TMP1 & 0x0f) <= 9 ? 0x60 : 0x66; 1016 } 1017 } else { 1018 if(CCR & F_H) { 1019 if((TMP1 & 0x0f) <= 3) 1020 TMP2 = (TMP1 & 0xf0) <= 0x90 ? 0x06 : 0x66; 1021 } else { 1022 if((TMP1 & 0x0f) <= 9) 1023 TMP2 = (TMP1 & 0xf0) <= 0x90 ? 0x00 : 0x60; 1024 else 1025 TMP2 = (TMP1 & 0xf0) <= 0x80 ? 0x06 : 0x66; 1026 } 1027 } 1028 r8_w(IR[0], do_add8(TMP1, TMP2)); 1029 prefetch(); 1030 10310f80 ff88 0 mov.l r32h r32l h 1032 TMP1 = r32_r(IR[0] >> 4); 1033 set_nzv32(TMP1); 1034 r32_w(IR[0], TMP1); 1035 prefetch(); 1036 10371000 fff0 0 shll.b r8l - 1038 r8_w(IR[0], do_shll8(r8_r(IR[0]))); 1039 prefetch(); 1040 10411010 fff0 0 shll.w r16l - h 1042 r16_w(IR[0], do_shll16(r16_r(IR[0]))); 1043 prefetch(); 1044 10451030 fff8 0 shll.l r32l - h 1046 r32_w(IR[0], do_shll32(r32_r(IR[0]))); 1047 prefetch(); 1048 10491040 fff0 0 shll.b two r8l s20 1050 r8_w(IR[0], do_shll2_8(r8_r(IR[0]))); 1051 prefetch(); 1052 10531050 fff0 0 shll.w two r16l s20 1054 r16_w(IR[0], do_shll2_16(r16_r(IR[0]))); 1055 prefetch(); 1056 10571070 fff8 0 shll.l two r32l s20 1058 r32_w(IR[0], do_shll2_32(r32_r(IR[0]))); 1059 prefetch(); 1060 10611080 fff0 0 shal.b r8l - 1062 r8_w(IR[0], do_shal8(r8_r(IR[0]))); 1063 prefetch(); 1064 10651090 fff0 0 shal.w r16l - h 1066 r16_w(IR[0], do_shal16(r16_r(IR[0]))); 1067 prefetch(); 1068 106910b0 fff8 0 shal.l r32l - h 1070 r32_w(IR[0], do_shal32(r32_r(IR[0]))); 1071 prefetch(); 1072 107310c0 fff0 0 shal.b two r8l s20 1074 r8_w(IR[0], do_shal2_8(r8_r(IR[0]))); 1075 prefetch(); 1076 107710d0 fff0 0 shal.w two r16l s20 1078 r16_w(IR[0], do_shal2_16(r16_r(IR[0]))); 1079 prefetch(); 1080 108110f0 fff8 0 shal.l two r32l s20 1082 r32_w(IR[0], do_shal32(r32_r(IR[0]))); 1083 prefetch(); 1084 10851100 fff0 0 shlr.b r8l - 1086 r8_w(IR[0], do_shlr8(r8_r(IR[0]))); 1087 prefetch(); 1088 10891110 fff0 0 shlr.w r16l - h 1090 r16_w(IR[0], do_shlr16(r16_r(IR[0]))); 1091 prefetch(); 1092 10931130 fff8 0 shlr.l r32l - h 1094 r32_w(IR[0], do_shlr32(r32_r(IR[0]))); 1095 prefetch(); 1096 10971140 fff0 0 shlr.b two r8l s20 1098 r8_w(IR[0], do_shlr2_8(r8_r(IR[0]))); 1099 prefetch(); 1100 11011150 fff0 0 shlr.w two r16l s20 1102 r16_w(IR[0], do_shlr2_16(r16_r(IR[0]))); 1103 prefetch(); 1104 11051170 fff8 0 shlr.l two r32l s20 1106 r32_w(IR[0], do_shlr2_32(r32_r(IR[0]))); 1107 prefetch(); 1108 11091180 fff0 0 shar.b r8l - 1110 r8_w(IR[0], do_shar8(r8_r(IR[0]))); 1111 prefetch(); 1112 11131190 fff0 0 shar.w r16l - h 1114 r16_w(IR[0], do_shar16(r16_r(IR[0]))); 1115 prefetch(); 1116 111711b0 fff8 0 shar.l r32l - h 1118 r32_w(IR[0], do_shar32(r32_r(IR[0]))); 1119 prefetch(); 1120 112111c0 fff0 0 shar.b two r8l s20 1122 r8_w(IR[0], do_shar2_8(r8_r(IR[0]))); 1123 prefetch(); 1124 112511d0 fff0 0 shar.w two r16l s20 1126 r16_w(IR[0], do_shar2_16(r16_r(IR[0]))); 1127 prefetch(); 1128 112911f0 fff8 0 shar.l two r32l s20 1130 r32_w(IR[0], do_shar2_32(r32_r(IR[0]))); 1131 prefetch(); 1132 11331200 fff0 0 rotxl.b r8l - 1134 r8_w(IR[0], do_rotxl8(r8_r(IR[0]))); 1135 prefetch(); 1136 11371210 fff0 0 rotxl.w r16l - h 1138 r16_w(IR[0], do_rotxl16(r16_r(IR[0]))); 1139 prefetch(); 1140 11411230 fff8 0 rotxl.l r32l - h 1142 r32_w(IR[0], do_rotxl32(r32_r(IR[0]))); 1143 prefetch(); 1144 11451240 fff0 0 rotxl.b two r8l s20 1146 r8_w(IR[0], do_rotxl2_8(r8_r(IR[0]))); 1147 prefetch(); 1148 11491250 fff0 0 rotxl.w two r16l s20 1150 r16_w(IR[0], do_rotxl2_16(r16_r(IR[0]))); 1151 prefetch(); 1152 11531270 fff8 0 rotxl.l two r32l s20 1154 r32_w(IR[0], do_rotxl2_32(r32_r(IR[0]))); 1155 prefetch(); 1156 11571280 fff0 0 rotl.b r8l - 1158 r8_w(IR[0], do_rotl8(r8_r(IR[0]))); 1159 prefetch(); 1160 11611290 fff0 0 rotl.w r16l - h 1162 r16_w(IR[0], do_rotl16(r16_r(IR[0]))); 1163 prefetch(); 1164 116512b0 fff8 0 rotl.l r32l - h 1166 r32_w(IR[0], do_rotl32(r32_r(IR[0]))); 1167 prefetch(); 1168 116912c0 fff0 0 rotl.b two r8l s20 1170 r8_w(IR[0], do_rotl2_8(r8_r(IR[0]))); 1171 prefetch(); 1172 117312d0 fff0 0 rotl.w two r16l s20 1174 r16_w(IR[0], do_rotl2_16(r16_r(IR[0]))); 1175 prefetch(); 1176 117712f0 fff8 0 rotl.l two r32l s20 1178 r32_w(IR[0], do_rotl2_32(r32_r(IR[0]))); 1179 prefetch(); 1180 11811300 fff0 0 rotxr.b r8l - 1182 r8_w(IR[0], do_rotxr8(r8_r(IR[0]))); 1183 prefetch(); 1184 11851310 fff0 0 rotxr.w r16l - h 1186 r16_w(IR[0], do_rotxr16(r16_r(IR[0]))); 1187 prefetch(); 1188 11891330 fff8 0 rotxr.l r32l - h 1190 r32_w(IR[0], do_rotxr32(r32_r(IR[0]))); 1191 prefetch(); 1192 11931340 fff0 0 rotxr.b two r8l s20 1194 r8_w(IR[0], do_rotxr2_8(r8_r(IR[0]))); 1195 prefetch(); 1196 11971350 fff0 0 rotxr.w two r16l s20 1198 r16_w(IR[0], do_rotxr2_16(r16_r(IR[0]))); 1199 prefetch(); 1200 12011370 fff8 0 rotxr.l two r32l s20 1202 r32_w(IR[0], do_rotxr2_32(r32_r(IR[0]))); 1203 prefetch(); 1204 12051380 fff0 0 rotr.b r8l - 1206 r8_w(IR[0], do_rotr8(r8_r(IR[0]))); 1207 prefetch(); 1208 12091390 fff0 0 rotr.w r16l - h 1210 r16_w(IR[0], do_rotr16(r16_r(IR[0]))); 1211 prefetch(); 1212 121313b0 fff8 0 rotr.l r32l - h 1214 r32_w(IR[0], do_rotr32(r32_r(IR[0]))); 1215 prefetch(); 1216 121713c0 fff0 0 rotr.b two r8l s20 1218 r8_w(IR[0], do_rotr2_8(r8_r(IR[0]))); 1219 prefetch(); 1220 122113d0 fff0 0 rotr.w two r16l s20 1222 r16_w(IR[0], do_rotr2_16(r16_r(IR[0]))); 1223 prefetch(); 1224 122513f0 fff8 0 rotr.l two r32l s20 1226 r32_w(IR[0], do_rotr2_32(r32_r(IR[0]))); 1227 prefetch(); 1228 12291400 ff00 0 or.b r8h r8l 1230 TMP1 = r8_r(IR[0] >> 4) | r8_r(IR[0]); 1231 set_nzv8(TMP1); 1232 r8_w(IR[0], TMP1); 1233 prefetch(); 1234 12351500 ff00 0 xor.b r8h r8l 1236 TMP1 = r8_r(IR[0] >> 4) ^ r8_r(IR[0]); 1237 set_nzv8(TMP1); 1238 r8_w(IR[0], TMP1); 1239 prefetch(); 1240 12411600 ff00 0 and.b r8h r8l 1242 TMP1 = r8_r(IR[0] >> 4) & r8_r(IR[0]); 1243 set_nzv8(TMP1); 1244 r8_w(IR[0], TMP1); 1245 prefetch(); 1246 12471700 fff0 0 not.b r8l - 1248 TMP1 = ~r8_r(IR[0]); 1249 set_nzv8(TMP1); 1250 r8_w(IR[0], TMP1); 1251 prefetch(); 1252 12531710 fff0 0 not.w r16l - h 1254 TMP1 = ~r16_r(IR[0]); 1255 set_nzv16(TMP1); 1256 r16_w(IR[0], TMP1); 1257 prefetch(); 1258 12591730 fff8 0 not.l r32l - h 1260 TMP1 = ~r32_r(IR[0]); 1261 set_nzv32(TMP1); 1262 r32_w(IR[0], TMP1); 1263 prefetch(); 1264 12651750 fff0 0 extu.w r16l - h 1266 CCR &= ~(F_N|F_Z|F_V); 1267 TMP1 = uint8_t(r16_r(IR[0])); 1268 if(!TMP1) 1269 CCR |= F_Z; 1270 r16_w(IR[0], TMP1); 1271 prefetch(); 1272 12731770 fff8 0 extu.l r32l - h 1274 CCR &= ~(F_N|F_Z|F_V); 1275 TMP1 = uint16_t(r32_r(IR[0])); 1276 if(!TMP1) 1277 CCR |= F_Z; 1278 r32_w(IR[0], TMP1); 1279 prefetch(); 1280 12811780 fff0 0 neg.b r8l - 1282 r8_w(IR[0], do_sub8(0, r8_r(IR[0]))); 1283 prefetch(); 1284 12851790 fff0 0 neg.w r16l - h 1286 r16_w(IR[0], do_sub16(0, r16_r(IR[0]))); 1287 prefetch(); 1288 128917b0 fff8 0 neg.l r32l - h 1290 r32_w(IR[0], do_sub32(0, r32_r(IR[0]))); 1291 prefetch(); 1292 129317d0 fff0 0 exts.w r16l - h 1294 CCR &= ~(F_N|F_Z|F_V); 1295 TMP1 = int8_t(r16_r(IR[0])); 1296 if(!TMP1) 1297 CCR |= F_Z; 1298 r16_w(IR[0], TMP1); 1299 prefetch(); 1300 130117f0 fff8 0 exts.l r32l - h 1302 CCR &= ~(F_N|F_Z|F_V); 1303 TMP1 = int16_t(r32_r(IR[0])); 1304 if(!TMP1) 1305 CCR |= F_Z; 1306 r32_w(IR[0], TMP1); 1307 prefetch(); 1308 13091800 ff00 0 sub.b r8h r8l 1310 r8_w(IR[0], do_sub8(r8_r(IR[0]), r8_r(IR[0] >> 4))); 1311 prefetch(); 1312 13131900 ff00 0 sub.w r16h r16l 1314 r16_w(IR[0], do_sub16(r16_r(IR[0]), r16_r(IR[0] >> 4))); 1315 prefetch(); 1316 13171a00 fff0 0 dec.b one r8l 1318 r8_w(IR[0], do_dec8(r8_r(IR[0]), 1)); 1319 prefetch(); 1320 13211a80 ff88 0 sub.l r32h r32l h 1322 r32_w(IR[0], do_sub32(r32_r(IR[0]), r32_r(IR[0] >> 4))); 1323 prefetch(); 1324 13251b00 fff8 0 subs.l one r16l o 1326 r16_w(IR[0], r16_r(IR[0])-1); 1327 prefetch(); 1328 13291b00 fff8 0 subs.l one r32l h 1330 r32_w(IR[0], r32_r(IR[0])-1); 1331 prefetch(); 1332 13331b50 fff0 0 dec.w one r16l 1334 r16_w(IR[0], do_dec16(r16_r(IR[0]), 1)); 1335 prefetch(); 1336 13371b70 fff8 0 dec.l one r32l h 1338 r32_w(IR[0], do_dec32(r32_r(IR[0]), 1)); 1339 prefetch(); 1340 13411b80 fff8 0 subs.l two r16l o 1342 r16_w(IR[0], r16_r(IR[0])-2); 1343 prefetch(); 1344 13451b80 fff8 0 subs.l two r32l h 1346 r32_w(IR[0], r32_r(IR[0])-2); 1347 prefetch(); 1348 13491b90 fff8 0 subs.l four r16l o 1350 r16_w(IR[0], r16_r(IR[0])-4); 1351 prefetch(); 1352 13531b90 fff8 0 subs.l four r32l h 1354 r32_w(IR[0], r32_r(IR[0])-4); 1355 prefetch(); 1356 13571bd0 fff0 0 dec.w two r16l 1358 r16_w(IR[0], do_dec16(r16_r(IR[0]), 2)); 1359 prefetch(); 1360 13611bf0 fff8 0 dec.l two r32l h 1362 r32_w(IR[0], do_dec32(r32_r(IR[0]), 2)); 1363 prefetch(); 1364 13651c00 ff00 0 cmp.b r8h r8l 1366 do_sub8(r8_r(IR[0]), r8_r(IR[0] >> 4)); 1367 prefetch(); 1368 13691d00 ff00 0 cmp.w r16h r16l 1370 do_sub16(r16_r(IR[0]), r16_r(IR[0] >> 4)); 1371 prefetch(); 1372 13731e00 ff00 0 subx.b r8h r8l 1374 r8_w(IR[0], do_subx8(r8_r(IR[0]), r8_r(IR[0] >> 4))); 1375 prefetch(); 1376 13771f00 fff0 0 das.b r8l - 1378 TMP1 = r8_r(IR[0]); 1379 TMP2 = 0; 1380 if(CCR & F_C) { 1381 if(CCR & F_H) { 1382 if((TMP1 & 0xf0) >= 0x60 && (TMP1 & 0x0f) >= 6) 1383 TMP2 = 0x9a; 1384 } else { 1385 if((TMP1 & 0xf0) >= 0x70 && (TMP1 & 0x0f) <= 9) 1386 TMP2 = 0xa0; 1387 } 1388 } else { 1389 if(CCR & F_H) { 1390 if((TMP1 & 0xf0) <= 0x80 && (TMP1 & 0x0f) >= 6) 1391 TMP2 = 0xfa; 1392 } 1393 } 1394 r8_w(IR[0], do_add8(TMP1, TMP2)); 1395 prefetch(); 1396 13971f80 ff88 0 cmp.l r32h r32l h 1398 do_sub32(r32_r(IR[0]), r32_r(IR[0] >> 4)); 1399 prefetch(); 1400 14012000 f000 0 mov.b abs8 r8u 1402 prefetch_start(); 1403 TMP1 = read8(0xffffff00 | IR[0]); 1404 set_nzv8(TMP1); 1405 r8_w(IR[0] >> 8, TMP1); 1406 prefetch_done(); 1407 14083000 f000 0 mov.b r8u abs8 1409 prefetch_start(); 1410 TMP1 = r8_r(IR[0] >> 8); 1411 set_nzv8(TMP1); 1412 write8(0xffffff00 | IR[0], TMP1); 1413 prefetch_done(); 1414 14154000 ff00 0 bt rel8 - 1416 bxx_8 true 1417 14184100 ff00 0 bf rel8 - 1419 bxx_8 false 1420 14214200 ff00 0 bhi rel8 - 1422 bxx_8 !(CCR & (F_C|F_Z)) 1423 14244300 ff00 0 bls rel8 - 1425 bxx_8 CCR & (F_C|F_Z) 1426 14274400 ff00 0 bcc rel8 - 1428 bxx_8 !(CCR & F_C) 1429 14304500 ff00 0 bcs rel8 - 1431 bxx_8 CCR & F_C 1432 14334600 ff00 0 bne rel8 - 1434 bxx_8 !(CCR & F_Z) 1435 14364700 ff00 0 beq rel8 - 1437 bxx_8 CCR & F_Z 1438 14394800 ff00 0 bvc rel8 - 1440 bxx_8 !(CCR & F_V) 1441 14424900 ff00 0 bvs rel8 - 1443 bxx_8 CCR & F_V 1444 14454a00 ff00 0 bpl rel8 - 1446 bxx_8 !(CCR & F_N) 1447 14484b00 ff00 0 bmi rel8 - 1449 bxx_8 CCR & F_N 1450 14514c00 ff00 0 bge rel8 - 1452 bxx_8 !((CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V) 1453 14544d00 ff00 0 blt rel8 - 1455 bxx_8 (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V 1456 14574e00 ff00 0 bgt rel8 - 1458 bxx_8 !((CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V) 1459 14604f00 ff00 0 ble rel8 - 1461 bxx_8 (CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V 1462 14635000 ff00 0 mulxu.b r8h r16l 1464 prefetch_start(); 1465 r16_w(IR[0], uint8_t(r16_r(IR[0])) * r8_r(IR[0] >> 4)); 1466 internal(2); 1467 prefetch_done(); 1468 14695100 ff00 0 divxu.b r8h r16l 1470 prefetch_start(); 1471 internal(11); 1472 TMP1 = r16_r(IR[0]); 1473 TMP2 = r8_r(IR[0] >> 4); 1474 CCR &= ~(F_Z|F_N); 1475 if(TMP2 & 0x80) 1476 CCR |= F_N; 1477 if(!TMP2) { 1478 CCR |= F_Z; 1479 } else { 1480 int q = TMP1 / TMP2; 1481 int r = TMP1 % TMP2; 1482 r16_w(IR[0], (q & 0xff) | ((r & 0xff) << 8)); 1483 } 1484 prefetch_done(); 1485 14865200 ff08 0 mulxu.w r16h r32l h 1487 prefetch_start(); 1488 r32_w(IR[0], uint16_t(r32_r(IR[0])) * r16_r(IR[0] >> 4)); 1489 internal(3); 1490 prefetch_done(); 1491 14925300 ff08 0 divxu.w r16h r32l h 1493 prefetch_start(); 1494 internal(11); 1495 TMP1 = r32_r(IR[0]); 1496 TMP2 = r16_r(IR[0] >> 4); 1497 CCR &= ~(F_Z|F_N); 1498 if(TMP2 & 0x80) 1499 CCR |= F_N; 1500 if(!TMP2) { 1501 CCR |= F_Z; 1502 } else { 1503 int q = TMP1 / TMP2; 1504 int r = TMP1 % TMP2; 1505 r32_w(IR[0], (q & 0xffff) | ((r & 0xffff) << 16)); 1506 } 1507 prefetch_done(); 1508 15095470 ffff 0 rts - - o 1510 fetch(); 1511 TMP1 = r16_r(7); 1512 TMP2 = read16(TMP1); 1513 r16_w(7, TMP1+2); 1514 internal(1); 1515 PC = TMP2; 1516 prefetch(); 1517 15185470 ffff 0 rts - - h 1519 fetch(); 1520 TMP1 = r32_r(7); 1521 if(mode_advanced) { 1522 TMP2 = read16(TMP1) << 16; 1523 TMP2 |= read16(TMP1+2); 1524 r32_w(7, TMP1+4); 1525 } else { 1526 TMP2 = read16(TMP1); 1527 r32_w(7, TMP1+2); 1528 } 1529 internal(1); 1530 PC = TMP2; 1531 prefetch(); 1532 15335500 ff00 0 bsr rel8 - o 1534 TMP2 = PC; 1535 PC += int8_t(IR[0]); 1536 jsr16 TMP2 TMP1 1537 15385500 ff00 0 bsr rel8 - h 1539 TMP2 = PC; 1540 PC += int8_t(IR[0]); 1541 jsr32 TMP2 TMP1 1542 15435670 ffff 0 rte - - o 1544 fetch(); 1545 TMP1 = r16_r(7); 1546 CCR = read16(TMP1) >> 8; 1547 TMP1 = r16_r(7); 1548 TMP2 = read16(TMP1+2); 1549 r16_w(7, TMP1+4); 1550 internal(1); 1551 PC = TMP2; 1552 update_irq_filter(); 1553 prefetch_noirq_notrace(); 1554 15555670 ffff 0 rte - - h 1556 fetch(); 1557 TMP1 = r32_r(7); 1558 if(mode_advanced) { 1559 if(exr_in_stack()) { 1560 EXR = (read16(TMP1) >> 8) | EXR_NC; 1561 TMP1 += 2; 1562 } 1563 TMP2 = read16(TMP1); 1564 CCR = TMP2 >> 8; 1565 TMP2 = (TMP2 & 0xff) << 16; 1566 TMP2 |= read16(TMP1+2); 1567 r32_w(7, TMP1+4); 1568 } else { 1569 TMP2 = read16(TMP1); 1570 r32_w(7, TMP1+2); 1571 } 1572 internal(1); 1573 PC = TMP2; 1574 update_irq_filter(); 1575 prefetch_noirq_notrace(); 1576 15775700 ffcf 0 trapa imm2 - h 1578 internal(1); 1579 TMP1 = r32_r(7) - 2; 1580 r32_w(7, TMP1); 1581 write16(TMP1, NPC); 1582 TMP1 = r32_r(7) - 2; 1583 r32_w(7, TMP1); 1584 write16(TMP1, (CCR << 8) | ((NPC >> 16) & 0xff)); 1585 if(exr_in_stack()) { 1586 TMP1 = r32_r(7) - 2; 1587 r32_w(7, TMP1); 1588 write16(TMP1, EXR << 8); 1589 } 1590 taken_irq_vector = trapa_setup() + ((IR[0] >> 4) & 3); 1591 if(mode_advanced) { 1592 IR[0] = read16i(4*taken_irq_vector); 1593 IR[1] = read16i(4*taken_irq_vector+2); 1594 PC = (IR[0] << 16) | IR[1]; 1595 } else { 1596 PC = read16i(2*taken_irq_vector); 1597 } 1598 internal(1); 1599 update_irq_filter(); 1600 prefetch(); 1601 16025800 ffff 0 bt rel16 - h 1603 bxx_16 true 1604 16055810 ffff 0 bf rel16 - h 1606 bxx_16 false 1607 16085820 ffff 0 bhi rel16 - h 1609 bxx_16 !(CCR & (F_C|F_Z)) 1610 16115830 ffff 0 bls rel16 - h 1612 bxx_16 CCR & (F_C|F_Z) 1613 16145840 ffff 0 bcc rel16 - h 1615 bxx_16 !(CCR & F_C) 1616 16175850 ffff 0 bcs rel16 - h 1618 bxx_16 CCR & F_C 1619 16205860 ffff 0 bne rel16 - h 1621 bxx_16 !(CCR & F_Z) 1622 16235870 ffff 0 beq rel16 - h 1624 bxx_16 CCR & F_Z 1625 16265880 ffff 0 bvc rel16 - h 1627 bxx_16 !(CCR & F_V) 1628 16295890 ffff 0 bvs rel16 - h 1630 bxx_16 CCR & F_V 1631 163258a0 ffff 0 bpl rel16 - h 1633 bxx_16 !(CCR & F_N) 1634 163558b0 ffff 0 bmi rel16 - h 1636 bxx_16 CCR & F_N 1637 163858c0 ffff 0 bge rel16 - h 1639 bxx_16 !((CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V) 1640 164158d0 ffff 0 blt rel16 - h 1642 bxx_16 (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V 1643 164458e0 ffff 0 bgt rel16 - h 1645 bxx_16 !((CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V) 1646 164758f0 ffff 0 ble rel16 - h 1648 bxx_16 (CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V 1649 16505900 ff8f 0 jmp r32h - h 1651 fetch(); 1652 PC = r32_r(IR[0] >> 4); 1653 prefetch(); 1654 16555a00 ffff 0 jmp abs16e - o 1656 internal(1); 1657 PC = IR[1]; 1658 prefetch(); 1659 16605a00 ff00 0 jmp abs24e - h 1661 internal(1); 1662 PC = ((IR[0] & 0xff) << 16) | IR[1]; 1663 prefetch(); 1664 16655b00 ff00 0 jmp abs8i - o 1666 fetch(); 1667 PC = read16(IR[0] & 0xff); 1668 internal(1); 1669 prefetch(); 1670 16715b00 ff00 0 jmp abs8i - h 1672 fetch(); 1673 if(mode_advanced) { 1674 TMP1 = read16(IR[0] & 0xff) << 16; 1675 TMP1 |= read16((IR[0] & 0xff) + 2); 1676 PC = TMP1; 1677 } else { 1678 PC = read16(IR[0] & 0xff); 1679 } 1680 internal(1); 1681 prefetch(); 1682 16835c00 ffff 0 bsr rel16 - h 1684 internal(1); 1685 TMP2 = PC; 1686 PC += int16_t(IR[1]); 1687 jsr32 TMP2 TMP1 1688 16895d00 ff8f 0 jsr r16h - o 1690 TMP2 = PC; 1691 PC = r16_r(IR[0] >> 4); 1692 jsr16 TMP2 TMP1 1693 16945d00 ff8f 0 jsr r32h - h 1695 TMP2 = PC; 1696 PC = r32_r(IR[0] >> 4); 1697 jsr32 TMP2 TMP1 1698 16995e00 ffff 0 jsr abs16e - o 1700 internal(1); 1701 TMP2 = PC; 1702 PC = IR[1]; 1703 jsr16 TMP2 TMP1 1704 17055e00 ff00 0 jsr abs24e - h 1706 internal(1); 1707 TMP2 = PC; 1708 PC = ((IR[0] & 0xff) << 16) | IR[1]; 1709 jsr32 TMP2 TMP1 1710 17115f00 ff00 0 jsr abs8i - o 1712 fetch(); 1713 TMP2 = PC; 1714 PC = read16(IR[0] & 0xff); 1715 jsr16 TMP2 TMP1 1716 17175f00 ff00 0 jsr abs8i - h 1718 fetch(); 1719 TMP2 = PC; 1720 if(mode_advanced) { 1721 TMP1 = read16(IR[0] & 0xff) << 16; 1722 TMP1 |= read16((IR[0] & 0xff) + 2); 1723 PC = TMP1; 1724 } else { 1725 PC = read16(IR[0] & 0xff); 1726 } 1727 jsr32 TMP2 TMP1 1728 17296000 ff00 0 bset r8h r8l 1730 TMP1 = r8_r(IR[0]); 1731 bset r8_r(IR[0] >> 4) 1732 r8_w(IR[0], TMP1); 1733 prefetch(); 1734 17356100 ff00 0 bnot r8h r8l 1736 TMP1 = r8_r(IR[0]); 1737 bnot r8_r(IR[0] >> 4) 1738 r8_w(IR[0], TMP1); 1739 prefetch(); 1740 17416200 ff00 0 bclr r8h r8l 1742 TMP1 = r8_r(IR[0]); 1743 bclr r8_r(IR[0] >> 4) 1744 r8_w(IR[0], TMP1); 1745 prefetch(); 1746 17476300 ff00 0 btst r8h r8l 1748 TMP1 = r8_r(IR[0]); 1749 btst r8_r(IR[0] >> 4) 1750 prefetch(); 1751 17526400 ff00 0 or.w r16h r16l h 1753 TMP1 = r16_r(IR[0] >> 4) | r16_r(IR[0]); 1754 set_nzv16(TMP1); 1755 r16_w(IR[0], TMP1); 1756 prefetch(); 1757 17586500 ff00 0 xor.w r16h r16l h 1759 TMP1 = r16_r(IR[0] >> 4) ^ r16_r(IR[0]); 1760 set_nzv16(TMP1); 1761 r16_w(IR[0], TMP1); 1762 prefetch(); 1763 17646600 ff00 0 and.w r16h r16l h 1765 TMP1 = r16_r(IR[0] >> 4) & r16_r(IR[0]); 1766 set_nzv16(TMP1); 1767 r16_w(IR[0], TMP1); 1768 prefetch(); 1769 17706700 ff80 0 bst imm3 r8l 1771 TMP1 = r8_r(IR[0]); 1772 bst IR[0] >> 4 1773 r8_w(IR[0], TMP1); 1774 prefetch(); 1775 17766780 ff80 0 bist imm3 r8l 1777 TMP1 = r8_r(IR[0]); 1778 bist IR[0] >> 4 1779 r8_w(IR[0], TMP1); 1780 prefetch(); 1781 17826800 ff80 0 mov.b r16ih r8l o 1783 prefetch_start(); 1784 TMP1 = read8(r16_r(IR[0] >> 4)); 1785 set_nzv8(TMP1); 1786 r8_w(IR[0], TMP1); 1787 prefetch_done(); 1788 17896800 ff80 0 mov.b r32ih r8l h 1790 prefetch_start(); 1791 TMP1 = read8(r32_r(IR[0] >> 4)); 1792 set_nzv8(TMP1); 1793 r8_w(IR[0], TMP1); 1794 prefetch_done(); 1795 17966880 ff80 0 mov.b r8l r16ih o 1797 prefetch_start(); 1798 TMP1 = r8_r(IR[0]); 1799 set_nzv8(TMP1); 1800 write8(r16_r((IR[0] >> 4) & 7), TMP1); 1801 prefetch_done(); 1802 18036880 ff80 0 mov.b r8l r32ih h 1804 prefetch_start(); 1805 TMP1 = r8_r(IR[0]); 1806 set_nzv8(TMP1); 1807 write8(r32_r(IR[0] >> 4), TMP1); 1808 prefetch_done(); 1809 18106900 ff88 0 mov.w r16ih r16l o 1811 prefetch_start(); 1812 TMP1 = read16(r16_r(IR[0] >> 4)); 1813 set_nzv16(TMP1); 1814 r16_w(IR[0], TMP1); 1815 prefetch_done(); 1816 18176900 ff80 0 mov.w r32ih r16l h 1818 prefetch_start(); 1819 TMP1 = read16(r32_r(IR[0] >> 4)); 1820 set_nzv16(TMP1); 1821 r16_w(IR[0], TMP1); 1822 prefetch_done(); 1823 18246980 ff88 0 mov.w r16l r16ih o 1825 prefetch_start(); 1826 TMP1 = r16_r(IR[0]); 1827 set_nzv16(TMP1); 1828 write16(r16_r((IR[0] >> 4) & 7), TMP1); 1829 prefetch_done(); 1830 18316980 ff80 0 mov.w r16l r32ih h 1832 prefetch_start(); 1833 TMP1 = r16_r(IR[0]); 1834 set_nzv16(TMP1); 1835 write16(r32_r(IR[0] >> 4), TMP1); 1836 prefetch_done(); 1837 18386a00 fff0 0 mov.b abs16 r8l 1839 prefetch_start(); 1840 TMP1 = read8(int16_t(IR[1])); 1841 set_nzv8(TMP1); 1842 r8_w(IR[0], TMP1); 1843 prefetch_done(); 1844 18456a106300 ffffff0f 1 btst r8h abs16 1846 TMP2 = int16_t(IR[1]); 1847 TMP1 = read8(TMP2); 1848 btst r8_r(IR[2] >> 4) 1849 prefetch(); 1850 18516a107300 ffffff8f 1 btst imm3 abs16 1852 TMP2 = int16_t(IR[1]); 1853 TMP1 = read8(TMP2); 1854 btst IR[2] >> 4 1855 prefetch(); 1856 18576a107400 ffffff8f 1 bor imm3 abs16 1858 TMP2 = int16_t(IR[1]); 1859 TMP1 = read8(TMP2); 1860 bor IR[2] >> 4 1861 prefetch(); 1862 18636a107480 ffffff8f 1 bior imm3 abs16 1864 TMP2 = int16_t(IR[1]); 1865 TMP1 = read8(TMP2); 1866 bior IR[2] >> 4 1867 prefetch(); 1868 18696a107500 ffffff8f 1 bxor imm3 abs16 1870 TMP2 = int16_t(IR[1]); 1871 TMP1 = read8(TMP2); 1872 bxor IR[2] >> 4 1873 prefetch(); 1874 18756a107580 ffffff8f 1 bixor imm3 abs16 1876 TMP2 = int16_t(IR[1]); 1877 TMP1 = read8(TMP2); 1878 bixor IR[2] >> 4 1879 prefetch(); 1880 18816a107600 ffffff8f 1 band imm3 abs16 1882 TMP2 = int16_t(IR[1]); 1883 TMP1 = read8(TMP2); 1884 band IR[2] >> 4 1885 prefetch(); 1886 18876a107680 ffffff8f 1 biand imm3 abs16 1888 TMP2 = int16_t(IR[1]); 1889 TMP1 = read8(TMP2); 1890 biand IR[2] >> 4 1891 prefetch(); 1892 18936a107700 ffffff8f 1 bld imm3 abs16 1894 TMP2 = int16_t(IR[1]); 1895 TMP1 = read8(TMP2); 1896 bld IR[2] >> 4 1897 prefetch(); 1898 18996a107780 ffffff8f 1 bild imm3 abs16 1900 TMP2 = int16_t(IR[1]); 1901 TMP1 = read8(TMP2); 1902 bild IR[2] >> 4 1903 prefetch(); 1904 19056a186000 ffffff0f 1 bset r8h abs16 1906 TMP2 = int16_t(IR[1]); 1907 TMP1 = read8(TMP2); 1908 prefetch_start(); 1909 bset r8_r(IR[2] >> 4) 1910 write8(TMP2, TMP1); 1911 prefetch_done(); 1912 19136a186100 ffffff0f 1 bnot r8h abs16 1914 TMP2 = int16_t(IR[1]); 1915 TMP1 = read8(TMP2); 1916 prefetch_start(); 1917 bnot r8_r(IR[2] >> 4) 1918 write8(TMP2, TMP1); 1919 prefetch_done(); 1920 19216a186200 ffffff0f 1 bclr r8h abs16 1922 TMP2 = int16_t(IR[1]); 1923 TMP1 = read8(TMP2); 1924 prefetch_start(); 1925 bclr r8_r(IR[2] >> 4) 1926 write8(TMP2, TMP1); 1927 prefetch_done(); 1928 19296a186700 ffffff8f 1 bst imm3 abs16 1930 TMP2 = int16_t(IR[2]); 1931 TMP1 = read8(TMP2); 1932 prefetch_start(); 1933 bst IR[2] >> 4 1934 write8(TMP2, TMP1); 1935 prefetch_done(); 1936 19376a186780 ffffff8f 1 bist imm3 abs16 1938 TMP2 = int16_t(IR[1]); 1939 TMP1 = read8(TMP2); 1940 prefetch_start(); 1941 bist IR[2] >> 4 1942 write8(TMP2, TMP1); 1943 prefetch_done(); 1944 19456a187000 ffffff8f 1 bset imm3 abs16 1946 TMP2 = int16_t(IR[1]); 1947 TMP1 = read8(TMP2); 1948 prefetch_start(); 1949 bset IR[2] >> 4 1950 write8(TMP2, TMP1); 1951 prefetch_done(); 1952 19536a187100 ffffff8f 1 bnot imm3 abs16 1954 TMP2 = int16_t(IR[1]); 1955 TMP1 = read8(TMP2); 1956 prefetch_start(); 1957 bnot IR[2] >> 4 1958 write8(TMP2, TMP1); 1959 prefetch_done(); 1960 19616a187200 ffffff8f 1 bclr imm3 abs16 1962 TMP2 = int16_t(IR[1]); 1963 TMP1 = read8(TMP2); 1964 prefetch_start(); 1965 bclr IR[2] >> 4 1966 write8(TMP2, TMP1); 1967 prefetch_done(); 1968 19696a20 fff0 0 mov.b abs32 r8l h 1970 prefetch_start(); 1971 TMP1 = read8((IR[1] << 16) | IR[2]); 1972 set_nzv8(TMP1); 1973 r8_w(IR[0], TMP1); 1974 prefetch_done(); 1975 19766a306300 ffffff0f 2 btst r8h abs32 h 1977 TMP2 = (IR[1] << 16) | IR[2]; 1978 TMP1 = read8(TMP2); 1979 btst r8_r(IR[3] >> 4) 1980 prefetch(); 1981 19826a307300 ffffff8f 2 btst imm3 abs32 h 1983 TMP2 = (IR[1] << 16) | IR[2]; 1984 TMP1 = read8(TMP2); 1985 btst IR[3] >> 4 1986 prefetch(); 1987 19886a307400 ffffff8f 2 bor imm3 abs32 h 1989 TMP2 = (IR[1] << 16) | IR[2]; 1990 TMP1 = read8(TMP2); 1991 bor IR[3] >> 4 1992 prefetch(); 1993 19946a307480 ffffff8f 2 bior imm3 abs32 h 1995 TMP2 = (IR[1] << 16) | IR[2]; 1996 TMP1 = read8(TMP2); 1997 bior IR[3] >> 4 1998 prefetch(); 1999 20006a307500 ffffff8f 2 bxor imm3 abs32 h 2001 TMP2 = (IR[1] << 16) | IR[2]; 2002 TMP1 = read8(TMP2); 2003 bxor IR[3] >> 4 2004 prefetch(); 2005 20066a307580 ffffff8f 2 bixor imm3 abs32 h 2007 TMP2 = (IR[1] << 16) | IR[2]; 2008 TMP1 = read8(TMP2); 2009 bixor IR[3] >> 4 2010 prefetch(); 2011 20126a307600 ffffff8f 2 band imm3 abs32 h 2013 TMP2 = (IR[1] << 16) | IR[2]; 2014 TMP1 = read8(TMP2); 2015 band IR[3] >> 4 2016 prefetch(); 2017 20186a307680 ffffff8f 2 biand imm3 abs32 h 2019 TMP2 = (IR[1] << 16) | IR[2]; 2020 TMP1 = read8(TMP2); 2021 biand IR[3] >> 4 2022 prefetch(); 2023 20246a307700 ffffff8f 2 bld imm3 abs32 h 2025 TMP2 = (IR[1] << 16) | IR[2]; 2026 TMP1 = read8(TMP2); 2027 bld IR[3] >> 4 2028 prefetch(); 2029 20306a307780 ffffff8f 2 bild imm3 abs32 h 2031 TMP2 = (IR[1] << 16) | IR[2]; 2032 TMP1 = read8(TMP2); 2033 bild IR[3] >> 4 2034 prefetch(); 2035 20366a386000 ffffff0f 2 bset r8h abs32 h 2037 TMP2 = (IR[1] << 16) | IR[2]; 2038 TMP1 = read8(TMP2); 2039 prefetch_start(); 2040 bset r8_r(IR[3] >> 4) 2041 write8(TMP2, TMP1); 2042 prefetch_done(); 2043 20446a386100 ffffff0f 2 bnot r8h abs32 h 2045 TMP2 = (IR[1] << 16) | IR[2]; 2046 TMP1 = read8(TMP2); 2047 prefetch_start(); 2048 bnot r8_r(IR[3] >> 4) 2049 write8(TMP2, TMP1); 2050 prefetch_done(); 2051 20526a386200 ffffff0f 2 bclr r8h abs32 h 2053 TMP2 = (IR[1] << 16) | IR[2]; 2054 TMP1 = read8(TMP2); 2055 prefetch_start(); 2056 bclr r8_r(IR[3] >> 4) 2057 write8(TMP2, TMP1); 2058 prefetch_done(); 2059 20606a386700 ffffff8f 2 bst imm3 abs32 h 2061 TMP2 = (IR[1] << 16) | IR[2]; 2062 TMP1 = read8(TMP2); 2063 prefetch_start(); 2064 bst IR[3] >> 4 2065 write8(TMP2, TMP1); 2066 prefetch_done(); 2067 20686a386780 ffffff8f 2 bist imm3 abs32 h 2069 TMP2 = (IR[1] << 16) | IR[2]; 2070 TMP1 = read8(TMP2); 2071 prefetch_start(); 2072 bist IR[3] >> 4 2073 write8(TMP2, TMP1); 2074 prefetch_done(); 2075 20766a387000 ffffff8f 2 bset imm3 abs32 h 2077 TMP2 = (IR[1] << 16) | IR[2]; 2078 TMP1 = read8(TMP2); 2079 prefetch_start(); 2080 bset IR[3] >> 4 2081 write8(TMP2, TMP1); 2082 prefetch_done(); 2083 20846a387100 ffffff8f 2 bnot imm3 abs32 h 2085 TMP2 = (IR[1] << 16) | IR[2]; 2086 TMP1 = read8(TMP2); 2087 prefetch_start(); 2088 bnot IR[3] >> 4 2089 write8(TMP2, TMP1); 2090 prefetch_done(); 2091 20926a387200 ffffff8f 2 bclr imm3 abs32 h 2093 TMP2 = (IR[1] << 16) | IR[2]; 2094 TMP1 = read8(TMP2); 2095 prefetch_start(); 2096 bclr IR[3] >> 4 2097 write8(TMP2, TMP1); 2098 prefetch_done(); 2099 21006a40 fff0 0 movfpe abs16 r8l 21016a80 fff0 0 mov.b r8l abs16 2102 prefetch_start(); 2103 TMP1 = r8_r(IR[0]); 2104 set_nzv8(TMP1); 2105 write8(int16_t(IR[1]), TMP1); 2106 prefetch_done(); 2107 21086aa0 fff0 0 mov.b r8l abs32 h 2109 prefetch_start(); 2110 TMP1 = r8_r(IR[0]); 2111 set_nzv8(TMP1); 2112 write8((IR[1] << 16) | IR[2], TMP1); 2113 prefetch_done(); 2114 21156ac0 fff0 0 movtpe r8l abs16 21166b00 fff0 0 mov.w abs16 r16l 2117 prefetch_start(); 2118 TMP1 = read16(int16_t(IR[1])); 2119 set_nzv16(TMP1); 2120 r16_w(IR[0], TMP1); 2121 prefetch_done(); 2122 21236b20 fff0 0 mov.w abs32 r16l h 2124 prefetch_start(); 2125 TMP1 = read16((IR[1] << 16) | IR[2]); 2126 set_nzv16(TMP1); 2127 r16_w(IR[0], TMP1); 2128 prefetch_done(); 2129 21306b80 fff0 0 mov.w r16l abs16 2131 prefetch_start(); 2132 TMP1 = r16_r(IR[0]); 2133 set_nzv16(TMP1); 2134 write16(int16_t(IR[1]), TMP1); 2135 prefetch_done(); 2136 21376ba0 fff0 0 mov.w r16l abs32 h 2138 prefetch_start(); 2139 TMP1 = r16_r(IR[0]); 2140 set_nzv16(TMP1); 2141 write16((IR[1] << 16) | IR[2], TMP1); 2142 prefetch_done(); 2143 21446c00 ff80 0 mov.b r16ph r8l o 2145 TMP2 = r16_r(IR[0] >> 4); 2146 prefetch_start(); 2147 internal(1); 2148 TMP1 = read8(TMP2); 2149 TMP2 += 1; 2150 r16_w(IR[0] >> 4, TMP2); 2151 set_nzv8(TMP1); 2152 r8_w(IR[0], TMP1); 2153 prefetch_done(); 2154 21556c00 ff80 0 mov.b r32ph r8l h 2156 TMP2 = r32_r(IR[0] >> 4); 2157 prefetch_start(); 2158 internal(1); 2159 TMP1 = read8(TMP2); 2160 TMP2 += 1; 2161 r32_w(IR[0] >> 4, TMP2); 2162 set_nzv8(TMP1); 2163 r8_w(IR[0], TMP1); 2164 prefetch_done(); 2165 21666c80 ff80 0 mov.b r8l pr16h o 2167 TMP1 = r8_r(IR[0]); 2168 TMP2 = r16_r((IR[0] >> 4) & 7); 2169 prefetch_start(); 2170 internal(1); 2171 TMP2 -= 1; 2172 r16_w((IR[0] >> 4) & 7, TMP2); 2173 set_nzv8(TMP1); 2174 write8(TMP2, TMP1); 2175 prefetch_done(); 2176 21776c80 ff80 0 mov.b r8l pr32h h 2178 TMP1 = r8_r(IR[0]); 2179 TMP2 = r32_r(IR[0] >> 4); 2180 prefetch_start(); 2181 internal(1); 2182 TMP2 -= 1; 2183 r32_w(IR[0] >> 4, TMP2); 2184 set_nzv8(TMP1); 2185 write8(TMP2, TMP1); 2186 prefetch_done(); 2187 21886d00 ff88 0 mov.w r16ph r16l o 2189 TMP2 = r16_r(IR[0] >> 4); 2190 prefetch_start(); 2191 internal(1); 2192 TMP1 = read16(TMP2); 2193 TMP2 += 2; 2194 r16_w(IR[0] >> 4, TMP2); 2195 set_nzv16(TMP1); 2196 r16_w(IR[0], TMP1); 2197 prefetch_done(); 2198 21996d00 ff80 0 mov.w r32ph r16l h 2200 TMP2 = r32_r(IR[0] >> 4); 2201 prefetch_start(); 2202 internal(1); 2203 TMP1 = read16(TMP2); 2204 TMP2 += 2; 2205 r32_w(IR[0] >> 4, TMP2); 2206 set_nzv16(TMP1); 2207 r16_w(IR[0], TMP1); 2208 prefetch_done(); 2209 22106d80 ff88 0 mov.w r16l pr16h o 2211 TMP1 = r16_r(IR[0]); 2212 TMP2 = r16_r((IR[0] >> 4) & 7); 2213 prefetch_start(); 2214 internal(1); 2215 TMP2 -= 2; 2216 r16_w((IR[0] >> 4) & 7, TMP2); 2217 set_nzv16(TMP1); 2218 write16(TMP2, TMP1); 2219 prefetch_done(); 2220 22216d80 ff80 0 mov.w r16l pr32h h 2222 TMP1 = r16_r(IR[0]); 2223 TMP2 = r32_r(IR[0] >> 4); 2224 prefetch_start(); 2225 internal(1); 2226 TMP2 -= 2; 2227 r32_w(IR[0] >> 4, TMP2); 2228 set_nzv16(TMP1); 2229 write16(TMP2, TMP1); 2230 prefetch_done(); 2231 22326e00 ff80 0 mov.b r16d16h r8l o 2233 prefetch_start(); 2234 TMP1 = uint16_t(r16_r(IR[0] >> 4) + IR[1]); 2235 TMP2 = read8(TMP1); 2236 set_nzv8(TMP2); 2237 r8_w(IR[0], TMP2); 2238 prefetch_done(); 2239 22406e00 ff80 0 mov.b r32d16h r8l h 2241 prefetch_start(); 2242 TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]); 2243 TMP2 = read8(TMP1); 2244 set_nzv8(TMP2); 2245 r8_w(IR[0], TMP2); 2246 prefetch_done(); 2247 22486e80 ff80 0 mov.b r8l r16d16h o 2249 prefetch_start(); 2250 TMP1 = uint16_t(r16_r((IR[0] >> 4) & 7) + IR[1]); 2251 TMP2 = r8_r(IR[0]); 2252 set_nzv8(TMP2); 2253 write8(TMP1, TMP2); 2254 prefetch_done(); 2255 22566e80 ff80 0 mov.b r8l r32d16h h 2257 prefetch_start(); 2258 TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]); 2259 TMP2 = r8_r(IR[0]); 2260 set_nzv8(TMP2); 2261 write8(TMP1, TMP2); 2262 prefetch_done(); 2263 22646f00 ff80 0 mov.w r16d16h r16l o 2265 prefetch_start(); 2266 TMP1 = uint16_t(r16_r(IR[0] >> 4) + IR[1]); 2267 TMP2 = read16(TMP1); 2268 set_nzv16(TMP2); 2269 r16_w(IR[0], TMP2); 2270 prefetch_done(); 2271 22726f00 ff80 0 mov.w r32d16h r16l h 2273 prefetch_start(); 2274 TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]); 2275 TMP2 = read16(TMP1); 2276 set_nzv16(TMP2); 2277 r16_w(IR[0], TMP2); 2278 prefetch_done(); 2279 22806f80 ff80 0 mov.w r16l r16d16h o 2281 prefetch_start(); 2282 TMP1 = uint16_t(r16_r((IR[0] >> 4) & 7) + IR[1]); 2283 TMP2 = r16_r(IR[0]); 2284 set_nzv16(TMP2); 2285 write16(TMP1, TMP2); 2286 prefetch_done(); 2287 22886f80 ff80 0 mov.w r16l r32d16h h 2289 prefetch_start(); 2290 TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]); 2291 TMP2 = r16_r(IR[0]); 2292 set_nzv16(TMP2); 2293 write16(TMP1, TMP2); 2294 prefetch_done(); 2295 22967000 ff80 0 bset imm3 r8l 2297 TMP1 = r8_r(IR[0]); 2298 bset IR[0] >> 4 2299 r8_w(IR[0], TMP1); 2300 prefetch(); 2301 23027100 ff80 0 bnot imm3 r8l 2303 TMP1 = r8_r(IR[0]); 2304 bnot IR[0] >> 4 2305 r8_w(IR[0], TMP1); 2306 prefetch(); 2307 23087200 ff80 0 bclr imm3 r8l 2309 TMP1 = r8_r(IR[0]); 2310 bclr IR[0] >> 4 2311 r8_w(IR[0], TMP1); 2312 prefetch(); 2313 23147300 ff80 0 btst imm3 r8l 2315 TMP1 = r8_r(IR[0]); 2316 btst IR[0] >> 4 2317 prefetch(); 2318 23197400 ff80 0 bor imm3 r8l 2320 TMP1 = r8_r(IR[0]); 2321 bor IR[0] >> 4 2322 prefetch(); 2323 23247480 ff80 0 bior imm3 r8l 2325 TMP1 = r8_r(IR[0]); 2326 bior IR[0] >> 4 2327 prefetch(); 2328 23297500 ff80 0 bxor imm3 r8l 2330 TMP1 = r8_r(IR[0]); 2331 bxor IR[0] >> 4 2332 prefetch(); 2333 23347580 ff80 0 bixor imm3 r8l 2335 TMP1 = r8_r(IR[0]); 2336 bixor IR[0] >> 4 2337 prefetch(); 2338 23397600 ff80 0 band imm3 r8l 2340 TMP1 = r8_r(IR[0]); 2341 band IR[0] >> 4 2342 prefetch(); 2343 23447680 ff80 0 biand imm3 r8l 2345 TMP1 = r8_r(IR[0]); 2346 biand IR[0] >> 4 2347 prefetch(); 2348 23497700 ff80 0 bld imm3 r8l 2350 TMP1 = r8_r(IR[0]); 2351 bld IR[0] >> 4 2352 prefetch(); 2353 23547780 ff80 0 bild imm3 r8l 2355 TMP1 = r8_r(IR[0]); 2356 bild IR[0] >> 4 2357 prefetch(); 2358 235978006a20 ff8ffff0 0 mov.b r32d32hh r8l h 2360 prefetch_start(); 2361 TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3]; 2362 TMP2 = read8(TMP1); 2363 set_nzv8(TMP2); 2364 r8_w(IR[1], TMP2); 2365 prefetch_done(); 2366 236778006aa0 ff8ffff0 0 mov.b r8l r32d32hh h 2368 prefetch_start(); 2369 TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3]; 2370 TMP2 = r8_r(IR[1]); 2371 set_nzv8(TMP2); 2372 write8(TMP1, TMP2); 2373 prefetch_done(); 2374 237578006b20 ff8ffff0 0 mov.w r32d32hh r16l h 2376 prefetch_start(); 2377 TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3]; 2378 TMP2 = read16(TMP1); 2379 set_nzv16(TMP2); 2380 r16_w(IR[1], TMP2); 2381 prefetch_done(); 2382 238378006ba0 ff8ffff0 0 mov.w r16l r32d32hh h 2384 prefetch_start(); 2385 TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3]; 2386 TMP2 = r16_r(IR[1]); 2387 set_nzv16(TMP2); 2388 write16(TMP1, TMP2); 2389 prefetch_done(); 2390 23917900 fff0 0 mov.w imm16 r16l 2392 set_nzv16(IR[1]); 2393 r16_w(IR[0], IR[1]); 2394 prefetch(); 2395 23967910 fff0 0 add.w imm16 r16l 2397 r16_w(IR[0], do_add16(r16_r(IR[0]), IR[1])); 2398 prefetch(); 2399 24007920 fff0 0 cmp.w imm16 r16l 2401 do_sub16(r16_r(IR[0]), IR[1]); 2402 prefetch(); 2403 24047930 fff0 0 sub.w imm16 r16l 2405 r16_w(IR[0], do_sub16(r16_r(IR[0]), IR[1])); 2406 prefetch(); 2407 24087940 fff0 0 or.w imm16 r16l 2409 TMP1 = IR[1] | r16_r(IR[0]); 2410 set_nzv16(TMP1); 2411 r16_w(IR[0], TMP1); 2412 prefetch(); 2413 24147950 fff0 0 xor.w imm16 r16l 2415 TMP1 = IR[1] ^ r16_r(IR[0]); 2416 set_nzv16(TMP1); 2417 r16_w(IR[0], TMP1); 2418 prefetch(); 2419 24207960 fff0 0 and.w imm16 r16l 2421 TMP1 = IR[1] & r16_r(IR[0]); 2422 set_nzv16(TMP1); 2423 r16_w(IR[0], TMP1); 2424 prefetch(); 2425 24267a00 fff8 0 mov.l imm32 r32l h 2427 TMP1 = (IR[1] << 16) | IR[2]; 2428 set_nzv32(TMP1); 2429 r32_w(IR[0], TMP1); 2430 prefetch(); 2431 24327a10 fff8 0 add.l imm32 r32l h 2433 r32_w(IR[0], do_add32(r32_r(IR[0]), (IR[1] << 16) | IR[2])); 2434 prefetch(); 2435 24367a20 fff8 0 cmp.l imm32 r32l h 2437 do_sub32(r32_r(IR[0]), (IR[1] << 16) | IR[2]); 2438 prefetch(); 2439 24407a30 fff8 0 sub.l imm32 r32l h 2441 r32_w(IR[0], do_sub32(r32_r(IR[0]), (IR[1] << 16) | IR[2])); 2442 prefetch(); 2443 24447a40 fff8 0 or.l imm32 r32l h 2445 TMP1 = r32_r(IR[0]) | ((IR[1] << 16) | IR[2]); 2446 set_nzv32(TMP1); 2447 r32_w(IR[0], TMP1); 2448 prefetch(); 2449 24507a50 fff8 0 xor.l imm32 r32l h 2451 TMP1 = r32_r(IR[0]) ^ ((IR[1] << 16) | IR[2]); 2452 set_nzv32(TMP1); 2453 r32_w(IR[0], TMP1); 2454 prefetch(); 2455 24567a60 fff8 0 and.l imm32 r32l h 2457 TMP1 = r32_r(IR[0]) & ((IR[1] << 16) | IR[2]); 2458 set_nzv32(TMP1); 2459 r32_w(IR[0], TMP1); 2460 prefetch(); 2461 24627b5c598f ffffffff 0 eepmov.b - - o 2463 while(r8_r(4+8)) { 2464 TMP1 = read8(r16_r(5)); 2465 write8(r16_r(6), TMP1); 2466 r16_w(5, r16_r(5)+1); 2467 r16_w(6, r16_r(6)+1); 2468 r8_w(4+8, r8_r(4+8)-1); 2469 } 2470 prefetch(); 2471 24727b5c598f ffffffff 0 eepmov.b - - h 2473 while(r8_r(4+8)) { 2474 TMP1 = read8(r32_r(5)); 2475 write8(r32_r(6), TMP1); 2476 r32_w(5, r32_r(5)+1); 2477 r32_w(6, r32_r(6)+1); 2478 r8_w(4+8, r8_r(4+8)-1); 2479 } 2480 prefetch(); 2481 24827bd4598f ffffffff 0 eepmov.w - - h 2483 while(r16_r(4)) { 2484 TMP1 = read8(r32_r(5)); 2485 write8(r32_r(6), TMP1); 2486 r32_w(5, r32_r(5)+1); 2487 r32_w(6, r32_r(6)+1); 2488 r16_w(4, r16_r(4)-1); 2489 } 2490 prefetch(); 2491 24927c006300 ff8fff0f 0 btst r8h r16ihh o 2493 TMP2 = r16_r(IR[0] >> 4); 2494 TMP1 = read8(TMP2); 2495 btst r8_r(IR[1] >> 4) 2496 prefetch(); 2497 24987c006300 ff8fff0f 0 btst r8h r32ihh h 2499 TMP2 = r32_r(IR[0] >> 4); 2500 TMP1 = read8(TMP2); 2501 btst r8_r(IR[1] >> 4) 2502 prefetch(); 2503 25047c007300 ff8fff8f 0 btst imm3 r16ihh o 2505 TMP2 = r16_r(IR[0] >> 4); 2506 TMP1 = read8(TMP2); 2507 btst IR[1] >> 4 2508 prefetch(); 2509 25107c007300 ff8fff8f 0 btst imm3 r32ihh h 2511 TMP2 = r32_r(IR[0] >> 4); 2512 TMP1 = read8(TMP2); 2513 btst IR[1] >> 4 2514 prefetch(); 2515 25167c007400 ff8fff8f 0 bor imm3 r16ihh o 2517 TMP2 = r16_r(IR[0] >> 4); 2518 TMP1 = read8(TMP2); 2519 bor IR[1] >> 4 2520 prefetch(); 2521 25227c007400 ff8fff8f 0 bor imm3 r32ihh h 2523 TMP2 = r32_r(IR[0] >> 4); 2524 TMP1 = read8(TMP2); 2525 bor IR[1] >> 4 2526 prefetch(); 2527 25287c007480 ff8fff8f 0 bior imm3 r16ihh o 2529 TMP2 = r16_r(IR[0] >> 4); 2530 TMP1 = read8(TMP2); 2531 bior IR[1] >> 4 2532 prefetch(); 2533 25347c007480 ff8fff8f 0 bior imm3 r32ihh h 2535 TMP2 = r32_r(IR[0] >> 4); 2536 TMP1 = read8(TMP2); 2537 bior IR[1] >> 4 2538 prefetch(); 2539 25407c007500 ff8fff8f 0 bxor imm3 r16ihh o 2541 TMP2 = r16_r(IR[0] >> 4); 2542 TMP1 = read8(TMP2); 2543 bxor IR[1] >> 4 2544 prefetch(); 2545 25467c007500 ff8fff8f 0 bxor imm3 r32ihh h 2547 TMP2 = r32_r(IR[0] >> 4); 2548 TMP1 = read8(TMP2); 2549 bxor IR[1] >> 4 2550 prefetch(); 2551 25527c007580 ff8fff8f 0 bixor imm3 r16ihh o 2553 TMP2 = r16_r(IR[0] >> 4); 2554 TMP1 = read8(TMP2); 2555 bixor IR[1] >> 4 2556 prefetch(); 2557 25587c007580 ff8fff8f 0 bixor imm3 r32ihh h 2559 TMP2 = r32_r(IR[0] >> 4); 2560 TMP1 = read8(TMP2); 2561 bixor IR[1] >> 4 2562 prefetch(); 2563 25647c007600 ff8fff8f 0 band imm3 r16ihh o 2565 TMP2 = r16_r(IR[0] >> 4); 2566 TMP1 = read8(TMP2); 2567 band IR[1] >> 4 2568 prefetch(); 2569 25707c007600 ff8fff8f 0 band imm3 r32ihh h 2571 TMP2 = r32_r(IR[0] >> 4); 2572 TMP1 = read8(TMP2); 2573 band IR[1] >> 4 2574 prefetch(); 2575 25767c007680 ff8fff8f 0 biand imm3 r16ihh o 2577 TMP2 = r16_r(IR[0] >> 4); 2578 TMP1 = read8(TMP2); 2579 biand IR[1] >> 4 2580 prefetch(); 2581 25827c007680 ff8fff8f 0 biand imm3 r32ihh h 2583 TMP2 = r32_r(IR[0] >> 4); 2584 TMP1 = read8(TMP2); 2585 biand IR[1] >> 4 2586 prefetch(); 2587 25887c007700 ff8fff8f 0 bld imm3 r16ihh o 2589 TMP2 = r16_r(IR[0] >> 4); 2590 TMP1 = read8(TMP2); 2591 bld IR[1] >> 4 2592 prefetch(); 2593 25947c007700 ff8fff8f 0 bld imm3 r32ihh h 2595 TMP2 = r32_r(IR[0] >> 4); 2596 TMP1 = read8(TMP2); 2597 bld IR[1] >> 4 2598 prefetch(); 2599 26007c007780 ff8fff8f 0 bild imm3 r16ihh o 2601 TMP2 = r16_r(IR[0] >> 4); 2602 TMP1 = read8(TMP2); 2603 bild IR[1] >> 4 2604 prefetch(); 2605 26067c007780 ff8fff8f 0 bild imm3 r32ihh h 2607 TMP2 = r32_r(IR[0] >> 4); 2608 TMP1 = read8(TMP2); 2609 bild IR[1] >> 4 2610 prefetch(); 2611 26127d006000 ff8fff0f 0 bset r8h r16ihh o 2613 TMP2 = r16_r(IR[0] >> 4); 2614 TMP1 = read8(TMP2); 2615 bset r8_r(IR[1] >> 4) 2616 prefetch_start(); 2617 write8(TMP2, TMP1); 2618 prefetch_done(); 2619 26207d006000 ff8fff0f 0 bset r8h r32ihh h 2621 TMP2 = r32_r(IR[0] >> 4); 2622 TMP1 = read8(TMP2); 2623 bset r8_r(IR[1] >> 4) 2624 prefetch_start(); 2625 write8(TMP2, TMP1); 2626 prefetch_done(); 2627 26287d006100 ff8fff0f 0 bnot r8h r16ihh o 2629 TMP2 = r16_r(IR[0] >> 4); 2630 TMP1 = read8(TMP2); 2631 bnot r8_r(IR[1] >> 4) 2632 prefetch_start(); 2633 write8(TMP2, TMP1); 2634 prefetch_done(); 2635 26367d006100 ff8fff0f 0 bnot r8h r32ihh h 2637 TMP2 = r32_r(IR[0] >> 4); 2638 TMP1 = read8(TMP2); 2639 bnot r8_r(IR[1] >> 4) 2640 prefetch_start(); 2641 write8(TMP2, TMP1); 2642 prefetch_done(); 2643 26447d006200 ff8fff0f 0 bclr r8h r16ihh o 2645 TMP2 = r16_r(IR[0] >> 4); 2646 TMP1 = read8(TMP2); 2647 bclr r8_r(IR[1] >> 4) 2648 prefetch_start(); 2649 write8(TMP2, TMP1); 2650 prefetch_done(); 2651 26527d006200 ff8fff0f 0 bclr r8h r32ihh h 2653 TMP2 = r32_r(IR[0] >> 4); 2654 TMP1 = read8(TMP2); 2655 bclr r8_r(IR[1] >> 4) 2656 prefetch_start(); 2657 write8(TMP2, TMP1); 2658 prefetch_done(); 2659 26607d006700 ff8fff8f 0 bst imm3 r16ihh o 2661 TMP2 = r16_r(IR[0] >> 4); 2662 TMP1 = read8(TMP2); 2663 bst IR[1] >> 4 2664 prefetch_start(); 2665 write8(TMP2, TMP1); 2666 prefetch_done(); 2667 26687d006700 ff8fff8f 0 bst imm3 r32ihh h 2669 TMP2 = r32_r(IR[0] >> 4); 2670 TMP1 = read8(TMP2); 2671 bst IR[1] >> 4 2672 prefetch_start(); 2673 write8(TMP2, TMP1); 2674 prefetch_done(); 2675 26767d006780 ff8fff8f 0 bist imm3 r16ihh o 2677 TMP2 = r16_r(IR[0] >> 4); 2678 TMP1 = read8(TMP2); 2679 bist IR[1] >> 4 2680 prefetch_start(); 2681 write8(TMP2, TMP1); 2682 prefetch_done(); 2683 26847d006780 ff8fff8f 0 bist imm3 r32ihh h 2685 TMP2 = r32_r(IR[0] >> 4); 2686 TMP1 = read8(TMP2); 2687 bist IR[1] >> 4 2688 prefetch_start(); 2689 write8(TMP2, TMP1); 2690 prefetch_done(); 2691 26927d007000 ff8fff8f 0 bset imm3 r16ihh o 2693 TMP2 = r16_r(IR[0] >> 4); 2694 TMP1 = read8(TMP2); 2695 bset IR[1] >> 4 2696 prefetch_start(); 2697 write8(TMP2, TMP1); 2698 prefetch_done(); 2699 27007d007000 ff8fff8f 0 bset imm3 r32ihh h 2701 TMP2 = r32_r(IR[0] >> 4); 2702 TMP1 = read8(TMP2); 2703 bset IR[1] >> 4 2704 prefetch_start(); 2705 write8(TMP2, TMP1); 2706 prefetch_done(); 2707 27087d007100 ff8fff8f 0 bnot imm3 r16ihh o 2709 TMP2 = r16_r(IR[0] >> 4); 2710 TMP1 = read8(TMP2); 2711 bnot IR[1] >> 4 2712 prefetch_start(); 2713 write8(TMP2, TMP1); 2714 prefetch_done(); 2715 27167d007100 ff8fff8f 0 bnot imm3 r32ihh h 2717 TMP2 = r32_r(IR[0] >> 4); 2718 TMP1 = read8(TMP2); 2719 bnot IR[1] >> 4 2720 prefetch_start(); 2721 write8(TMP2, TMP1); 2722 prefetch_done(); 2723 27247d007200 ff8fff8f 0 bclr imm3 r16ihh o 2725 TMP2 = r16_r(IR[0] >> 4); 2726 TMP1 = read8(TMP2); 2727 bclr IR[1] >> 4 2728 prefetch_start(); 2729 write8(TMP2, TMP1); 2730 prefetch_done(); 2731 27327d007200 ff8fff8f 0 bclr imm3 r32ihh h 2733 TMP2 = r32_r(IR[0] >> 4); 2734 TMP1 = read8(TMP2); 2735 bclr IR[1] >> 4 2736 prefetch_start(); 2737 write8(TMP2, TMP1); 2738 prefetch_done(); 2739 27407e006300 ff00ff0f 0 btst r8h abs8 2741 TMP2 = 0xffffff00 | IR[0]; 2742 TMP1 = read8(TMP2); 2743 btst r8_r(IR[1] >> 4) 2744 prefetch(); 2745 27467e007300 ff00ff8f 0 btst imm3 abs8 2747 TMP2 = 0xffffff00 | IR[0]; 2748 TMP1 = read8(TMP2); 2749 btst IR[1] >> 4 2750 prefetch(); 2751 27527e007400 ff00ff8f 0 bor imm3 abs8 2753 TMP2 = 0xffffff00 | IR[0]; 2754 TMP1 = read8(TMP2); 2755 bor IR[1] >> 4 2756 prefetch(); 2757 27587e007480 ff00ff8f 0 bior imm3 abs8 2759 TMP2 = 0xffffff00 | IR[0]; 2760 TMP1 = read8(TMP2); 2761 bior IR[1] >> 4 2762 prefetch(); 2763 27647e007500 ff00ff8f 0 bxor imm3 abs8 2765 TMP2 = 0xffffff00 | IR[0]; 2766 TMP1 = read8(TMP2); 2767 bxor IR[1] >> 4 2768 prefetch(); 2769 27707e007580 ff00ff8f 0 bixor imm3 abs8 2771 TMP2 = 0xffffff00 | IR[0]; 2772 TMP1 = read8(TMP2); 2773 bixor IR[1] >> 4 2774 prefetch(); 2775 27767e007600 ff00ff8f 0 band imm3 abs8 2777 TMP2 = 0xffffff00 | IR[0]; 2778 TMP1 = read8(TMP2); 2779 band IR[1] >> 4 2780 prefetch(); 2781 27827e007680 ff00ff8f 0 biand imm3 abs8 2783 TMP2 = 0xffffff00 | IR[0]; 2784 TMP1 = read8(TMP2); 2785 biand IR[1] >> 4 2786 prefetch(); 2787 27887e007700 ff00ff8f 0 bld imm3 abs8 2789 TMP2 = 0xffffff00 | IR[0]; 2790 TMP1 = read8(TMP2); 2791 bld IR[1] >> 4 2792 prefetch(); 2793 27947e007780 ff00ff8f 0 bild imm3 abs8 2795 TMP2 = 0xffffff00 | IR[0]; 2796 TMP1 = read8(TMP2); 2797 bild IR[1] >> 4 2798 prefetch(); 2799 28007f006000 ff00ff0f 0 bset r8h abs8 2801 TMP2 = 0xffffff00 | IR[0]; 2802 TMP1 = read8(TMP2); 2803 bset r8_r(IR[1] >> 4) 2804 prefetch_start(); 2805 write8(TMP2, TMP1); 2806 prefetch_done(); 2807 28087f006100 ff00ff0f 0 bnot r8h abs8 2809 TMP2 = 0xffffff00 | IR[0]; 2810 TMP1 = read8(TMP2); 2811 bnot r8_r(IR[1] >> 4) 2812 prefetch_start(); 2813 write8(TMP2, TMP1); 2814 prefetch_done(); 2815 28167f006200 ff00ff0f 0 bclr r8h abs8 2817 TMP2 = 0xffffff00 | IR[0]; 2818 TMP1 = read8(TMP2); 2819 bclr r8_r(IR[1] >> 4) 2820 prefetch_start(); 2821 write8(TMP2, TMP1); 2822 prefetch_done(); 2823 28247f006700 ff00ff8f 0 bst imm3 abs8 2825 TMP2 = 0xffffff00 | IR[0]; 2826 TMP1 = read8(TMP2); 2827 prefetch_start(); 2828 bst IR[0] >> 4 2829 write8(TMP2, TMP1); 2830 prefetch_done(); 2831 28327f006780 ff00ff8f 0 bist imm3 abs8 2833 TMP2 = 0xffffff00 | IR[0]; 2834 TMP1 = read8(TMP2); 2835 prefetch_start(); 2836 bist IR[0] >> 4 2837 write8(TMP2, TMP1); 2838 prefetch_done(); 2839 28407f007000 ff00ff8f 0 bset imm3 abs8 2841 TMP2 = 0xffffff00 | IR[0]; 2842 TMP1 = read8(TMP2); 2843 prefetch_start(); 2844 bset IR[1] >> 4 2845 write8(TMP2, TMP1); 2846 prefetch_done(); 2847 28487f007100 ff00ff8f 0 bnot imm3 abs8 2849 TMP2 = 0xffffff00 | IR[0]; 2850 TMP1 = read8(TMP2); 2851 prefetch_start(); 2852 bnot IR[1] >> 4 2853 write8(TMP2, TMP1); 2854 prefetch_done(); 2855 28567f007200 ff00ff8f 0 bclr imm3 abs8 2857 TMP2 = 0xffffff00 | IR[0]; 2858 TMP1 = read8(TMP2); 2859 prefetch_start(); 2860 bclr IR[1] >> 4 2861 write8(TMP2, TMP1); 2862 prefetch_done(); 2863 28648000 f000 0 add.b imm8 r8u 2865 r8_w(IR[0] >> 8, do_add8(r8_r(IR[0] >> 8), IR[0])); 2866 prefetch(); 2867 28689000 f000 0 addx.b imm8 r8u 2869 r8_w(IR[0] >> 8, do_addx8(r8_r(IR[0] >> 8), IR[0])); 2870 prefetch(); 2871 2872a000 f000 0 cmp.b imm8 r8u 2873 do_sub8(r8_r(IR[0]>>8), IR[0]); 2874 prefetch(); 2875 2876b000 f000 0 subx.b imm8 r8u 2877 r8_w(IR[0] >> 8, do_subx8(r8_r(IR[0] >> 8), IR[0])); 2878 prefetch(); 2879 2880c000 f000 0 or.b imm8 r8u 2881 TMP1 = IR[0] | r8_r(IR[0] >> 8); 2882 set_nzv8(TMP1); 2883 r8_w(IR[0] >> 8, TMP1); 2884 prefetch(); 2885 2886d000 f000 0 xor.b imm8 r8u 2887 TMP1 = IR[0] ^ r8_r(IR[0] >> 8); 2888 set_nzv8(TMP1); 2889 r8_w(IR[0] >> 8, TMP1); 2890 prefetch(); 2891 2892e000 f000 0 and.b imm8 r8u 2893 TMP1 = IR[0] & r8_r(IR[0] >> 8); 2894 set_nzv8(TMP1); 2895 r8_w(IR[0] >> 8, TMP1); 2896 prefetch(); 2897 2898f000 f000 0 mov.b imm8 r8u 2899 set_nzv8(IR[0]); 2900 r8_w(IR[0] >> 8, IR[0]); 2901 prefetch(); 2902