Commit 559dd74de8880b05ac9b3da2228f982aafa8f580
1 parent
1e8864f7
SH4: convert logic and arithmetic ops to TCG
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5103 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
111 additions
and
317 deletions
target-sh4/op.c
@@ -43,12 +43,6 @@ void OPPROTO op_cmp_eq_imm_T0(void) | @@ -43,12 +43,6 @@ void OPPROTO op_cmp_eq_imm_T0(void) | ||
43 | RETURN(); | 43 | RETURN(); |
44 | } | 44 | } |
45 | 45 | ||
46 | -void OPPROTO op_not_T0(void) | ||
47 | -{ | ||
48 | - T0 = ~T0; | ||
49 | - RETURN(); | ||
50 | -} | ||
51 | - | ||
52 | void OPPROTO op_bf_s(void) | 46 | void OPPROTO op_bf_s(void) |
53 | { | 47 | { |
54 | env->delayed_pc = PARAM1; | 48 | env->delayed_pc = PARAM1; |
@@ -113,18 +107,6 @@ void OPPROTO op_rts(void) | @@ -113,18 +107,6 @@ void OPPROTO op_rts(void) | ||
113 | RETURN(); | 107 | RETURN(); |
114 | } | 108 | } |
115 | 109 | ||
116 | -void OPPROTO op_addl_imm_T0(void) | ||
117 | -{ | ||
118 | - T0 += PARAM1; | ||
119 | - RETURN(); | ||
120 | -} | ||
121 | - | ||
122 | -void OPPROTO op_addl_imm_T1(void) | ||
123 | -{ | ||
124 | - T1 += PARAM1; | ||
125 | - RETURN(); | ||
126 | -} | ||
127 | - | ||
128 | void OPPROTO op_clrmac(void) | 110 | void OPPROTO op_clrmac(void) |
129 | { | 111 | { |
130 | env->mach = env->macl = 0; | 112 | env->mach = env->macl = 0; |
@@ -180,30 +162,6 @@ void OPPROTO op_rte(void) | @@ -180,30 +162,6 @@ void OPPROTO op_rte(void) | ||
180 | RETURN(); | 162 | RETURN(); |
181 | } | 163 | } |
182 | 164 | ||
183 | -void OPPROTO op_swapb_T0(void) | ||
184 | -{ | ||
185 | - T0 = (T0 & 0xffff0000) | ((T0 & 0xff) << 8) | ((T0 >> 8) & 0xff); | ||
186 | - RETURN(); | ||
187 | -} | ||
188 | - | ||
189 | -void OPPROTO op_swapw_T0(void) | ||
190 | -{ | ||
191 | - T0 = ((T0 & 0xffff) << 16) | ((T0 >> 16) & 0xffff); | ||
192 | - RETURN(); | ||
193 | -} | ||
194 | - | ||
195 | -void OPPROTO op_xtrct_T0_T1(void) | ||
196 | -{ | ||
197 | - T1 = ((T0 & 0xffff) << 16) | ((T1 >> 16) & 0xffff); | ||
198 | - RETURN(); | ||
199 | -} | ||
200 | - | ||
201 | -void OPPROTO op_add_T0_T1(void) | ||
202 | -{ | ||
203 | - T1 += T0; | ||
204 | - RETURN(); | ||
205 | -} | ||
206 | - | ||
207 | void OPPROTO op_addc_T0_T1(void) | 165 | void OPPROTO op_addc_T0_T1(void) |
208 | { | 166 | { |
209 | helper_addc_T0_T1(); | 167 | helper_addc_T0_T1(); |
@@ -329,12 +287,6 @@ void OPPROTO op_muluw_T0_T1(void) | @@ -329,12 +287,6 @@ void OPPROTO op_muluw_T0_T1(void) | ||
329 | RETURN(); | 287 | RETURN(); |
330 | } | 288 | } |
331 | 289 | ||
332 | -void OPPROTO op_neg_T0(void) | ||
333 | -{ | ||
334 | - T0 = -T0; | ||
335 | - RETURN(); | ||
336 | -} | ||
337 | - | ||
338 | void OPPROTO op_negc_T0(void) | 290 | void OPPROTO op_negc_T0(void) |
339 | { | 291 | { |
340 | helper_negc_T0(); | 292 | helper_negc_T0(); |
@@ -508,42 +460,6 @@ void OPPROTO op_shlr_Rn(void) | @@ -508,42 +460,6 @@ void OPPROTO op_shlr_Rn(void) | ||
508 | RETURN(); | 460 | RETURN(); |
509 | } | 461 | } |
510 | 462 | ||
511 | -void OPPROTO op_shll2_Rn(void) | ||
512 | -{ | ||
513 | - env->gregs[PARAM1] <<= 2; | ||
514 | - RETURN(); | ||
515 | -} | ||
516 | - | ||
517 | -void OPPROTO op_shll8_Rn(void) | ||
518 | -{ | ||
519 | - env->gregs[PARAM1] <<= 8; | ||
520 | - RETURN(); | ||
521 | -} | ||
522 | - | ||
523 | -void OPPROTO op_shll16_Rn(void) | ||
524 | -{ | ||
525 | - env->gregs[PARAM1] <<= 16; | ||
526 | - RETURN(); | ||
527 | -} | ||
528 | - | ||
529 | -void OPPROTO op_shlr2_Rn(void) | ||
530 | -{ | ||
531 | - env->gregs[PARAM1] >>= 2; | ||
532 | - RETURN(); | ||
533 | -} | ||
534 | - | ||
535 | -void OPPROTO op_shlr8_Rn(void) | ||
536 | -{ | ||
537 | - env->gregs[PARAM1] >>= 8; | ||
538 | - RETURN(); | ||
539 | -} | ||
540 | - | ||
541 | -void OPPROTO op_shlr16_Rn(void) | ||
542 | -{ | ||
543 | - env->gregs[PARAM1] >>= 16; | ||
544 | - RETURN(); | ||
545 | -} | ||
546 | - | ||
547 | void OPPROTO op_fmov_frN_FT0(void) | 463 | void OPPROTO op_fmov_frN_FT0(void) |
548 | { | 464 | { |
549 | FT0 = env->fregs[PARAM1]; | 465 | FT0 = env->fregs[PARAM1]; |
@@ -736,120 +652,6 @@ void OPPROTO op_fmov_T0_frN(void) | @@ -736,120 +652,6 @@ void OPPROTO op_fmov_T0_frN(void) | ||
736 | RETURN(); | 652 | RETURN(); |
737 | } | 653 | } |
738 | 654 | ||
739 | -void OPPROTO op_dec1_rN(void) | ||
740 | -{ | ||
741 | - env->gregs[PARAM1] -= 1; | ||
742 | - RETURN(); | ||
743 | -} | ||
744 | - | ||
745 | -void OPPROTO op_dec2_rN(void) | ||
746 | -{ | ||
747 | - env->gregs[PARAM1] -= 2; | ||
748 | - RETURN(); | ||
749 | -} | ||
750 | - | ||
751 | -void OPPROTO op_dec4_rN(void) | ||
752 | -{ | ||
753 | - env->gregs[PARAM1] -= 4; | ||
754 | - RETURN(); | ||
755 | -} | ||
756 | - | ||
757 | -void OPPROTO op_dec8_rN(void) | ||
758 | -{ | ||
759 | - env->gregs[PARAM1] -= 8; | ||
760 | - RETURN(); | ||
761 | -} | ||
762 | - | ||
763 | -void OPPROTO op_inc1_rN(void) | ||
764 | -{ | ||
765 | - env->gregs[PARAM1] += 1; | ||
766 | - RETURN(); | ||
767 | -} | ||
768 | - | ||
769 | -void OPPROTO op_inc2_rN(void) | ||
770 | -{ | ||
771 | - env->gregs[PARAM1] += 2; | ||
772 | - RETURN(); | ||
773 | -} | ||
774 | - | ||
775 | -void OPPROTO op_inc4_rN(void) | ||
776 | -{ | ||
777 | - env->gregs[PARAM1] += 4; | ||
778 | - RETURN(); | ||
779 | -} | ||
780 | - | ||
781 | -void OPPROTO op_inc8_rN(void) | ||
782 | -{ | ||
783 | - env->gregs[PARAM1] += 8; | ||
784 | - RETURN(); | ||
785 | -} | ||
786 | - | ||
787 | -void OPPROTO op_add_T0_rN(void) | ||
788 | -{ | ||
789 | - env->gregs[PARAM1] += T0; | ||
790 | - RETURN(); | ||
791 | -} | ||
792 | - | ||
793 | -void OPPROTO op_sub_T0_rN(void) | ||
794 | -{ | ||
795 | - env->gregs[PARAM1] -= T0; | ||
796 | - RETURN(); | ||
797 | -} | ||
798 | - | ||
799 | -void OPPROTO op_and_T0_rN(void) | ||
800 | -{ | ||
801 | - env->gregs[PARAM1] &= T0; | ||
802 | - RETURN(); | ||
803 | -} | ||
804 | - | ||
805 | -void OPPROTO op_or_T0_rN(void) | ||
806 | -{ | ||
807 | - env->gregs[PARAM1] |= T0; | ||
808 | - RETURN(); | ||
809 | -} | ||
810 | - | ||
811 | -void OPPROTO op_xor_T0_rN(void) | ||
812 | -{ | ||
813 | - env->gregs[PARAM1] ^= T0; | ||
814 | - RETURN(); | ||
815 | -} | ||
816 | - | ||
817 | -void OPPROTO op_add_rN_T0(void) | ||
818 | -{ | ||
819 | - T0 += env->gregs[PARAM1]; | ||
820 | - RETURN(); | ||
821 | -} | ||
822 | - | ||
823 | -void OPPROTO op_add_rN_T1(void) | ||
824 | -{ | ||
825 | - T1 += env->gregs[PARAM1]; | ||
826 | - RETURN(); | ||
827 | -} | ||
828 | - | ||
829 | -void OPPROTO op_add_imm_rN(void) | ||
830 | -{ | ||
831 | - env->gregs[PARAM2] += PARAM1; | ||
832 | - RETURN(); | ||
833 | -} | ||
834 | - | ||
835 | -void OPPROTO op_and_imm_rN(void) | ||
836 | -{ | ||
837 | - env->gregs[PARAM2] &= PARAM1; | ||
838 | - RETURN(); | ||
839 | -} | ||
840 | - | ||
841 | -void OPPROTO op_or_imm_rN(void) | ||
842 | -{ | ||
843 | - env->gregs[PARAM2] |= PARAM1; | ||
844 | - RETURN(); | ||
845 | -} | ||
846 | - | ||
847 | -void OPPROTO op_xor_imm_rN(void) | ||
848 | -{ | ||
849 | - env->gregs[PARAM2] ^= PARAM1; | ||
850 | - RETURN(); | ||
851 | -} | ||
852 | - | ||
853 | void OPPROTO op_dt_rN(void) | 655 | void OPPROTO op_dt_rN(void) |
854 | { | 656 | { |
855 | cond_t((--env->gregs[PARAM1]) == 0); | 657 | cond_t((--env->gregs[PARAM1]) == 0); |
@@ -908,24 +710,6 @@ void OPPROTO op_addl_GBR_T0(void) | @@ -908,24 +710,6 @@ void OPPROTO op_addl_GBR_T0(void) | ||
908 | RETURN(); | 710 | RETURN(); |
909 | } | 711 | } |
910 | 712 | ||
911 | -void OPPROTO op_and_imm_T0(void) | ||
912 | -{ | ||
913 | - T0 &= PARAM1; | ||
914 | - RETURN(); | ||
915 | -} | ||
916 | - | ||
917 | -void OPPROTO op_or_imm_T0(void) | ||
918 | -{ | ||
919 | - T0 |= PARAM1; | ||
920 | - RETURN(); | ||
921 | -} | ||
922 | - | ||
923 | -void OPPROTO op_xor_imm_T0(void) | ||
924 | -{ | ||
925 | - T0 ^= PARAM1; | ||
926 | - RETURN(); | ||
927 | -} | ||
928 | - | ||
929 | void OPPROTO op_tst_imm_T0(void) | 713 | void OPPROTO op_tst_imm_T0(void) |
930 | { | 714 | { |
931 | cond_t((T0 & PARAM1) == 0); | 715 | cond_t((T0 & PARAM1) == 0); |
target-sh4/translate.c
@@ -70,7 +70,7 @@ static void sh4_translate_init(void) | @@ -70,7 +70,7 @@ static void sh4_translate_init(void) | ||
70 | { | 70 | { |
71 | int i; | 71 | int i; |
72 | static int done_init = 0; | 72 | static int done_init = 0; |
73 | - static const char * const gregnames[24] = { | 73 | + static const char * const gregnames[24] = { |
74 | "R0_BANK0", "R1_BANK0", "R2_BANK0", "R3_BANK0", | 74 | "R0_BANK0", "R1_BANK0", "R2_BANK0", "R3_BANK0", |
75 | "R4_BANK0", "R5_BANK0", "R6_BANK0", "R7_BANK0", | 75 | "R4_BANK0", "R5_BANK0", "R6_BANK0", "R7_BANK0", |
76 | "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15", | 76 | "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15", |
@@ -344,12 +344,12 @@ void _decode_opc(DisasContext * ctx) | @@ -344,12 +344,12 @@ void _decode_opc(DisasContext * ctx) | ||
344 | case 0x1000: /* mov.l Rm,@(disp,Rn) */ | 344 | case 0x1000: /* mov.l Rm,@(disp,Rn) */ |
345 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 345 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
346 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 346 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
347 | - gen_op_addl_imm_T1(B3_0 * 4); | 347 | + tcg_gen_addi_i32(cpu_T[1], cpu_T[1], B3_0 * 4); |
348 | gen_op_stl_T0_T1(ctx); | 348 | gen_op_stl_T0_T1(ctx); |
349 | return; | 349 | return; |
350 | case 0x5000: /* mov.l @(disp,Rm),Rn */ | 350 | case 0x5000: /* mov.l @(disp,Rm),Rn */ |
351 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 351 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
352 | - gen_op_addl_imm_T0(B3_0 * 4); | 352 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B3_0 * 4); |
353 | gen_op_ldl_T0_T0(ctx); | 353 | gen_op_ldl_T0_T0(ctx); |
354 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 354 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
355 | return; | 355 | return; |
@@ -367,7 +367,7 @@ void _decode_opc(DisasContext * ctx) | @@ -367,7 +367,7 @@ void _decode_opc(DisasContext * ctx) | ||
367 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 367 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
368 | return; | 368 | return; |
369 | case 0x7000: /* add #imm,Rn */ | 369 | case 0x7000: /* add #imm,Rn */ |
370 | - gen_op_add_imm_rN(B7_0s, REG(B11_8)); | 370 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], B7_0s); |
371 | return; | 371 | return; |
372 | case 0xa000: /* bra disp */ | 372 | case 0xa000: /* bra disp */ |
373 | CHECK_NOT_DELAY_SLOT | 373 | CHECK_NOT_DELAY_SLOT |
@@ -419,104 +419,119 @@ void _decode_opc(DisasContext * ctx) | @@ -419,104 +419,119 @@ void _decode_opc(DisasContext * ctx) | ||
419 | return; | 419 | return; |
420 | case 0x2004: /* mov.b Rm,@-Rn */ | 420 | case 0x2004: /* mov.b Rm,@-Rn */ |
421 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 421 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
422 | - gen_op_dec1_rN(REG(B11_8)); /* modify register status */ | 422 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], |
423 | + cpu_gregs[REG(B11_8)], 1); /* modify register status */ | ||
423 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 424 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
424 | - gen_op_inc1_rN(REG(B11_8)); /* recover register status */ | ||
425 | - gen_op_stb_T0_T1(ctx); /* might cause re-execution */ | ||
426 | - gen_op_dec1_rN(REG(B11_8)); /* modify register status */ | 425 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], |
426 | + cpu_gregs[REG(B11_8)], 1); /* recover register status */ | ||
427 | + gen_op_stb_T0_T1(ctx); /* might cause re-execution */ | ||
428 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], | ||
429 | + cpu_gregs[REG(B11_8)], 1); /* modify register status */ | ||
427 | return; | 430 | return; |
428 | case 0x2005: /* mov.w Rm,@-Rn */ | 431 | case 0x2005: /* mov.w Rm,@-Rn */ |
429 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 432 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
430 | - gen_op_dec2_rN(REG(B11_8)); | 433 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], |
434 | + cpu_gregs[REG(B11_8)], 2); | ||
431 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 435 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
432 | - gen_op_inc2_rN(REG(B11_8)); | 436 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], |
437 | + cpu_gregs[REG(B11_8)], 2); | ||
433 | gen_op_stw_T0_T1(ctx); | 438 | gen_op_stw_T0_T1(ctx); |
434 | - gen_op_dec2_rN(REG(B11_8)); | 439 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], |
440 | + cpu_gregs[REG(B11_8)], 2); | ||
435 | return; | 441 | return; |
436 | case 0x2006: /* mov.l Rm,@-Rn */ | 442 | case 0x2006: /* mov.l Rm,@-Rn */ |
437 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 443 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
438 | - gen_op_dec4_rN(REG(B11_8)); | 444 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], |
445 | + cpu_gregs[REG(B11_8)], 4); | ||
439 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 446 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
440 | - gen_op_inc4_rN(REG(B11_8)); | 447 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], |
448 | + cpu_gregs[REG(B11_8)], 4); | ||
441 | gen_op_stl_T0_T1(ctx); | 449 | gen_op_stl_T0_T1(ctx); |
442 | - gen_op_dec4_rN(REG(B11_8)); | 450 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], |
451 | + cpu_gregs[REG(B11_8)], 4); | ||
443 | return; | 452 | return; |
444 | case 0x6004: /* mov.b @Rm+,Rn */ | 453 | case 0x6004: /* mov.b @Rm+,Rn */ |
445 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 454 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
446 | gen_op_ldb_T0_T0(ctx); | 455 | gen_op_ldb_T0_T0(ctx); |
447 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 456 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
448 | if ( B11_8 != B7_4 ) | 457 | if ( B11_8 != B7_4 ) |
449 | - gen_op_inc1_rN(REG(B7_4)); | 458 | + tcg_gen_addi_i32(cpu_gregs[REG(B7_4)], |
459 | + cpu_gregs[REG(B7_4)], 1); | ||
450 | return; | 460 | return; |
451 | case 0x6005: /* mov.w @Rm+,Rn */ | 461 | case 0x6005: /* mov.w @Rm+,Rn */ |
452 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 462 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
453 | gen_op_ldw_T0_T0(ctx); | 463 | gen_op_ldw_T0_T0(ctx); |
454 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 464 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
455 | if ( B11_8 != B7_4 ) | 465 | if ( B11_8 != B7_4 ) |
456 | - gen_op_inc2_rN(REG(B7_4)); | 466 | + tcg_gen_addi_i32(cpu_gregs[REG(B7_4)], |
467 | + cpu_gregs[REG(B7_4)], 2); | ||
457 | return; | 468 | return; |
458 | case 0x6006: /* mov.l @Rm+,Rn */ | 469 | case 0x6006: /* mov.l @Rm+,Rn */ |
459 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 470 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
460 | gen_op_ldl_T0_T0(ctx); | 471 | gen_op_ldl_T0_T0(ctx); |
461 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 472 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
462 | if ( B11_8 != B7_4 ) | 473 | if ( B11_8 != B7_4 ) |
463 | - gen_op_inc4_rN(REG(B7_4)); | 474 | + tcg_gen_addi_i32(cpu_gregs[REG(B7_4)], |
475 | + cpu_gregs[REG(B7_4)], 4); | ||
464 | return; | 476 | return; |
465 | case 0x0004: /* mov.b Rm,@(R0,Rn) */ | 477 | case 0x0004: /* mov.b Rm,@(R0,Rn) */ |
466 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 478 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
467 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 479 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
468 | - gen_op_add_rN_T1(REG(0)); | 480 | + tcg_gen_add_i32(cpu_T[1], cpu_T[1], cpu_gregs[REG(0)]); |
469 | gen_op_stb_T0_T1(ctx); | 481 | gen_op_stb_T0_T1(ctx); |
470 | return; | 482 | return; |
471 | case 0x0005: /* mov.w Rm,@(R0,Rn) */ | 483 | case 0x0005: /* mov.w Rm,@(R0,Rn) */ |
472 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 484 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
473 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 485 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
474 | - gen_op_add_rN_T1(REG(0)); | 486 | + tcg_gen_add_i32(cpu_T[1], cpu_T[1], cpu_gregs[REG(0)]); |
475 | gen_op_stw_T0_T1(ctx); | 487 | gen_op_stw_T0_T1(ctx); |
476 | return; | 488 | return; |
477 | case 0x0006: /* mov.l Rm,@(R0,Rn) */ | 489 | case 0x0006: /* mov.l Rm,@(R0,Rn) */ |
478 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 490 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
479 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 491 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
480 | - gen_op_add_rN_T1(REG(0)); | 492 | + tcg_gen_add_i32(cpu_T[1], cpu_T[1], cpu_gregs[REG(0)]); |
481 | gen_op_stl_T0_T1(ctx); | 493 | gen_op_stl_T0_T1(ctx); |
482 | return; | 494 | return; |
483 | case 0x000c: /* mov.b @(R0,Rm),Rn */ | 495 | case 0x000c: /* mov.b @(R0,Rm),Rn */ |
484 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
485 | - gen_op_add_rN_T0(REG(0)); | 496 | + tcg_gen_add_i32(cpu_T[0], cpu_gregs[REG(B7_4)], cpu_gregs[REG(0)]); |
486 | gen_op_ldb_T0_T0(ctx); | 497 | gen_op_ldb_T0_T0(ctx); |
487 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 498 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
488 | return; | 499 | return; |
489 | case 0x000d: /* mov.w @(R0,Rm),Rn */ | 500 | case 0x000d: /* mov.w @(R0,Rm),Rn */ |
490 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
491 | - gen_op_add_rN_T0(REG(0)); | 501 | + tcg_gen_add_i32(cpu_T[0], cpu_gregs[REG(B7_4)], cpu_gregs[REG(0)]); |
492 | gen_op_ldw_T0_T0(ctx); | 502 | gen_op_ldw_T0_T0(ctx); |
493 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 503 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
494 | return; | 504 | return; |
495 | case 0x000e: /* mov.l @(R0,Rm),Rn */ | 505 | case 0x000e: /* mov.l @(R0,Rm),Rn */ |
496 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
497 | - gen_op_add_rN_T0(REG(0)); | 506 | + tcg_gen_add_i32(cpu_T[0], cpu_gregs[REG(B7_4)], cpu_gregs[REG(0)]); |
498 | gen_op_ldl_T0_T0(ctx); | 507 | gen_op_ldl_T0_T0(ctx); |
499 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 508 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
500 | return; | 509 | return; |
501 | case 0x6008: /* swap.b Rm,Rn */ | 510 | case 0x6008: /* swap.b Rm,Rn */ |
502 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
503 | - gen_op_swapb_T0(); | ||
504 | - tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 511 | + tcg_gen_andi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)], 0xffff0000); |
512 | + tcg_gen_andi_i32(cpu_T[0], cpu_gregs[REG(B7_4)], 0xff); | ||
513 | + tcg_gen_shli_i32(cpu_T[0], cpu_T[0], 8); | ||
514 | + tcg_gen_or_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], cpu_T[0]); | ||
515 | + tcg_gen_shri_i32(cpu_T[0], cpu_gregs[REG(B7_4)], 8); | ||
516 | + tcg_gen_andi_i32(cpu_T[0], cpu_T[0], 0xff); | ||
517 | + tcg_gen_or_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], cpu_T[0]); | ||
505 | return; | 518 | return; |
506 | case 0x6009: /* swap.w Rm,Rn */ | 519 | case 0x6009: /* swap.w Rm,Rn */ |
507 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
508 | - gen_op_swapw_T0(); | ||
509 | - tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 520 | + tcg_gen_andi_i32(cpu_T[0], cpu_gregs[REG(B7_4)], 0xffff); |
521 | + tcg_gen_shli_i32(cpu_T[0], cpu_T[0], 16); | ||
522 | + tcg_gen_shri_i32(cpu_T[1], cpu_gregs[REG(B7_4)], 16); | ||
523 | + tcg_gen_andi_i32(cpu_T[1], cpu_T[1], 0xffff); | ||
524 | + tcg_gen_or_i32(cpu_gregs[REG(B11_8)], cpu_T[0], cpu_T[1]); | ||
510 | return; | 525 | return; |
511 | case 0x200d: /* xtrct Rm,Rn */ | 526 | case 0x200d: /* xtrct Rm,Rn */ |
512 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
513 | - tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | ||
514 | - gen_op_xtrct_T0_T1(); | ||
515 | - tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[1]); | 527 | + tcg_gen_andi_i32(cpu_T[0], cpu_gregs[REG(B7_4)], 0xffff); |
528 | + tcg_gen_shli_i32(cpu_T[0], cpu_T[0], 16); | ||
529 | + tcg_gen_shri_i32(cpu_T[1], cpu_gregs[REG(B11_8)], 16); | ||
530 | + tcg_gen_andi_i32(cpu_T[1], cpu_T[1], 0xffff); | ||
531 | + tcg_gen_ori_i32(cpu_gregs[REG(B11_8)], cpu_T[0], cpu_T[1]); | ||
516 | return; | 532 | return; |
517 | case 0x300c: /* add Rm,Rn */ | 533 | case 0x300c: /* add Rm,Rn */ |
518 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
519 | - gen_op_add_T0_rN(REG(B11_8)); | 534 | + tcg_gen_add_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)]); |
520 | return; | 535 | return; |
521 | case 0x300e: /* addc Rm,Rn */ | 536 | case 0x300e: /* addc Rm,Rn */ |
522 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 537 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
@@ -531,8 +546,7 @@ void _decode_opc(DisasContext * ctx) | @@ -531,8 +546,7 @@ void _decode_opc(DisasContext * ctx) | ||
531 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[1]); | 546 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[1]); |
532 | return; | 547 | return; |
533 | case 0x2009: /* and Rm,Rn */ | 548 | case 0x2009: /* and Rm,Rn */ |
534 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
535 | - gen_op_and_T0_rN(REG(B11_8)); | 549 | + tcg_gen_and_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)]); |
536 | return; | 550 | return; |
537 | case 0x3000: /* cmp/eq Rm,Rn */ | 551 | case 0x3000: /* cmp/eq Rm,Rn */ |
538 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 552 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
@@ -614,8 +628,8 @@ void _decode_opc(DisasContext * ctx) | @@ -614,8 +628,8 @@ void _decode_opc(DisasContext * ctx) | ||
614 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 628 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
615 | gen_op_ldl_T0_T0(ctx); | 629 | gen_op_ldl_T0_T0(ctx); |
616 | gen_op_macl_T0_T1(); | 630 | gen_op_macl_T0_T1(); |
617 | - gen_op_inc4_rN(REG(B11_8)); | ||
618 | - gen_op_inc4_rN(REG(B7_4)); | 631 | + tcg_gen_addi_i32(cpu_gregs[REG(B7_4)], cpu_gregs[REG(B7_4)], 4); |
632 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); | ||
619 | return; | 633 | return; |
620 | case 0x400f: /* mac.w @Rm+,@Rn+ */ | 634 | case 0x400f: /* mac.w @Rm+,@Rn+ */ |
621 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B11_8)]); | 635 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B11_8)]); |
@@ -624,8 +638,8 @@ void _decode_opc(DisasContext * ctx) | @@ -624,8 +638,8 @@ void _decode_opc(DisasContext * ctx) | ||
624 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 638 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
625 | gen_op_ldl_T0_T0(ctx); | 639 | gen_op_ldl_T0_T0(ctx); |
626 | gen_op_macw_T0_T1(); | 640 | gen_op_macw_T0_T1(); |
627 | - gen_op_inc2_rN(REG(B11_8)); | ||
628 | - gen_op_inc2_rN(REG(B7_4)); | 641 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 2); |
642 | + tcg_gen_addi_i32(cpu_gregs[REG(B7_4)], cpu_gregs[REG(B7_4)], 2); | ||
629 | return; | 643 | return; |
630 | case 0x0007: /* mul.l Rm,Rn */ | 644 | case 0x0007: /* mul.l Rm,Rn */ |
631 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 645 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
@@ -649,9 +663,7 @@ void _decode_opc(DisasContext * ctx) | @@ -649,9 +663,7 @@ void _decode_opc(DisasContext * ctx) | ||
649 | gen_op_muluw_T0_T1(); | 663 | gen_op_muluw_T0_T1(); |
650 | return; | 664 | return; |
651 | case 0x600b: /* neg Rm,Rn */ | 665 | case 0x600b: /* neg Rm,Rn */ |
652 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
653 | - gen_op_neg_T0(); | ||
654 | - tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 666 | + tcg_gen_neg_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)]); |
655 | return; | 667 | return; |
656 | case 0x600a: /* negc Rm,Rn */ | 668 | case 0x600a: /* negc Rm,Rn */ |
657 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 669 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
@@ -659,13 +671,10 @@ void _decode_opc(DisasContext * ctx) | @@ -659,13 +671,10 @@ void _decode_opc(DisasContext * ctx) | ||
659 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 671 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
660 | return; | 672 | return; |
661 | case 0x6007: /* not Rm,Rn */ | 673 | case 0x6007: /* not Rm,Rn */ |
662 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
663 | - gen_op_not_T0(); | ||
664 | - tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 674 | + tcg_gen_not_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)]); |
665 | return; | 675 | return; |
666 | case 0x200b: /* or Rm,Rn */ | 676 | case 0x200b: /* or Rm,Rn */ |
667 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
668 | - gen_op_or_T0_rN(REG(B11_8)); | 677 | + tcg_gen_or_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)]); |
669 | return; | 678 | return; |
670 | case 0x400c: /* shad Rm,Rn */ | 679 | case 0x400c: /* shad Rm,Rn */ |
671 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 680 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
@@ -680,8 +689,7 @@ void _decode_opc(DisasContext * ctx) | @@ -680,8 +689,7 @@ void _decode_opc(DisasContext * ctx) | ||
680 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[1]); | 689 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[1]); |
681 | return; | 690 | return; |
682 | case 0x3008: /* sub Rm,Rn */ | 691 | case 0x3008: /* sub Rm,Rn */ |
683 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
684 | - gen_op_sub_T0_rN(REG(B11_8)); | 692 | + tcg_gen_sub_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)]); |
685 | return; | 693 | return; |
686 | case 0x300a: /* subc Rm,Rn */ | 694 | case 0x300a: /* subc Rm,Rn */ |
687 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 695 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
@@ -701,8 +709,7 @@ void _decode_opc(DisasContext * ctx) | @@ -701,8 +709,7 @@ void _decode_opc(DisasContext * ctx) | ||
701 | gen_op_tst_T0_T1(); | 709 | gen_op_tst_T0_T1(); |
702 | return; | 710 | return; |
703 | case 0x200a: /* xor Rm,Rn */ | 711 | case 0x200a: /* xor Rm,Rn */ |
704 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
705 | - gen_op_xor_T0_rN(REG(B11_8)); | 712 | + tcg_gen_xor_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], cpu_gregs[REG(B7_4)]); |
706 | return; | 713 | return; |
707 | case 0xf00c: /* fmov {F,D,X}Rm,{F,D,X}Rn - FPSCR: Nothing */ | 714 | case 0xf00c: /* fmov {F,D,X}Rm,{F,D,X}Rn - FPSCR: Nothing */ |
708 | if (ctx->fpscr & FPSCR_SZ) { | 715 | if (ctx->fpscr & FPSCR_SZ) { |
@@ -740,40 +747,39 @@ void _decode_opc(DisasContext * ctx) | @@ -740,40 +747,39 @@ void _decode_opc(DisasContext * ctx) | ||
740 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 747 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
741 | gen_op_ldfq_T0_DT0(ctx); | 748 | gen_op_ldfq_T0_DT0(ctx); |
742 | gen_op_fmov_DT0_drN(XREG(B11_8)); | 749 | gen_op_fmov_DT0_drN(XREG(B11_8)); |
743 | - gen_op_inc8_rN(REG(B7_4)); | 750 | + tcg_gen_addi_i32(cpu_gregs[REG(B7_4)], |
751 | + cpu_gregs[REG(B7_4)], 8); | ||
744 | } else { | 752 | } else { |
745 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 753 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
746 | gen_op_ldfl_T0_FT0(ctx); | 754 | gen_op_ldfl_T0_FT0(ctx); |
747 | gen_op_fmov_FT0_frN(FREG(B11_8)); | 755 | gen_op_fmov_FT0_frN(FREG(B11_8)); |
748 | - gen_op_inc4_rN(REG(B7_4)); | 756 | + tcg_gen_addi_i32(cpu_gregs[REG(B7_4)], |
757 | + cpu_gregs[REG(B7_4)], 4); | ||
749 | } | 758 | } |
750 | return; | 759 | return; |
751 | case 0xf00b: /* fmov {F,D,X}Rm,@-Rn - FPSCR: Nothing */ | 760 | case 0xf00b: /* fmov {F,D,X}Rm,@-Rn - FPSCR: Nothing */ |
752 | if (ctx->fpscr & FPSCR_SZ) { | 761 | if (ctx->fpscr & FPSCR_SZ) { |
753 | - gen_op_dec8_rN(REG(B11_8)); | 762 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 8); |
754 | gen_op_fmov_drN_DT0(XREG(B7_4)); | 763 | gen_op_fmov_drN_DT0(XREG(B7_4)); |
755 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 764 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
756 | - gen_op_inc8_rN(REG(B11_8)); | 765 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 8); |
757 | gen_op_stfq_DT0_T1(ctx); | 766 | gen_op_stfq_DT0_T1(ctx); |
758 | - gen_op_dec8_rN(REG(B11_8)); | 767 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 8); |
759 | } else { | 768 | } else { |
760 | - gen_op_dec4_rN(REG(B11_8)); | 769 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); |
761 | gen_op_fmov_frN_FT0(FREG(B7_4)); | 770 | gen_op_fmov_frN_FT0(FREG(B7_4)); |
762 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 771 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
763 | - gen_op_inc4_rN(REG(B11_8)); | 772 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); |
764 | gen_op_stfl_FT0_T1(ctx); | 773 | gen_op_stfl_FT0_T1(ctx); |
765 | - gen_op_dec4_rN(REG(B11_8)); | 774 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); |
766 | } | 775 | } |
767 | return; | 776 | return; |
768 | case 0xf006: /* fmov @(R0,Rm),{F,D,X}Rm - FPSCR: Nothing */ | 777 | case 0xf006: /* fmov @(R0,Rm),{F,D,X}Rm - FPSCR: Nothing */ |
778 | + tcg_gen_add_i32(cpu_T[0], cpu_gregs[REG(B7_4)], cpu_gregs[REG(0)]); | ||
769 | if (ctx->fpscr & FPSCR_SZ) { | 779 | if (ctx->fpscr & FPSCR_SZ) { |
770 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
771 | - gen_op_add_rN_T0(REG(0)); | ||
772 | gen_op_ldfq_T0_DT0(ctx); | 780 | gen_op_ldfq_T0_DT0(ctx); |
773 | gen_op_fmov_DT0_drN(XREG(B11_8)); | 781 | gen_op_fmov_DT0_drN(XREG(B11_8)); |
774 | } else { | 782 | } else { |
775 | - tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | ||
776 | - gen_op_add_rN_T0(REG(0)); | ||
777 | gen_op_ldfl_T0_FT0(ctx); | 783 | gen_op_ldfl_T0_FT0(ctx); |
778 | gen_op_fmov_FT0_frN(FREG(B11_8)); | 784 | gen_op_fmov_FT0_frN(FREG(B11_8)); |
779 | } | 785 | } |
@@ -782,12 +788,12 @@ void _decode_opc(DisasContext * ctx) | @@ -782,12 +788,12 @@ void _decode_opc(DisasContext * ctx) | ||
782 | if (ctx->fpscr & FPSCR_SZ) { | 788 | if (ctx->fpscr & FPSCR_SZ) { |
783 | gen_op_fmov_drN_DT0(XREG(B7_4)); | 789 | gen_op_fmov_drN_DT0(XREG(B7_4)); |
784 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 790 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
785 | - gen_op_add_rN_T1(REG(0)); | 791 | + tcg_gen_add_i32(cpu_T[1], cpu_T[1], cpu_gregs[REG(0)]); |
786 | gen_op_stfq_DT0_T1(ctx); | 792 | gen_op_stfq_DT0_T1(ctx); |
787 | } else { | 793 | } else { |
788 | gen_op_fmov_frN_FT0(FREG(B7_4)); | 794 | gen_op_fmov_frN_FT0(FREG(B7_4)); |
789 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 795 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
790 | - gen_op_add_rN_T1(REG(0)); | 796 | + tcg_gen_add_i32(cpu_T[1], cpu_T[1], cpu_gregs[REG(0)]); |
791 | gen_op_stfl_FT0_T1(ctx); | 797 | gen_op_stfl_FT0_T1(ctx); |
792 | } | 798 | } |
793 | return; | 799 | return; |
@@ -840,14 +846,14 @@ void _decode_opc(DisasContext * ctx) | @@ -840,14 +846,14 @@ void _decode_opc(DisasContext * ctx) | ||
840 | 846 | ||
841 | switch (ctx->opcode & 0xff00) { | 847 | switch (ctx->opcode & 0xff00) { |
842 | case 0xc900: /* and #imm,R0 */ | 848 | case 0xc900: /* and #imm,R0 */ |
843 | - gen_op_and_imm_rN(B7_0, REG(0)); | 849 | + tcg_gen_andi_i32(cpu_gregs[REG(0)], cpu_gregs[REG(0)], B7_0); |
844 | return; | 850 | return; |
845 | case 0xcd00: /* and.b #imm,@(R0,GBR) */ | 851 | case 0xcd00: /* and.b #imm,@(R0,GBR) */ |
846 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 852 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
847 | gen_op_addl_GBR_T0(); | 853 | gen_op_addl_GBR_T0(); |
848 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); | 854 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); |
849 | gen_op_ldub_T0_T0(ctx); | 855 | gen_op_ldub_T0_T0(ctx); |
850 | - gen_op_and_imm_T0(B7_0); | 856 | + tcg_gen_andi_i32(cpu_T[0], cpu_T[0], B7_0); |
851 | gen_op_stb_T0_T1(ctx); | 857 | gen_op_stb_T0_T1(ctx); |
852 | return; | 858 | return; |
853 | case 0x8b00: /* bf label */ | 859 | case 0x8b00: /* bf label */ |
@@ -878,39 +884,39 @@ void _decode_opc(DisasContext * ctx) | @@ -878,39 +884,39 @@ void _decode_opc(DisasContext * ctx) | ||
878 | return; | 884 | return; |
879 | case 0xc400: /* mov.b @(disp,GBR),R0 */ | 885 | case 0xc400: /* mov.b @(disp,GBR),R0 */ |
880 | gen_op_stc_gbr_T0(); | 886 | gen_op_stc_gbr_T0(); |
881 | - gen_op_addl_imm_T0(B7_0); | 887 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B7_0); |
882 | gen_op_ldb_T0_T0(ctx); | 888 | gen_op_ldb_T0_T0(ctx); |
883 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); | 889 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); |
884 | return; | 890 | return; |
885 | case 0xc500: /* mov.w @(disp,GBR),R0 */ | 891 | case 0xc500: /* mov.w @(disp,GBR),R0 */ |
886 | gen_op_stc_gbr_T0(); | 892 | gen_op_stc_gbr_T0(); |
887 | - gen_op_addl_imm_T0(B7_0 * 2); | 893 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B7_0 * 2); |
888 | gen_op_ldw_T0_T0(ctx); | 894 | gen_op_ldw_T0_T0(ctx); |
889 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); | 895 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); |
890 | return; | 896 | return; |
891 | case 0xc600: /* mov.l @(disp,GBR),R0 */ | 897 | case 0xc600: /* mov.l @(disp,GBR),R0 */ |
892 | gen_op_stc_gbr_T0(); | 898 | gen_op_stc_gbr_T0(); |
893 | - gen_op_addl_imm_T0(B7_0 * 4); | 899 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B7_0 * 4); |
894 | gen_op_ldl_T0_T0(ctx); | 900 | gen_op_ldl_T0_T0(ctx); |
895 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); | 901 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); |
896 | return; | 902 | return; |
897 | case 0xc000: /* mov.b R0,@(disp,GBR) */ | 903 | case 0xc000: /* mov.b R0,@(disp,GBR) */ |
898 | gen_op_stc_gbr_T0(); | 904 | gen_op_stc_gbr_T0(); |
899 | - gen_op_addl_imm_T0(B7_0); | 905 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B7_0); |
900 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); | 906 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); |
901 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 907 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
902 | gen_op_stb_T0_T1(ctx); | 908 | gen_op_stb_T0_T1(ctx); |
903 | return; | 909 | return; |
904 | case 0xc100: /* mov.w R0,@(disp,GBR) */ | 910 | case 0xc100: /* mov.w R0,@(disp,GBR) */ |
905 | gen_op_stc_gbr_T0(); | 911 | gen_op_stc_gbr_T0(); |
906 | - gen_op_addl_imm_T0(B7_0 * 2); | 912 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B7_0 * 2); |
907 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); | 913 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); |
908 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 914 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
909 | gen_op_stw_T0_T1(ctx); | 915 | gen_op_stw_T0_T1(ctx); |
910 | return; | 916 | return; |
911 | case 0xc200: /* mov.l R0,@(disp,GBR) */ | 917 | case 0xc200: /* mov.l R0,@(disp,GBR) */ |
912 | gen_op_stc_gbr_T0(); | 918 | gen_op_stc_gbr_T0(); |
913 | - gen_op_addl_imm_T0(B7_0 * 4); | 919 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B7_0 * 4); |
914 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); | 920 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); |
915 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 921 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
916 | gen_op_stl_T0_T1(ctx); | 922 | gen_op_stl_T0_T1(ctx); |
@@ -918,24 +924,24 @@ void _decode_opc(DisasContext * ctx) | @@ -918,24 +924,24 @@ void _decode_opc(DisasContext * ctx) | ||
918 | case 0x8000: /* mov.b R0,@(disp,Rn) */ | 924 | case 0x8000: /* mov.b R0,@(disp,Rn) */ |
919 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 925 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
920 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B7_4)]); | 926 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B7_4)]); |
921 | - gen_op_addl_imm_T1(B3_0); | 927 | + tcg_gen_addi_i32(cpu_T[1], cpu_T[1], B3_0); |
922 | gen_op_stb_T0_T1(ctx); | 928 | gen_op_stb_T0_T1(ctx); |
923 | return; | 929 | return; |
924 | case 0x8100: /* mov.w R0,@(disp,Rn) */ | 930 | case 0x8100: /* mov.w R0,@(disp,Rn) */ |
925 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 931 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
926 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B7_4)]); | 932 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B7_4)]); |
927 | - gen_op_addl_imm_T1(B3_0 * 2); | 933 | + tcg_gen_addi_i32(cpu_T[1], cpu_T[1], B3_0 * 2); |
928 | gen_op_stw_T0_T1(ctx); | 934 | gen_op_stw_T0_T1(ctx); |
929 | return; | 935 | return; |
930 | case 0x8400: /* mov.b @(disp,Rn),R0 */ | 936 | case 0x8400: /* mov.b @(disp,Rn),R0 */ |
931 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 937 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
932 | - gen_op_addl_imm_T0(B3_0); | 938 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B3_0); |
933 | gen_op_ldb_T0_T0(ctx); | 939 | gen_op_ldb_T0_T0(ctx); |
934 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); | 940 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); |
935 | return; | 941 | return; |
936 | case 0x8500: /* mov.w @(disp,Rn),R0 */ | 942 | case 0x8500: /* mov.w @(disp,Rn),R0 */ |
937 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); | 943 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B7_4)]); |
938 | - gen_op_addl_imm_T0(B3_0 * 2); | 944 | + tcg_gen_addi_i32(cpu_T[0], cpu_T[0], B3_0 * 2); |
939 | gen_op_ldw_T0_T0(ctx); | 945 | gen_op_ldw_T0_T0(ctx); |
940 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); | 946 | tcg_gen_mov_i32(cpu_gregs[REG(0)], cpu_T[0]); |
941 | return; | 947 | return; |
@@ -944,14 +950,14 @@ void _decode_opc(DisasContext * ctx) | @@ -944,14 +950,14 @@ void _decode_opc(DisasContext * ctx) | ||
944 | ((ctx->pc & 0xfffffffc) + 4 + B7_0 * 4) & ~3); | 950 | ((ctx->pc & 0xfffffffc) + 4 + B7_0 * 4) & ~3); |
945 | return; | 951 | return; |
946 | case 0xcb00: /* or #imm,R0 */ | 952 | case 0xcb00: /* or #imm,R0 */ |
947 | - gen_op_or_imm_rN(B7_0, REG(0)); | 953 | + tcg_gen_ori_i32(cpu_gregs[REG(0)], cpu_gregs[REG(0)], B7_0); |
948 | return; | 954 | return; |
949 | case 0xcf00: /* or.b #imm,@(R0,GBR) */ | 955 | case 0xcf00: /* or.b #imm,@(R0,GBR) */ |
950 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 956 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
951 | gen_op_addl_GBR_T0(); | 957 | gen_op_addl_GBR_T0(); |
952 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); | 958 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); |
953 | gen_op_ldub_T0_T0(ctx); | 959 | gen_op_ldub_T0_T0(ctx); |
954 | - gen_op_or_imm_T0(B7_0); | 960 | + tcg_gen_ori_i32(cpu_T[0], cpu_T[0], B7_0); |
955 | gen_op_stb_T0_T1(ctx); | 961 | gen_op_stb_T0_T1(ctx); |
956 | return; | 962 | return; |
957 | case 0xc300: /* trapa #imm */ | 963 | case 0xc300: /* trapa #imm */ |
@@ -969,14 +975,14 @@ void _decode_opc(DisasContext * ctx) | @@ -969,14 +975,14 @@ void _decode_opc(DisasContext * ctx) | ||
969 | gen_op_tst_imm_T0(B7_0); | 975 | gen_op_tst_imm_T0(B7_0); |
970 | return; | 976 | return; |
971 | case 0xca00: /* xor #imm,R0 */ | 977 | case 0xca00: /* xor #imm,R0 */ |
972 | - gen_op_xor_imm_rN(B7_0, REG(0)); | 978 | + tcg_gen_xori_i32(cpu_gregs[REG(0)], cpu_gregs[REG(0)], B7_0); |
973 | return; | 979 | return; |
974 | case 0xce00: /* xor.b #imm,@(R0,GBR) */ | 980 | case 0xce00: /* xor.b #imm,@(R0,GBR) */ |
975 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); | 981 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(0)]); |
976 | gen_op_addl_GBR_T0(); | 982 | gen_op_addl_GBR_T0(); |
977 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); | 983 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); |
978 | gen_op_ldub_T0_T0(ctx); | 984 | gen_op_ldub_T0_T0(ctx); |
979 | - gen_op_xor_imm_T0(B7_0); | 985 | + tcg_gen_xori_i32(cpu_T[0], cpu_T[0], B7_0); |
980 | gen_op_stb_T0_T1(ctx); | 986 | gen_op_stb_T0_T1(ctx); |
981 | return; | 987 | return; |
982 | } | 988 | } |
@@ -990,19 +996,19 @@ void _decode_opc(DisasContext * ctx) | @@ -990,19 +996,19 @@ void _decode_opc(DisasContext * ctx) | ||
990 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B11_8)]); | 996 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B11_8)]); |
991 | gen_op_ldl_T0_T0(ctx); | 997 | gen_op_ldl_T0_T0(ctx); |
992 | tcg_gen_mov_i32(cpu_gregs[ALTREG(B6_4)], cpu_T[0]); | 998 | tcg_gen_mov_i32(cpu_gregs[ALTREG(B6_4)], cpu_T[0]); |
993 | - gen_op_inc4_rN(REG(B11_8)); | 999 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); |
994 | return; | 1000 | return; |
995 | case 0x0082: /* stc Rm_BANK,Rn */ | 1001 | case 0x0082: /* stc Rm_BANK,Rn */ |
996 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[ALTREG(B6_4)]); | 1002 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[ALTREG(B6_4)]); |
997 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); | 1003 | tcg_gen_mov_i32(cpu_gregs[REG(B11_8)], cpu_T[0]); |
998 | return; | 1004 | return; |
999 | case 0x4083: /* stc.l Rm_BANK,@-Rn */ | 1005 | case 0x4083: /* stc.l Rm_BANK,@-Rn */ |
1000 | - gen_op_dec4_rN(REG(B11_8)); | 1006 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); |
1001 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); | 1007 | tcg_gen_mov_i32(cpu_T[1], cpu_gregs[REG(B11_8)]); |
1002 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[ALTREG(B6_4)]); | 1008 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[ALTREG(B6_4)]); |
1003 | - gen_op_inc4_rN(REG(B11_8)); | 1009 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); |
1004 | gen_op_stl_T0_T1(ctx); | 1010 | gen_op_stl_T0_T1(ctx); |
1005 | - gen_op_dec4_rN(REG(B11_8)); | 1011 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 4); |
1006 | return; | 1012 | return; |
1007 | } | 1013 | } |
1008 | 1014 | ||
@@ -1051,7 +1057,8 @@ void _decode_opc(DisasContext * ctx) | @@ -1051,7 +1057,8 @@ void _decode_opc(DisasContext * ctx) | ||
1051 | case ldpnum: \ | 1057 | case ldpnum: \ |
1052 | tcg_gen_mov_i32 (cpu_T[0], cpu_gregs[REG(B11_8)]); \ | 1058 | tcg_gen_mov_i32 (cpu_T[0], cpu_gregs[REG(B11_8)]); \ |
1053 | gen_op_ldl_T0_T0 (ctx); \ | 1059 | gen_op_ldl_T0_T0 (ctx); \ |
1054 | - gen_op_inc4_rN (REG(B11_8)); \ | 1060 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], \ |
1061 | + cpu_gregs[REG(B11_8)], 4); \ | ||
1055 | gen_op_##ldop##_T0_##reg (); \ | 1062 | gen_op_##ldop##_T0_##reg (); \ |
1056 | extrald \ | 1063 | extrald \ |
1057 | return; \ | 1064 | return; \ |
@@ -1061,11 +1068,14 @@ void _decode_opc(DisasContext * ctx) | @@ -1061,11 +1068,14 @@ void _decode_opc(DisasContext * ctx) | ||
1061 | return; \ | 1068 | return; \ |
1062 | case stpnum: \ | 1069 | case stpnum: \ |
1063 | gen_op_##stop##_##reg##_T0 (); \ | 1070 | gen_op_##stop##_##reg##_T0 (); \ |
1064 | - gen_op_dec4_rN (REG(B11_8)); \ | 1071 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], \ |
1072 | + cpu_gregs[REG(B11_8)], 4); \ | ||
1065 | tcg_gen_mov_i32 (cpu_T[1], cpu_gregs[REG(B11_8)]); \ | 1073 | tcg_gen_mov_i32 (cpu_T[1], cpu_gregs[REG(B11_8)]); \ |
1066 | - gen_op_inc4_rN (REG(B11_8)); \ | 1074 | + tcg_gen_addi_i32(cpu_gregs[REG(B11_8)], \ |
1075 | + cpu_gregs[REG(B11_8)], 4); \ | ||
1067 | gen_op_stl_T0_T1 (ctx); \ | 1076 | gen_op_stl_T0_T1 (ctx); \ |
1068 | - gen_op_dec4_rN (REG(B11_8)); \ | 1077 | + tcg_gen_subi_i32(cpu_gregs[REG(B11_8)], \ |
1078 | + cpu_gregs[REG(B11_8)], 4); \ | ||
1069 | return; | 1079 | return; |
1070 | LDST(sr, 0x400e, 0x4007, ldc, 0x0002, 0x4003, stc, ctx->bstate = | 1080 | LDST(sr, 0x400e, 0x4007, ldc, 0x0002, 0x4003, stc, ctx->bstate = |
1071 | BS_STOP;) | 1081 | BS_STOP;) |
@@ -1125,29 +1135,29 @@ void _decode_opc(DisasContext * ctx) | @@ -1125,29 +1135,29 @@ void _decode_opc(DisasContext * ctx) | ||
1125 | gen_op_shlr_Rn(REG(B11_8)); | 1135 | gen_op_shlr_Rn(REG(B11_8)); |
1126 | return; | 1136 | return; |
1127 | case 0x4008: /* shll2 Rn */ | 1137 | case 0x4008: /* shll2 Rn */ |
1128 | - gen_op_shll2_Rn(REG(B11_8)); | 1138 | + tcg_gen_shli_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 2); |
1129 | return; | 1139 | return; |
1130 | case 0x4018: /* shll8 Rn */ | 1140 | case 0x4018: /* shll8 Rn */ |
1131 | - gen_op_shll8_Rn(REG(B11_8)); | 1141 | + tcg_gen_shli_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 8); |
1132 | return; | 1142 | return; |
1133 | case 0x4028: /* shll16 Rn */ | 1143 | case 0x4028: /* shll16 Rn */ |
1134 | - gen_op_shll16_Rn(REG(B11_8)); | 1144 | + tcg_gen_shli_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 16); |
1135 | return; | 1145 | return; |
1136 | case 0x4009: /* shlr2 Rn */ | 1146 | case 0x4009: /* shlr2 Rn */ |
1137 | - gen_op_shlr2_Rn(REG(B11_8)); | 1147 | + tcg_gen_shri_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 2); |
1138 | return; | 1148 | return; |
1139 | case 0x4019: /* shlr8 Rn */ | 1149 | case 0x4019: /* shlr8 Rn */ |
1140 | - gen_op_shlr8_Rn(REG(B11_8)); | 1150 | + tcg_gen_shri_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 8); |
1141 | return; | 1151 | return; |
1142 | case 0x4029: /* shlr16 Rn */ | 1152 | case 0x4029: /* shlr16 Rn */ |
1143 | - gen_op_shlr16_Rn(REG(B11_8)); | 1153 | + tcg_gen_shri_i32(cpu_gregs[REG(B11_8)], cpu_gregs[REG(B11_8)], 16); |
1144 | return; | 1154 | return; |
1145 | case 0x401b: /* tas.b @Rn */ | 1155 | case 0x401b: /* tas.b @Rn */ |
1146 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B11_8)]); | 1156 | tcg_gen_mov_i32(cpu_T[0], cpu_gregs[REG(B11_8)]); |
1147 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); | 1157 | tcg_gen_mov_i32(cpu_T[0], cpu_T[1]); |
1148 | gen_op_ldub_T0_T0(ctx); | 1158 | gen_op_ldub_T0_T0(ctx); |
1149 | gen_op_cmp_eq_imm_T0(0); | 1159 | gen_op_cmp_eq_imm_T0(0); |
1150 | - gen_op_or_imm_T0(0x80); | 1160 | + tcg_gen_ori_i32(cpu_T[0], cpu_T[0], 0x80); |
1151 | gen_op_stb_T0_T1(ctx); | 1161 | gen_op_stb_T0_T1(ctx); |
1152 | return; | 1162 | return; |
1153 | case 0xf00d: /* fsts FPUL,FRn - FPSCR: Nothing */ | 1163 | case 0xf00d: /* fsts FPUL,FRn - FPSCR: Nothing */ |