diff options
| author | 2015-12-30 21:29:35 -0500 | |
|---|---|---|
| committer | 2015-12-30 21:29:35 -0500 | |
| commit | 54bdba750a2fe8a4af1408f9e9c0a4b17049c3ad (patch) | |
| tree | aca4168d5790b5c71650435218099c74dfd4c516 /src/core | |
| parent | Merge pull request #1309 from lioncash/render (diff) | |
| parent | arm_dyncom_dec: Fix decoding of VMLS (diff) | |
| download | yuzu-54bdba750a2fe8a4af1408f9e9c0a4b17049c3ad.tar.gz yuzu-54bdba750a2fe8a4af1408f9e9c0a4b17049c3ad.tar.xz yuzu-54bdba750a2fe8a4af1408f9e9c0a4b17049c3ad.zip | |
Merge pull request #1316 from lioncash/decode
arm_dyncom_dec: Fix decoding of VMLS
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom_dec.cpp | 8 | ||||
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 400 |
2 files changed, 202 insertions, 206 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom_dec.cpp b/src/core/arm/dyncom/arm_dyncom_dec.cpp index ee4288314..8cd6755cb 100644 --- a/src/core/arm/dyncom/arm_dyncom_dec.cpp +++ b/src/core/arm/dyncom/arm_dyncom_dec.cpp | |||
| @@ -6,10 +6,9 @@ | |||
| 6 | #include "core/arm/skyeye_common/armsupp.h" | 6 | #include "core/arm/skyeye_common/armsupp.h" |
| 7 | 7 | ||
| 8 | const InstructionSetEncodingItem arm_instruction[] = { | 8 | const InstructionSetEncodingItem arm_instruction[] = { |
| 9 | { "vmla", 4, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x0, 9, 11, 0x5, 4, 4, 0 }}, | 9 | { "vmla", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x0, 9, 11, 0x5, 6, 6, 0, 4, 4, 0 }}, |
| 10 | { "vmls", 7, ARMVFP2, { 28, 31, 0xF, 25, 27, 0x1, 23, 23, 1, 11, 11, 0, 8, 9, 0x2, 6, 6, 1, 4, 4, 0 }}, | 10 | { "vmls", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x0, 9, 11, 0x5, 6, 6, 1, 4, 4, 0 }}, |
| 11 | { "vnmla", 4, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x1, 9, 11, 0x5, 4, 4, 0 }}, | 11 | { "vnmla", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x1, 9, 11, 0x5, 6, 6, 1, 4, 4, 0 }}, |
| 12 | { "vnmla", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x2, 9, 11, 0x5, 6, 6, 1, 4, 4, 0 }}, | ||
| 13 | { "vnmls", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x1, 9, 11, 0x5, 6, 6, 0, 4, 4, 0 }}, | 12 | { "vnmls", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x1, 9, 11, 0x5, 6, 6, 0, 4, 4, 0 }}, |
| 14 | { "vnmul", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x2, 9, 11, 0x5, 6, 6, 1, 4, 4, 0 }}, | 13 | { "vnmul", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x2, 9, 11, 0x5, 6, 6, 1, 4, 4, 0 }}, |
| 15 | { "vmul", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x2, 9, 11, 0x5, 6, 6, 0, 4, 4, 0 }}, | 14 | { "vmul", 5, ARMVFP2, { 23, 27, 0x1C, 20, 21, 0x2, 9, 11, 0x5, 6, 6, 0, 4, 4, 0 }}, |
| @@ -211,7 +210,6 @@ const InstructionSetEncodingItem arm_exclusion_code[] = { | |||
| 211 | { "vmla", 0, ARMVFP2, { 0 }}, | 210 | { "vmla", 0, ARMVFP2, { 0 }}, |
| 212 | { "vmls", 0, ARMVFP2, { 0 }}, | 211 | { "vmls", 0, ARMVFP2, { 0 }}, |
| 213 | { "vnmla", 0, ARMVFP2, { 0 }}, | 212 | { "vnmla", 0, ARMVFP2, { 0 }}, |
| 214 | { "vnmla", 0, ARMVFP2, { 0 }}, | ||
| 215 | { "vnmls", 0, ARMVFP2, { 0 }}, | 213 | { "vnmls", 0, ARMVFP2, { 0 }}, |
| 216 | { "vnmul", 0, ARMVFP2, { 0 }}, | 214 | { "vnmul", 0, ARMVFP2, { 0 }}, |
| 217 | { "vmul", 0, ARMVFP2, { 0 }}, | 215 | { "vmul", 0, ARMVFP2, { 0 }}, |
diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index 87b2b715b..5f8826034 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp | |||
| @@ -3202,7 +3202,6 @@ const transop_fp_t arm_instruction_trans[] = { | |||
| 3202 | INTERPRETER_TRANSLATE(vmla), | 3202 | INTERPRETER_TRANSLATE(vmla), |
| 3203 | INTERPRETER_TRANSLATE(vmls), | 3203 | INTERPRETER_TRANSLATE(vmls), |
| 3204 | INTERPRETER_TRANSLATE(vnmla), | 3204 | INTERPRETER_TRANSLATE(vnmla), |
| 3205 | INTERPRETER_TRANSLATE(vnmla), | ||
| 3206 | INTERPRETER_TRANSLATE(vnmls), | 3205 | INTERPRETER_TRANSLATE(vnmls), |
| 3207 | INTERPRETER_TRANSLATE(vnmul), | 3206 | INTERPRETER_TRANSLATE(vnmul), |
| 3208 | INTERPRETER_TRANSLATE(vmul), | 3207 | INTERPRETER_TRANSLATE(vmul), |
| @@ -3594,209 +3593,208 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) { | |||
| 3594 | case 0: goto VMLA_INST; \ | 3593 | case 0: goto VMLA_INST; \ |
| 3595 | case 1: goto VMLS_INST; \ | 3594 | case 1: goto VMLS_INST; \ |
| 3596 | case 2: goto VNMLA_INST; \ | 3595 | case 2: goto VNMLA_INST; \ |
| 3597 | case 3: goto VNMLA_INST; \ | 3596 | case 3: goto VNMLS_INST; \ |
| 3598 | case 4: goto VNMLS_INST; \ | 3597 | case 4: goto VNMUL_INST; \ |
| 3599 | case 5: goto VNMUL_INST; \ | 3598 | case 5: goto VMUL_INST; \ |
| 3600 | case 6: goto VMUL_INST; \ | 3599 | case 6: goto VADD_INST; \ |
| 3601 | case 7: goto VADD_INST; \ | 3600 | case 7: goto VSUB_INST; \ |
| 3602 | case 8: goto VSUB_INST; \ | 3601 | case 8: goto VDIV_INST; \ |
| 3603 | case 9: goto VDIV_INST; \ | 3602 | case 9: goto VMOVI_INST; \ |
| 3604 | case 10: goto VMOVI_INST; \ | 3603 | case 10: goto VMOVR_INST; \ |
| 3605 | case 11: goto VMOVR_INST; \ | 3604 | case 11: goto VABS_INST; \ |
| 3606 | case 12: goto VABS_INST; \ | 3605 | case 12: goto VNEG_INST; \ |
| 3607 | case 13: goto VNEG_INST; \ | 3606 | case 13: goto VSQRT_INST; \ |
| 3608 | case 14: goto VSQRT_INST; \ | 3607 | case 14: goto VCMP_INST; \ |
| 3609 | case 15: goto VCMP_INST; \ | 3608 | case 15: goto VCMP2_INST; \ |
| 3610 | case 16: goto VCMP2_INST; \ | 3609 | case 16: goto VCVTBDS_INST; \ |
| 3611 | case 17: goto VCVTBDS_INST; \ | 3610 | case 17: goto VCVTBFF_INST; \ |
| 3612 | case 18: goto VCVTBFF_INST; \ | 3611 | case 18: goto VCVTBFI_INST; \ |
| 3613 | case 19: goto VCVTBFI_INST; \ | 3612 | case 19: goto VMOVBRS_INST; \ |
| 3614 | case 20: goto VMOVBRS_INST; \ | 3613 | case 20: goto VMSR_INST; \ |
| 3615 | case 21: goto VMSR_INST; \ | 3614 | case 21: goto VMOVBRC_INST; \ |
| 3616 | case 22: goto VMOVBRC_INST; \ | 3615 | case 22: goto VMRS_INST; \ |
| 3617 | case 23: goto VMRS_INST; \ | 3616 | case 23: goto VMOVBCR_INST; \ |
| 3618 | case 24: goto VMOVBCR_INST; \ | 3617 | case 24: goto VMOVBRRSS_INST; \ |
| 3619 | case 25: goto VMOVBRRSS_INST; \ | 3618 | case 25: goto VMOVBRRD_INST; \ |
| 3620 | case 26: goto VMOVBRRD_INST; \ | 3619 | case 26: goto VSTR_INST; \ |
| 3621 | case 27: goto VSTR_INST; \ | 3620 | case 27: goto VPUSH_INST; \ |
| 3622 | case 28: goto VPUSH_INST; \ | 3621 | case 28: goto VSTM_INST; \ |
| 3623 | case 29: goto VSTM_INST; \ | 3622 | case 29: goto VPOP_INST; \ |
| 3624 | case 30: goto VPOP_INST; \ | 3623 | case 30: goto VLDR_INST; \ |
| 3625 | case 31: goto VLDR_INST; \ | 3624 | case 31: goto VLDM_INST ; \ |
| 3626 | case 32: goto VLDM_INST ; \ | 3625 | case 32: goto SRS_INST; \ |
| 3627 | case 33: goto SRS_INST; \ | 3626 | case 33: goto RFE_INST; \ |
| 3628 | case 34: goto RFE_INST; \ | 3627 | case 34: goto BKPT_INST; \ |
| 3629 | case 35: goto BKPT_INST; \ | 3628 | case 35: goto BLX_INST; \ |
| 3630 | case 36: goto BLX_INST; \ | 3629 | case 36: goto CPS_INST; \ |
| 3631 | case 37: goto CPS_INST; \ | 3630 | case 37: goto PLD_INST; \ |
| 3632 | case 38: goto PLD_INST; \ | 3631 | case 38: goto SETEND_INST; \ |
| 3633 | case 39: goto SETEND_INST; \ | 3632 | case 39: goto CLREX_INST; \ |
| 3634 | case 40: goto CLREX_INST; \ | 3633 | case 40: goto REV16_INST; \ |
| 3635 | case 41: goto REV16_INST; \ | 3634 | case 41: goto USAD8_INST; \ |
| 3636 | case 42: goto USAD8_INST; \ | 3635 | case 42: goto SXTB_INST; \ |
| 3637 | case 43: goto SXTB_INST; \ | 3636 | case 43: goto UXTB_INST; \ |
| 3638 | case 44: goto UXTB_INST; \ | 3637 | case 44: goto SXTH_INST; \ |
| 3639 | case 45: goto SXTH_INST; \ | 3638 | case 45: goto SXTB16_INST; \ |
| 3640 | case 46: goto SXTB16_INST; \ | 3639 | case 46: goto UXTH_INST; \ |
| 3641 | case 47: goto UXTH_INST; \ | 3640 | case 47: goto UXTB16_INST; \ |
| 3642 | case 48: goto UXTB16_INST; \ | 3641 | case 48: goto CPY_INST; \ |
| 3643 | case 49: goto CPY_INST; \ | 3642 | case 49: goto UXTAB_INST; \ |
| 3644 | case 50: goto UXTAB_INST; \ | 3643 | case 50: goto SSUB8_INST; \ |
| 3645 | case 51: goto SSUB8_INST; \ | 3644 | case 51: goto SHSUB8_INST; \ |
| 3646 | case 52: goto SHSUB8_INST; \ | 3645 | case 52: goto SSUBADDX_INST; \ |
| 3647 | case 53: goto SSUBADDX_INST; \ | 3646 | case 53: goto STREX_INST; \ |
| 3648 | case 54: goto STREX_INST; \ | 3647 | case 54: goto STREXB_INST; \ |
| 3649 | case 55: goto STREXB_INST; \ | 3648 | case 55: goto SWP_INST; \ |
| 3650 | case 56: goto SWP_INST; \ | 3649 | case 56: goto SWPB_INST; \ |
| 3651 | case 57: goto SWPB_INST; \ | 3650 | case 57: goto SSUB16_INST; \ |
| 3652 | case 58: goto SSUB16_INST; \ | 3651 | case 58: goto SSAT16_INST; \ |
| 3653 | case 59: goto SSAT16_INST; \ | 3652 | case 59: goto SHSUBADDX_INST; \ |
| 3654 | case 60: goto SHSUBADDX_INST; \ | 3653 | case 60: goto QSUBADDX_INST; \ |
| 3655 | case 61: goto QSUBADDX_INST; \ | 3654 | case 61: goto SHADDSUBX_INST; \ |
| 3656 | case 62: goto SHADDSUBX_INST; \ | 3655 | case 62: goto SHADD8_INST; \ |
| 3657 | case 63: goto SHADD8_INST; \ | 3656 | case 63: goto SHADD16_INST; \ |
| 3658 | case 64: goto SHADD16_INST; \ | 3657 | case 64: goto SEL_INST; \ |
| 3659 | case 65: goto SEL_INST; \ | 3658 | case 65: goto SADDSUBX_INST; \ |
| 3660 | case 66: goto SADDSUBX_INST; \ | 3659 | case 66: goto SADD8_INST; \ |
| 3661 | case 67: goto SADD8_INST; \ | 3660 | case 67: goto SADD16_INST; \ |
| 3662 | case 68: goto SADD16_INST; \ | 3661 | case 68: goto SHSUB16_INST; \ |
| 3663 | case 69: goto SHSUB16_INST; \ | 3662 | case 69: goto UMAAL_INST; \ |
| 3664 | case 70: goto UMAAL_INST; \ | 3663 | case 70: goto UXTAB16_INST; \ |
| 3665 | case 71: goto UXTAB16_INST; \ | 3664 | case 71: goto USUBADDX_INST; \ |
| 3666 | case 72: goto USUBADDX_INST; \ | 3665 | case 72: goto USUB8_INST; \ |
| 3667 | case 73: goto USUB8_INST; \ | 3666 | case 73: goto USUB16_INST; \ |
| 3668 | case 74: goto USUB16_INST; \ | 3667 | case 74: goto USAT16_INST; \ |
| 3669 | case 75: goto USAT16_INST; \ | 3668 | case 75: goto USADA8_INST; \ |
| 3670 | case 76: goto USADA8_INST; \ | 3669 | case 76: goto UQSUBADDX_INST; \ |
| 3671 | case 77: goto UQSUBADDX_INST; \ | 3670 | case 77: goto UQSUB8_INST; \ |
| 3672 | case 78: goto UQSUB8_INST; \ | 3671 | case 78: goto UQSUB16_INST; \ |
| 3673 | case 79: goto UQSUB16_INST; \ | 3672 | case 79: goto UQADDSUBX_INST; \ |
| 3674 | case 80: goto UQADDSUBX_INST; \ | 3673 | case 80: goto UQADD8_INST; \ |
| 3675 | case 81: goto UQADD8_INST; \ | 3674 | case 81: goto UQADD16_INST; \ |
| 3676 | case 82: goto UQADD16_INST; \ | 3675 | case 82: goto SXTAB_INST; \ |
| 3677 | case 83: goto SXTAB_INST; \ | 3676 | case 83: goto UHSUBADDX_INST; \ |
| 3678 | case 84: goto UHSUBADDX_INST; \ | 3677 | case 84: goto UHSUB8_INST; \ |
| 3679 | case 85: goto UHSUB8_INST; \ | 3678 | case 85: goto UHSUB16_INST; \ |
| 3680 | case 86: goto UHSUB16_INST; \ | 3679 | case 86: goto UHADDSUBX_INST; \ |
| 3681 | case 87: goto UHADDSUBX_INST; \ | 3680 | case 87: goto UHADD8_INST; \ |
| 3682 | case 88: goto UHADD8_INST; \ | 3681 | case 88: goto UHADD16_INST; \ |
| 3683 | case 89: goto UHADD16_INST; \ | 3682 | case 89: goto UADDSUBX_INST; \ |
| 3684 | case 90: goto UADDSUBX_INST; \ | 3683 | case 90: goto UADD8_INST; \ |
| 3685 | case 91: goto UADD8_INST; \ | 3684 | case 91: goto UADD16_INST; \ |
| 3686 | case 92: goto UADD16_INST; \ | 3685 | case 92: goto SXTAH_INST; \ |
| 3687 | case 93: goto SXTAH_INST; \ | 3686 | case 93: goto SXTAB16_INST; \ |
| 3688 | case 94: goto SXTAB16_INST; \ | 3687 | case 94: goto QADD8_INST; \ |
| 3689 | case 95: goto QADD8_INST; \ | 3688 | case 95: goto BXJ_INST; \ |
| 3690 | case 96: goto BXJ_INST; \ | 3689 | case 96: goto CLZ_INST; \ |
| 3691 | case 97: goto CLZ_INST; \ | 3690 | case 97: goto UXTAH_INST; \ |
| 3692 | case 98: goto UXTAH_INST; \ | 3691 | case 98: goto BX_INST; \ |
| 3693 | case 99: goto BX_INST; \ | 3692 | case 99: goto REV_INST; \ |
| 3694 | case 100: goto REV_INST; \ | 3693 | case 100: goto BLX_INST; \ |
| 3695 | case 101: goto BLX_INST; \ | 3694 | case 101: goto REVSH_INST; \ |
| 3696 | case 102: goto REVSH_INST; \ | 3695 | case 102: goto QADD_INST; \ |
| 3697 | case 103: goto QADD_INST; \ | 3696 | case 103: goto QADD16_INST; \ |
| 3698 | case 104: goto QADD16_INST; \ | 3697 | case 104: goto QADDSUBX_INST; \ |
| 3699 | case 105: goto QADDSUBX_INST; \ | 3698 | case 105: goto LDREX_INST; \ |
| 3700 | case 106: goto LDREX_INST; \ | 3699 | case 106: goto QDADD_INST; \ |
| 3701 | case 107: goto QDADD_INST; \ | 3700 | case 107: goto QDSUB_INST; \ |
| 3702 | case 108: goto QDSUB_INST; \ | 3701 | case 108: goto QSUB_INST; \ |
| 3703 | case 109: goto QSUB_INST; \ | 3702 | case 109: goto LDREXB_INST; \ |
| 3704 | case 110: goto LDREXB_INST; \ | 3703 | case 110: goto QSUB8_INST; \ |
| 3705 | case 111: goto QSUB8_INST; \ | 3704 | case 111: goto QSUB16_INST; \ |
| 3706 | case 112: goto QSUB16_INST; \ | 3705 | case 112: goto SMUAD_INST; \ |
| 3707 | case 113: goto SMUAD_INST; \ | 3706 | case 113: goto SMMUL_INST; \ |
| 3708 | case 114: goto SMMUL_INST; \ | 3707 | case 114: goto SMUSD_INST; \ |
| 3709 | case 115: goto SMUSD_INST; \ | 3708 | case 115: goto SMLSD_INST; \ |
| 3710 | case 116: goto SMLSD_INST; \ | 3709 | case 116: goto SMLSLD_INST; \ |
| 3711 | case 117: goto SMLSLD_INST; \ | 3710 | case 117: goto SMMLA_INST; \ |
| 3712 | case 118: goto SMMLA_INST; \ | 3711 | case 118: goto SMMLS_INST; \ |
| 3713 | case 119: goto SMMLS_INST; \ | 3712 | case 119: goto SMLALD_INST; \ |
| 3714 | case 120: goto SMLALD_INST; \ | 3713 | case 120: goto SMLAD_INST; \ |
| 3715 | case 121: goto SMLAD_INST; \ | 3714 | case 121: goto SMLAW_INST; \ |
| 3716 | case 122: goto SMLAW_INST; \ | 3715 | case 122: goto SMULW_INST; \ |
| 3717 | case 123: goto SMULW_INST; \ | 3716 | case 123: goto PKHTB_INST; \ |
| 3718 | case 124: goto PKHTB_INST; \ | 3717 | case 124: goto PKHBT_INST; \ |
| 3719 | case 125: goto PKHBT_INST; \ | 3718 | case 125: goto SMUL_INST; \ |
| 3720 | case 126: goto SMUL_INST; \ | 3719 | case 126: goto SMLALXY_INST; \ |
| 3721 | case 127: goto SMLALXY_INST; \ | 3720 | case 127: goto SMLA_INST; \ |
| 3722 | case 128: goto SMLA_INST; \ | 3721 | case 128: goto MCRR_INST; \ |
| 3723 | case 129: goto MCRR_INST; \ | 3722 | case 129: goto MRRC_INST; \ |
| 3724 | case 130: goto MRRC_INST; \ | 3723 | case 130: goto CMP_INST; \ |
| 3725 | case 131: goto CMP_INST; \ | 3724 | case 131: goto TST_INST; \ |
| 3726 | case 132: goto TST_INST; \ | 3725 | case 132: goto TEQ_INST; \ |
| 3727 | case 133: goto TEQ_INST; \ | 3726 | case 133: goto CMN_INST; \ |
| 3728 | case 134: goto CMN_INST; \ | 3727 | case 134: goto SMULL_INST; \ |
| 3729 | case 135: goto SMULL_INST; \ | 3728 | case 135: goto UMULL_INST; \ |
| 3730 | case 136: goto UMULL_INST; \ | 3729 | case 136: goto UMLAL_INST; \ |
| 3731 | case 137: goto UMLAL_INST; \ | 3730 | case 137: goto SMLAL_INST; \ |
| 3732 | case 138: goto SMLAL_INST; \ | 3731 | case 138: goto MUL_INST; \ |
| 3733 | case 139: goto MUL_INST; \ | 3732 | case 139: goto MLA_INST; \ |
| 3734 | case 140: goto MLA_INST; \ | 3733 | case 140: goto SSAT_INST; \ |
| 3735 | case 141: goto SSAT_INST; \ | 3734 | case 141: goto USAT_INST; \ |
| 3736 | case 142: goto USAT_INST; \ | 3735 | case 142: goto MRS_INST; \ |
| 3737 | case 143: goto MRS_INST; \ | 3736 | case 143: goto MSR_INST; \ |
| 3738 | case 144: goto MSR_INST; \ | 3737 | case 144: goto AND_INST; \ |
| 3739 | case 145: goto AND_INST; \ | 3738 | case 145: goto BIC_INST; \ |
| 3740 | case 146: goto BIC_INST; \ | 3739 | case 146: goto LDM_INST; \ |
| 3741 | case 147: goto LDM_INST; \ | 3740 | case 147: goto EOR_INST; \ |
| 3742 | case 148: goto EOR_INST; \ | 3741 | case 148: goto ADD_INST; \ |
| 3743 | case 149: goto ADD_INST; \ | 3742 | case 149: goto RSB_INST; \ |
| 3744 | case 150: goto RSB_INST; \ | 3743 | case 150: goto RSC_INST; \ |
| 3745 | case 151: goto RSC_INST; \ | 3744 | case 151: goto SBC_INST; \ |
| 3746 | case 152: goto SBC_INST; \ | 3745 | case 152: goto ADC_INST; \ |
| 3747 | case 153: goto ADC_INST; \ | 3746 | case 153: goto SUB_INST; \ |
| 3748 | case 154: goto SUB_INST; \ | 3747 | case 154: goto ORR_INST; \ |
| 3749 | case 155: goto ORR_INST; \ | 3748 | case 155: goto MVN_INST; \ |
| 3750 | case 156: goto MVN_INST; \ | 3749 | case 156: goto MOV_INST; \ |
| 3751 | case 157: goto MOV_INST; \ | 3750 | case 157: goto STM_INST; \ |
| 3752 | case 158: goto STM_INST; \ | 3751 | case 158: goto LDM_INST; \ |
| 3753 | case 159: goto LDM_INST; \ | 3752 | case 159: goto LDRSH_INST; \ |
| 3754 | case 160: goto LDRSH_INST; \ | 3753 | case 160: goto STM_INST; \ |
| 3755 | case 161: goto STM_INST; \ | 3754 | case 161: goto LDM_INST; \ |
| 3756 | case 162: goto LDM_INST; \ | 3755 | case 162: goto LDRSB_INST; \ |
| 3757 | case 163: goto LDRSB_INST; \ | 3756 | case 163: goto STRD_INST; \ |
| 3758 | case 164: goto STRD_INST; \ | 3757 | case 164: goto LDRH_INST; \ |
| 3759 | case 165: goto LDRH_INST; \ | 3758 | case 165: goto STRH_INST; \ |
| 3760 | case 166: goto STRH_INST; \ | 3759 | case 166: goto LDRD_INST; \ |
| 3761 | case 167: goto LDRD_INST; \ | 3760 | case 167: goto STRT_INST; \ |
| 3762 | case 168: goto STRT_INST; \ | 3761 | case 168: goto STRBT_INST; \ |
| 3763 | case 169: goto STRBT_INST; \ | 3762 | case 169: goto LDRBT_INST; \ |
| 3764 | case 170: goto LDRBT_INST; \ | 3763 | case 170: goto LDRT_INST; \ |
| 3765 | case 171: goto LDRT_INST; \ | 3764 | case 171: goto MRC_INST; \ |
| 3766 | case 172: goto MRC_INST; \ | 3765 | case 172: goto MCR_INST; \ |
| 3767 | case 173: goto MCR_INST; \ | 3766 | case 173: goto MSR_INST; \ |
| 3768 | case 174: goto MSR_INST; \ | 3767 | case 174: goto MSR_INST; \ |
| 3769 | case 175: goto MSR_INST; \ | 3768 | case 175: goto MSR_INST; \ |
| 3770 | case 176: goto MSR_INST; \ | 3769 | case 176: goto MSR_INST; \ |
| 3771 | case 177: goto MSR_INST; \ | 3770 | case 177: goto MSR_INST; \ |
| 3772 | case 178: goto MSR_INST; \ | 3771 | case 178: goto LDRB_INST; \ |
| 3773 | case 179: goto LDRB_INST; \ | 3772 | case 179: goto STRB_INST; \ |
| 3774 | case 180: goto STRB_INST; \ | 3773 | case 180: goto LDR_INST; \ |
| 3775 | case 181: goto LDR_INST; \ | 3774 | case 181: goto LDRCOND_INST ; \ |
| 3776 | case 182: goto LDRCOND_INST ; \ | 3775 | case 182: goto STR_INST; \ |
| 3777 | case 183: goto STR_INST; \ | 3776 | case 183: goto CDP_INST; \ |
| 3778 | case 184: goto CDP_INST; \ | 3777 | case 184: goto STC_INST; \ |
| 3779 | case 185: goto STC_INST; \ | 3778 | case 185: goto LDC_INST; \ |
| 3780 | case 186: goto LDC_INST; \ | 3779 | case 186: goto LDREXD_INST; \ |
| 3781 | case 187: goto LDREXD_INST; \ | 3780 | case 187: goto STREXD_INST; \ |
| 3782 | case 188: goto STREXD_INST; \ | 3781 | case 188: goto LDREXH_INST; \ |
| 3783 | case 189: goto LDREXH_INST; \ | 3782 | case 189: goto STREXH_INST; \ |
| 3784 | case 190: goto STREXH_INST; \ | 3783 | case 190: goto NOP_INST; \ |
| 3785 | case 191: goto NOP_INST; \ | 3784 | case 191: goto YIELD_INST; \ |
| 3786 | case 192: goto YIELD_INST; \ | 3785 | case 192: goto WFE_INST; \ |
| 3787 | case 193: goto WFE_INST; \ | 3786 | case 193: goto WFI_INST; \ |
| 3788 | case 194: goto WFI_INST; \ | 3787 | case 194: goto SEV_INST; \ |
| 3789 | case 195: goto SEV_INST; \ | 3788 | case 195: goto SWI_INST; \ |
| 3790 | case 196: goto SWI_INST; \ | 3789 | case 196: goto BBL_INST; \ |
| 3791 | case 197: goto BBL_INST; \ | 3790 | case 197: goto B_2_THUMB ; \ |
| 3792 | case 198: goto B_2_THUMB ; \ | 3791 | case 198: goto B_COND_THUMB ; \ |
| 3793 | case 199: goto B_COND_THUMB ; \ | 3792 | case 199: goto BL_1_THUMB ; \ |
| 3794 | case 200: goto BL_1_THUMB ; \ | 3793 | case 200: goto BL_2_THUMB ; \ |
| 3795 | case 201: goto BL_2_THUMB ; \ | 3794 | case 201: goto BLX_1_THUMB ; \ |
| 3796 | case 202: goto BLX_1_THUMB ; \ | 3795 | case 202: goto DISPATCH; \ |
| 3797 | case 203: goto DISPATCH; \ | 3796 | case 203: goto INIT_INST_LENGTH; \ |
| 3798 | case 204: goto INIT_INST_LENGTH; \ | 3797 | case 204: goto END; \ |
| 3799 | case 205: goto END; \ | ||
| 3800 | } | 3798 | } |
| 3801 | #endif | 3799 | #endif |
| 3802 | 3800 | ||
| @@ -3823,7 +3821,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) { | |||
| 3823 | // to a clunky switch statement. | 3821 | // to a clunky switch statement. |
| 3824 | #if defined __GNUC__ || defined __clang__ | 3822 | #if defined __GNUC__ || defined __clang__ |
| 3825 | void *InstLabel[] = { | 3823 | void *InstLabel[] = { |
| 3826 | &&VMLA_INST, &&VMLS_INST, &&VNMLA_INST, &&VNMLA_INST, &&VNMLS_INST, &&VNMUL_INST, &&VMUL_INST, &&VADD_INST, &&VSUB_INST, | 3824 | &&VMLA_INST, &&VMLS_INST, &&VNMLA_INST, &&VNMLS_INST, &&VNMUL_INST, &&VMUL_INST, &&VADD_INST, &&VSUB_INST, |
| 3827 | &&VDIV_INST, &&VMOVI_INST, &&VMOVR_INST, &&VABS_INST, &&VNEG_INST, &&VSQRT_INST, &&VCMP_INST, &&VCMP2_INST, &&VCVTBDS_INST, | 3825 | &&VDIV_INST, &&VMOVI_INST, &&VMOVR_INST, &&VABS_INST, &&VNEG_INST, &&VSQRT_INST, &&VCMP_INST, &&VCMP2_INST, &&VCVTBDS_INST, |
| 3828 | &&VCVTBFF_INST, &&VCVTBFI_INST, &&VMOVBRS_INST, &&VMSR_INST, &&VMOVBRC_INST, &&VMRS_INST, &&VMOVBCR_INST, &&VMOVBRRSS_INST, | 3826 | &&VCVTBFF_INST, &&VCVTBFI_INST, &&VMOVBRS_INST, &&VMSR_INST, &&VMOVBRC_INST, &&VMRS_INST, &&VMOVBCR_INST, &&VMOVBRRSS_INST, |
| 3829 | &&VMOVBRRD_INST, &&VSTR_INST, &&VPUSH_INST, &&VSTM_INST, &&VPOP_INST, &&VLDR_INST, &&VLDM_INST, | 3827 | &&VMOVBRRD_INST, &&VSTR_INST, &&VPUSH_INST, &&VSTM_INST, &&VPOP_INST, &&VLDR_INST, &&VLDM_INST, |