summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/rsp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/rsp')
-rw-r--r--src/emu/cpu/rsp/rsp.h2
-rw-r--r--src/emu/cpu/rsp/rspcp2.c30
-rw-r--r--src/emu/cpu/rsp/rspcp2.h38
-rw-r--r--src/emu/cpu/rsp/rspcp2d.c58
-rw-r--r--src/emu/cpu/rsp/rspcp2d.h4
-rw-r--r--src/emu/cpu/rsp/rspcp2s.c33
-rw-r--r--src/emu/cpu/rsp/rspcp2s.h66
-rw-r--r--src/emu/cpu/rsp/rspdrc.c10
8 files changed, 120 insertions, 121 deletions
diff --git a/src/emu/cpu/rsp/rsp.h b/src/emu/cpu/rsp/rsp.h
index 1e8380cc968..c4bf16ccdf3 100644
--- a/src/emu/cpu/rsp/rsp.h
+++ b/src/emu/cpu/rsp/rsp.h
@@ -269,7 +269,7 @@ protected:
direct_read_data *m_direct;
private:
- rsp_cop2 *m_cop2;
+ rsp_cop2 *m_cop2;
UINT32 *m_dmem32;
UINT16 *m_dmem16;
diff --git a/src/emu/cpu/rsp/rspcp2.c b/src/emu/cpu/rsp/rspcp2.c
index 7dca6014eb6..4f7ab80a51b 100644
--- a/src/emu/cpu/rsp/rspcp2.c
+++ b/src/emu/cpu/rsp/rspcp2.c
@@ -27,14 +27,14 @@ extern offs_t rsp_dasm_one(char *buffer, offs_t pc, UINT32 op);
Helpful Defines
***************************************************************************/
-#define VDREG ((op >> 6) & 0x1f)
-#define VS1REG ((op >> 11) & 0x1f)
-#define VS2REG ((op >> 16) & 0x1f)
-#define EL ((op >> 21) & 0xf)
+#define VDREG ((op >> 6) & 0x1f)
+#define VS1REG ((op >> 11) & 0x1f)
+#define VS2REG ((op >> 16) & 0x1f)
+#define EL ((op >> 21) & 0xf)
-#define RSVAL (m_rsp.m_rsp_state->r[RSREG])
-#define RTVAL (m_rsp.m_rsp_state->r[RTREG])
-#define RDVAL (m_rsp.m_rsp_state->r[RDREG])
+#define RSVAL (m_rsp.m_rsp_state->r[RSREG])
+#define RTVAL (m_rsp.m_rsp_state->r[RTREG])
+#define RDVAL (m_rsp.m_rsp_state->r[RDREG])
#define VREG_B(reg, offset) m_v[(reg)].b[(offset)^1]
#define VREG_S(reg, offset) m_v[(reg)].s[(offset)]
@@ -56,11 +56,11 @@ extern offs_t rsp_dasm_one(char *buffer, offs_t pc, UINT32 op);
#define ZERO 3
#define CLIP2 4
-#define ACCUM(x) m_accum[x].q
-#define ACCUM_H(x) (UINT16)m_accum[x].w[3]
-#define ACCUM_M(x) (UINT16)m_accum[x].w[2]
-#define ACCUM_L(x) (UINT16)m_accum[x].w[1]
-#define ACCUM_LL(x) (UINT16)m_accum[x].w[0]
+#define ACCUM(x) m_accum[x].q
+#define ACCUM_H(x) (UINT16)m_accum[x].w[3]
+#define ACCUM_M(x) (UINT16)m_accum[x].w[2]
+#define ACCUM_L(x) (UINT16)m_accum[x].w[1]
+#define ACCUM_LL(x) (UINT16)m_accum[x].w[0]
#define SET_ACCUM_H(v, x) m_accum[x].w[3] = v;
#define SET_ACCUM_M(v, x) m_accum[x].w[2] = v;
@@ -123,9 +123,9 @@ static const int vector_elements_2[16][8] =
};
rsp_cop2::rsp_cop2(rsp_device &rsp, running_machine &machine)
- : m_rsp(rsp)
- , m_machine(machine)
- , m_reciprocal_res(0)
+ : m_rsp(rsp)
+ , m_machine(machine)
+ , m_reciprocal_res(0)
, m_reciprocal_high(0)
, m_dp_allowed(0)
{
diff --git a/src/emu/cpu/rsp/rspcp2.h b/src/emu/cpu/rsp/rspcp2.h
index df33c13baf6..9b00b5a57f5 100644
--- a/src/emu/cpu/rsp/rspcp2.h
+++ b/src/emu/cpu/rsp/rspcp2.h
@@ -126,36 +126,36 @@ public:
virtual void mtc2();
virtual void ctc2();
- virtual void handle_cop2(UINT32 op);
+ virtual void handle_cop2(UINT32 op);
- void log_instruction_execution();
- virtual void cfunc_unimplemented_opcode() { }
+ void log_instruction_execution();
+ virtual void cfunc_unimplemented_opcode() { }
protected:
- virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; }
+ virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; }
- UINT16 SATURATE_ACCUM(int accum, int slice, UINT16 negative, UINT16 positive);
- UINT16 SATURATE_ACCUM1(int accum, UINT16 negative, UINT16 positive);
+ UINT16 SATURATE_ACCUM(int accum, int slice, UINT16 negative, UINT16 positive);
+ UINT16 SATURATE_ACCUM1(int accum, UINT16 negative, UINT16 positive);
- UINT32 m_op;
+ UINT32 m_op;
- rsp_device& m_rsp;
+ rsp_device& m_rsp;
running_machine& m_machine;
- UINT32 m_vres[8]; /* used for temporary vector results */
+ UINT32 m_vres[8]; /* used for temporary vector results */
- VECTOR_REG m_v[32];
+ VECTOR_REG m_v[32];
- ACCUMULATOR_REG m_accum[8];
- UINT16 m_vflag[6][8];
+ ACCUMULATOR_REG m_accum[8];
+ UINT16 m_vflag[6][8];
- INT32 m_reciprocal_res;
- UINT32 m_reciprocal_high;
- INT32 m_dp_allowed;
+ INT32 m_reciprocal_res;
+ UINT32 m_reciprocal_high;
+ INT32 m_dp_allowed;
private:
- void handle_lwc2(UINT32 op);
- void handle_swc2(UINT32 op);
- void handle_vector_ops(UINT32 op);
+ void handle_lwc2(UINT32 op);
+ void handle_swc2(UINT32 op);
+ void handle_vector_ops(UINT32 op);
};
-#endif /* __RSPCP2_H__ */ \ No newline at end of file
+#endif /* __RSPCP2_H__ */
diff --git a/src/emu/cpu/rsp/rspcp2d.c b/src/emu/cpu/rsp/rspcp2d.c
index cc33779e5f4..0abc3e10f1f 100644
--- a/src/emu/cpu/rsp/rspcp2d.c
+++ b/src/emu/cpu/rsp/rspcp2d.c
@@ -28,14 +28,14 @@ extern offs_t rsp_dasm_one(char *buffer, offs_t pc, UINT32 op);
Helpful Defines
***************************************************************************/
-#define VDREG ((op >> 6) & 0x1f)
-#define VS1REG ((op >> 11) & 0x1f)
-#define VS2REG ((op >> 16) & 0x1f)
-#define EL ((op >> 21) & 0xf)
+#define VDREG ((op >> 6) & 0x1f)
+#define VS1REG ((op >> 11) & 0x1f)
+#define VS2REG ((op >> 16) & 0x1f)
+#define EL ((op >> 21) & 0xf)
-#define RSVAL (m_rsp.m_rsp_state->r[RSREG])
-#define RTVAL (m_rsp.m_rsp_state->r[RTREG])
-#define RDVAL (m_rsp.m_rsp_state->r[RDREG])
+#define RSVAL (m_rsp.m_rsp_state->r[RSREG])
+#define RTVAL (m_rsp.m_rsp_state->r[RTREG])
+#define RDVAL (m_rsp.m_rsp_state->r[RDREG])
#define VREG_B(reg, offset) m_v[(reg)].b[(offset)^1]
#define W_VREG_S(reg, offset) m_v[(reg)].s[(offset)]
@@ -60,16 +60,16 @@ static void cfunc_ctc2(void *param);
#define ACCUM_M(x) (UINT16)m_accum[x].w[2]
#define ACCUM_L(x) (UINT16)m_accum[x].w[1]
#define ACCUM_LL(x) (UINT16)m_accum[x].w[0]
-#define ACCUM(x) m_accum[x].q
+#define ACCUM(x) m_accum[x].q
#define SET_ACCUM_H(v, x) m_accum[x].w[3] = v;
#define SET_ACCUM_M(v, x) m_accum[x].w[2] = v;
#define SET_ACCUM_L(v, x) m_accum[x].w[1] = v;
#define SET_ACCUM_LL(v, x) m_accum[x].w[0] = v;
-#define SET_ACCUM(v, x) m_accum[x].q = v;
+#define SET_ACCUM(v, x) m_accum[x].q = v;
-#define GET_VS1(out, i) out = VREG_S(vs1reg, i)
-#define GET_VS2(out, i) out = VREG_S(vs2reg, VEC_EL_2(el, i))
+#define GET_VS1(out, i) out = VREG_S(vs1reg, i)
+#define GET_VS2(out, i) out = VREG_S(vs2reg, VEC_EL_2(el, i))
#define CARRY_FLAG(x) (m_vflag[CARRY][x & 7] != 0 ? 0xffff : 0)
#define COMPARE_FLAG(x) (m_vflag[COMPARE][x & 7] != 0 ? 0xffff : 0)
@@ -96,10 +96,10 @@ static void cfunc_ctc2(void *param);
#define CLEAR_CLIP2_FLAG(x) { m_vflag[CLIP2][x & 7] = 0; }
#define CACHE_VALUES() \
- const int op = m_op; \
- const int vdreg = VDREG; \
- const int vs1reg = VS1REG; \
- const int vs2reg = VS2REG; \
+ const int op = m_op; \
+ const int vdreg = VDREG; \
+ const int vs1reg = VS1REG; \
+ const int vs2reg = VS2REG; \
const int el = EL;
#define WRITEBACK_RESULT() { \
@@ -2105,7 +2105,7 @@ void rsp_cop2_drc::vsaw()
W_VREG_S(vdreg, i) = ACCUM_L(i);
}
break;
- default: // Unsupported
+ default: // Unsupported
{
for (int i = 0; i < 8; i++)
{
@@ -3465,8 +3465,8 @@ int rsp_cop2_drc::generate_vector_opcode(drcuml_block *block, rsp_device::compil
UML_CALLC(block, cfunc_vmov, this);
return TRUE;
- case 0x34: /* VRSQ */
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ case 0x34: /* VRSQ */
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
UML_CALLC(block, cfunc_vrsq, this);
return TRUE;
@@ -3480,8 +3480,8 @@ int rsp_cop2_drc::generate_vector_opcode(drcuml_block *block, rsp_device::compil
UML_CALLC(block, cfunc_vrsqh, this);
return TRUE;
- case 0x37: /* VNOP */
- case 0x3F: /* VNULL */
+ case 0x37: /* VNOP */
+ case 0x3F: /* VNULL */
return TRUE;
default:
@@ -3708,27 +3708,27 @@ int rsp_cop2_drc::generate_cop2(drcuml_block *block, rsp_device::compiler_state
case 0x00: /* MFCz */
if (RTREG != 0)
{
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_mfc2, this); // callc mfc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_mfc2, this); // callc mfc2
}
return TRUE;
case 0x02: /* CFCz */
if (RTREG != 0)
{
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_cfc2, this); // callc cfc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_cfc2, this); // callc cfc2
}
return TRUE;
case 0x04: /* MTCz */
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_mtc2, this); // callc mtc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_mtc2, this); // callc mtc2
return TRUE;
case 0x06: /* CTCz */
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_ctc2, this); // callc ctc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_ctc2, this); // callc ctc2
return TRUE;
case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17:
@@ -3736,4 +3736,4 @@ int rsp_cop2_drc::generate_cop2(drcuml_block *block, rsp_device::compiler_state
return generate_vector_opcode(block, compiler, desc);
}
return FALSE;
-} \ No newline at end of file
+}
diff --git a/src/emu/cpu/rsp/rspcp2d.h b/src/emu/cpu/rsp/rspcp2d.h
index 51c00dc53f3..96eb7a9a32b 100644
--- a/src/emu/cpu/rsp/rspcp2d.h
+++ b/src/emu/cpu/rsp/rspcp2d.h
@@ -104,7 +104,7 @@ public:
virtual void ctc2();
private:
- virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc);
+ virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc);
};
-#endif /* __RSPCP2D_H__ */ \ No newline at end of file
+#endif /* __RSPCP2D_H__ */
diff --git a/src/emu/cpu/rsp/rspcp2s.c b/src/emu/cpu/rsp/rspcp2s.c
index 5f53bb927c6..4f59ecc555d 100644
--- a/src/emu/cpu/rsp/rspcp2s.c
+++ b/src/emu/cpu/rsp/rspcp2s.c
@@ -26,14 +26,14 @@ using namespace uml;
Helpful Defines
***************************************************************************/
-#define VDREG ((op >> 6) & 0x1f)
-#define VS1REG ((op >> 11) & 0x1f)
-#define VS2REG ((op >> 16) & 0x1f)
-#define EL ((op >> 21) & 0xf)
+#define VDREG ((op >> 6) & 0x1f)
+#define VS1REG ((op >> 11) & 0x1f)
+#define VS2REG ((op >> 16) & 0x1f)
+#define EL ((op >> 21) & 0xf)
-#define RSVAL (m_rsp.m_rsp_state->r[RSREG])
-#define RTVAL (m_rsp.m_rsp_state->r[RTREG])
-#define RDVAL (m_rsp.m_rsp_state->r[RDREG])
+#define RSVAL (m_rsp.m_rsp_state->r[RSREG])
+#define RTVAL (m_rsp.m_rsp_state->r[RTREG])
+#define RDVAL (m_rsp.m_rsp_state->r[RDREG])
#define EXTRACT16(reg, value, element) \
switch((element) & 7) \
@@ -2322,9 +2322,8 @@ inline void rsp_cop2_simd::vsaw()
m_xv[VDREG] = m_accum_l;
break;
}
- default: // Unsupported, writes 0 to VD
+ default: // Unsupported, writes 0 to VD
{
-
}
}
}
@@ -3602,27 +3601,27 @@ int rsp_cop2_simd::generate_cop2(drcuml_block *block, rsp_device::compiler_state
case 0x00: /* MFCz */
if (RTREG != 0)
{
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_mfc2, this); // callc mfc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_mfc2, this); // callc mfc2
}
return TRUE;
case 0x02: /* CFCz */
if (RTREG != 0)
{
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_cfc2, this); // callc cfc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_cfc2, this); // callc cfc2
}
return TRUE;
case 0x04: /* MTCz */
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_mtc2, this); // callc mtc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_mtc2, this); // callc mtc2
return TRUE;
case 0x06: /* CTCz */
- UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
- UML_CALLC(block, cfunc_ctc2, this); // callc ctc2
+ UML_MOV(block, mem(&m_op), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_ctc2, this); // callc ctc2
return TRUE;
case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17:
diff --git a/src/emu/cpu/rsp/rspcp2s.h b/src/emu/cpu/rsp/rspcp2s.h
index 4c0e5d9a557..f040ca9c52a 100644
--- a/src/emu/cpu/rsp/rspcp2s.h
+++ b/src/emu/cpu/rsp/rspcp2s.h
@@ -111,48 +111,48 @@ public:
#endif
private:
- virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc);
-
- UINT16 ACCUM_H(int x);
- UINT16 ACCUM_M(int x);
- UINT16 ACCUM_L(int x);
- UINT16 ACCUM_LL(int x);
- UINT16 CARRY_FLAG(const int x);
- UINT16 COMPARE_FLAG(const int x);
- UINT16 CLIP1_FLAG(const int x);
- UINT16 ZERO_FLAG(const int x);
- UINT16 CLIP2_FLAG(const int x);
- UINT16 SATURATE_ACCUM(int accum, int slice, UINT16 negative, UINT16 positive);
-
- __m128i m_accum_h;
- __m128i m_accum_m;
- __m128i m_accum_l;
- __m128i m_accum_ll;
+ virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc);
+
+ UINT16 ACCUM_H(int x);
+ UINT16 ACCUM_M(int x);
+ UINT16 ACCUM_L(int x);
+ UINT16 ACCUM_LL(int x);
+ UINT16 CARRY_FLAG(const int x);
+ UINT16 COMPARE_FLAG(const int x);
+ UINT16 CLIP1_FLAG(const int x);
+ UINT16 ZERO_FLAG(const int x);
+ UINT16 CLIP2_FLAG(const int x);
+ UINT16 SATURATE_ACCUM(int accum, int slice, UINT16 negative, UINT16 positive);
+
+ __m128i m_accum_h;
+ __m128i m_accum_m;
+ __m128i m_accum_l;
+ __m128i m_accum_ll;
// Mirror of v[] for now, to be used in parallel as
// more vector ops are transitioned over
- __m128i m_xv[32];
- __m128i m_xvflag[6];
+ __m128i m_xv[32];
+ __m128i m_xvflag[6];
#if SIMUL_SIMD
- UINT32 m_old_r[35];
- UINT8 m_old_dmem[4096];
+ UINT32 m_old_r[35];
+ UINT8 m_old_dmem[4096];
- UINT32 m_scalar_r[35];
- UINT8 m_scalar_dmem[4096];
+ UINT32 m_scalar_r[35];
+ UINT8 m_scalar_dmem[4096];
- INT32 m_old_reciprocal_res;
- UINT32 m_old_reciprocal_high;
- INT32 m_old_dp_allowed;
+ INT32 m_old_reciprocal_res;
+ UINT32 m_old_reciprocal_high;
+ INT32 m_old_dp_allowed;
- INT32 m_scalar_reciprocal_res;
- UINT32 m_scalar_reciprocal_high;
- INT32 m_scalar_dp_allowed;
+ INT32 m_scalar_reciprocal_res;
+ UINT32 m_scalar_reciprocal_high;
+ INT32 m_scalar_dp_allowed;
- INT32 m_simd_reciprocal_res;
- UINT32 m_simd_reciprocal_high;
- INT32 m_simd_dp_allowed;
+ INT32 m_simd_reciprocal_res;
+ UINT32 m_simd_reciprocal_high;
+ INT32 m_simd_dp_allowed;
#endif
};
-#endif /* __RSPCP2S_H__ */ \ No newline at end of file
+#endif /* __RSPCP2S_H__ */
diff --git a/src/emu/cpu/rsp/rspdrc.c b/src/emu/cpu/rsp/rspdrc.c
index dbc81187796..44a0a22542a 100644
--- a/src/emu/cpu/rsp/rspdrc.c
+++ b/src/emu/cpu/rsp/rspdrc.c
@@ -786,16 +786,16 @@ void rsp_device::generate_branch(drcuml_block *block, compiler_state *compiler,
/* update the cycles and jump through the hash table to the target */
if (desc->targetpc != BRANCH_TARGET_DYNAMIC)
{
- generate_update_cycles(block, &compiler_temp, desc->targetpc, TRUE); // <subtract cycles>
+ generate_update_cycles(block, &compiler_temp, desc->targetpc, TRUE); // <subtract cycles>
if (desc->flags & OPFLAG_INTRABLOCK_BRANCH)
- UML_JMP(block, desc->targetpc | 0x80000000); // jmp desc->targetpc
+ UML_JMP(block, desc->targetpc | 0x80000000); // jmp desc->targetpc
else
- UML_HASHJMP(block, 0, desc->targetpc, *m_nocode); // hashjmp <mode>,desc->targetpc,nocode
+ UML_HASHJMP(block, 0, desc->targetpc, *m_nocode); // hashjmp <mode>,desc->targetpc,nocode
}
else
{
- generate_update_cycles(block, &compiler_temp, mem(&m_rsp_state->jmpdest), TRUE); // <subtract cycles>
- UML_HASHJMP(block, 0, mem(&m_rsp_state->jmpdest), *m_nocode); // hashjmp <mode>,<rsreg>,nocode
+ generate_update_cycles(block, &compiler_temp, mem(&m_rsp_state->jmpdest), TRUE); // <subtract cycles>
+ UML_HASHJMP(block, 0, mem(&m_rsp_state->jmpdest), *m_nocode); // hashjmp <mode>,<rsreg>,nocode
}
}