summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2015-06-12 10:43:59 -0400
committerGravatar bunnei2015-06-12 10:43:59 -0400
commit2a435aa0ccd0369a3e1d941f092cd6dc3887bb1f (patch)
tree9a1ec0d390245e280ea23b7315d3b14e0f60fbff /src
parentMerge pull request #835 from tfarley/hw-renderer-fixes (diff)
parentvfp: Implement VMOVBCR/VMOVBRC (diff)
downloadyuzu-2a435aa0ccd0369a3e1d941f092cd6dc3887bb1f.tar.gz
yuzu-2a435aa0ccd0369a3e1d941f092cd6dc3887bb1f.tar.xz
yuzu-2a435aa0ccd0369a3e1d941f092cd6dc3887bb1f.zip
Merge pull request #856 from lioncash/vfp
vfp: Implement VMOVBCR/VMOVBRC
Diffstat (limited to 'src')
-rw-r--r--src/core/arm/skyeye_common/vfp/vfp.h1
-rw-r--r--src/core/arm/skyeye_common/vfp/vfpinstr.cpp12
2 files changed, 8 insertions, 5 deletions
diff --git a/src/core/arm/skyeye_common/vfp/vfp.h b/src/core/arm/skyeye_common/vfp/vfp.h
index 727350f14..acefae9bb 100644
--- a/src/core/arm/skyeye_common/vfp/vfp.h
+++ b/src/core/arm/skyeye_common/vfp/vfp.h
@@ -22,7 +22,6 @@
22 22
23#include "core/arm/skyeye_common/vfp/vfp_helper.h" /* for references to cdp SoftFloat functions */ 23#include "core/arm/skyeye_common/vfp/vfp_helper.h" /* for references to cdp SoftFloat functions */
24 24
25#define VFP_DEBUG_UNIMPLEMENTED(x) LOG_ERROR(Core_ARM11, "in func %s, " #x " unimplemented\n", __FUNCTION__); exit(-1);
26#define VFP_DEBUG_UNTESTED(x) LOG_TRACE(Core_ARM11, "in func %s, " #x " untested\n", __FUNCTION__); 25#define VFP_DEBUG_UNTESTED(x) LOG_TRACE(Core_ARM11, "in func %s, " #x " untested\n", __FUNCTION__);
27#define CHECK_VFP_ENABLED 26#define CHECK_VFP_ENABLED
28#define CHECK_VFP_CDP_RET vfp_raise_exceptions(cpu, ret, inst_cream->instr, cpu->VFP[VFP_FPSCR]); 27#define CHECK_VFP_CDP_RET vfp_raise_exceptions(cpu, ret, inst_cream->instr, cpu->VFP[VFP_FPSCR]);
diff --git a/src/core/arm/skyeye_common/vfp/vfpinstr.cpp b/src/core/arm/skyeye_common/vfp/vfpinstr.cpp
index 3ed918a93..d4060b791 100644
--- a/src/core/arm/skyeye_common/vfp/vfpinstr.cpp
+++ b/src/core/arm/skyeye_common/vfp/vfpinstr.cpp
@@ -1068,10 +1068,12 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrc)(unsigned int inst, int index)
1068#ifdef VFP_INTERPRETER_IMPL 1068#ifdef VFP_INTERPRETER_IMPL
1069VMOVBRC_INST: 1069VMOVBRC_INST:
1070{ 1070{
1071 if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) { 1071 if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
1072 CHECK_VFP_ENABLED; 1072 CHECK_VFP_ENABLED;
1073 1073
1074 VFP_DEBUG_UNIMPLEMENTED(VMOVBRC); 1074 vmovbrc_inst* const inst_cream = (vmovbrc_inst*)inst_base->component;
1075
1076 cpu->ExtReg[(2 * inst_cream->d) + inst_cream->index] = cpu->Reg[inst_cream->t];
1075 } 1077 }
1076 cpu->Reg[15] += GET_INST_SIZE(cpu); 1078 cpu->Reg[15] += GET_INST_SIZE(cpu);
1077 INC_PC(sizeof(vmovbrc_inst)); 1079 INC_PC(sizeof(vmovbrc_inst));
@@ -1195,10 +1197,12 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbcr)(unsigned int inst, int index)
1195#ifdef VFP_INTERPRETER_IMPL 1197#ifdef VFP_INTERPRETER_IMPL
1196VMOVBCR_INST: 1198VMOVBCR_INST:
1197{ 1199{
1198 if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) { 1200 if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
1199 CHECK_VFP_ENABLED; 1201 CHECK_VFP_ENABLED;
1200 1202
1201 VFP_DEBUG_UNIMPLEMENTED(VMOVBCR); 1203 vmovbcr_inst* const inst_cream = (vmovbcr_inst*) inst_base->component;
1204
1205 cpu->Reg[inst_cream->t] = cpu->ExtReg[(2 * inst_cream->d) + inst_cream->index];
1202 } 1206 }
1203 cpu->Reg[15] += GET_INST_SIZE(cpu); 1207 cpu->Reg[15] += GET_INST_SIZE(cpu);
1204 INC_PC(sizeof(vmovbcr_inst)); 1208 INC_PC(sizeof(vmovbcr_inst));