diff options
| author | 2015-08-25 23:52:35 -0400 | |
|---|---|---|
| committer | 2015-08-25 23:59:01 -0400 | |
| commit | 01dd833ffa6483b868c848dca7cf30769859587c (patch) | |
| tree | 1b0f8b97a9b183ac5606201f9b54ee25f0d4c8d4 /src | |
| parent | Merge pull request #1073 from lioncash/guard (diff) | |
| download | yuzu-01dd833ffa6483b868c848dca7cf30769859587c.tar.gz yuzu-01dd833ffa6483b868c848dca7cf30769859587c.tar.xz yuzu-01dd833ffa6483b868c848dca7cf30769859587c.zip | |
dyncom: Change return type of CondPassed to bool
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 96 |
1 files changed, 39 insertions, 57 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index 01c712f24..0756cfe61 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp | |||
| @@ -49,65 +49,47 @@ enum { | |||
| 49 | 49 | ||
| 50 | typedef unsigned int (*shtop_fp_t)(ARMul_State* cpu, unsigned int sht_oper); | 50 | typedef unsigned int (*shtop_fp_t)(ARMul_State* cpu, unsigned int sht_oper); |
| 51 | 51 | ||
| 52 | static int CondPassed(ARMul_State* cpu, unsigned int cond) { | 52 | static bool CondPassed(ARMul_State* cpu, unsigned int cond) { |
| 53 | const u32 NFLAG = cpu->NFlag; | 53 | const bool n_flag = cpu->NFlag != 0; |
| 54 | const u32 ZFLAG = cpu->ZFlag; | 54 | const bool z_flag = cpu->ZFlag != 0; |
| 55 | const u32 CFLAG = cpu->CFlag; | 55 | const bool c_flag = cpu->CFlag != 0; |
| 56 | const u32 VFLAG = cpu->VFlag; | 56 | const bool v_flag = cpu->VFlag != 0; |
| 57 | |||
| 58 | int temp = 0; | ||
| 59 | 57 | ||
| 60 | switch (cond) { | 58 | switch (cond) { |
| 61 | case 0x0: | 59 | case ConditionCode::EQ: |
| 62 | temp = ZFLAG; | 60 | return z_flag; |
| 63 | break; | 61 | case ConditionCode::NE: |
| 64 | case 0x1: // NE | 62 | return !z_flag; |
| 65 | temp = !ZFLAG; | 63 | case ConditionCode::CS: |
| 66 | break; | 64 | return c_flag; |
| 67 | case 0x2: // CS | 65 | case ConditionCode::CC: |
| 68 | temp = CFLAG; | 66 | return !c_flag; |
| 69 | break; | 67 | case ConditionCode::MI: |
| 70 | case 0x3: // CC | 68 | return n_flag; |
| 71 | temp = !CFLAG; | 69 | case ConditionCode::PL: |
| 72 | break; | 70 | return !n_flag; |
| 73 | case 0x4: // MI | 71 | case ConditionCode::VS: |
| 74 | temp = NFLAG; | 72 | return v_flag; |
| 75 | break; | 73 | case ConditionCode::VC: |
| 76 | case 0x5: // PL | 74 | return !v_flag; |
| 77 | temp = !NFLAG; | 75 | case ConditionCode::HI: |
| 78 | break; | 76 | return (c_flag && !z_flag); |
| 79 | case 0x6: // VS | 77 | case ConditionCode::LS: |
| 80 | temp = VFLAG; | 78 | return (!c_flag || z_flag); |
| 81 | break; | 79 | case ConditionCode::GE: |
| 82 | case 0x7: // VC | 80 | return ((!n_flag && !v_flag) || (n_flag && v_flag)); |
| 83 | temp = !VFLAG; | 81 | case ConditionCode::LT: |
| 84 | break; | 82 | return ((n_flag && !v_flag) || (!n_flag && v_flag)); |
| 85 | case 0x8: // HI | 83 | case ConditionCode::GT: |
| 86 | temp = (CFLAG && !ZFLAG); | 84 | return ((!n_flag && !v_flag && !z_flag) || (n_flag && v_flag && !z_flag)); |
| 87 | break; | 85 | case ConditionCode::LE: |
| 88 | case 0x9: // LS | 86 | return ((n_flag && !v_flag) || (!n_flag && v_flag)) || z_flag; |
| 89 | temp = (!CFLAG || ZFLAG); | 87 | case ConditionCode::AL: |
| 90 | break; | 88 | case ConditionCode::NV: // Unconditional |
| 91 | case 0xa: // GE | 89 | return true; |
| 92 | temp = ((!NFLAG && !VFLAG) || (NFLAG && VFLAG)); | 90 | } |
| 93 | break; | 91 | |
| 94 | case 0xb: // LT | 92 | return false; |
| 95 | temp = ((NFLAG && !VFLAG) || (!NFLAG && VFLAG)); | ||
| 96 | break; | ||
| 97 | case 0xc: // GT | ||
| 98 | temp = ((!NFLAG && !VFLAG && !ZFLAG) || (NFLAG && VFLAG && !ZFLAG)); | ||
| 99 | break; | ||
| 100 | case 0xd: // LE | ||
| 101 | temp = ((NFLAG && !VFLAG) || (!NFLAG && VFLAG)) || ZFLAG; | ||
| 102 | break; | ||
| 103 | case 0xe: // AL | ||
| 104 | temp = 1; | ||
| 105 | break; | ||
| 106 | case 0xf: | ||
| 107 | temp = 1; | ||
| 108 | break; | ||
| 109 | } | ||
| 110 | return temp; | ||
| 111 | } | 93 | } |
| 112 | 94 | ||
| 113 | static unsigned int DPO(Immediate)(ARMul_State* cpu, unsigned int sht_oper) { | 95 | static unsigned int DPO(Immediate)(ARMul_State* cpu, unsigned int sht_oper) { |