DSPLLE - removed some ifdefs
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5175 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
70a712c065
commit
a0952684b0
|
@ -20,8 +20,6 @@
|
|||
|
||||
#include "DSPTables.h"
|
||||
|
||||
#define PRECISE_SR_FLAGS
|
||||
|
||||
#define DSP_REG_MASK 0x1f
|
||||
|
||||
namespace DSPInterpreter {
|
||||
|
|
|
@ -35,9 +35,7 @@ void clr(const UDSPInstruction& opc)
|
|||
u8 reg = (opc.hex >> 11) & 0x1;
|
||||
|
||||
dsp_set_long_acc(reg, 0);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(0);
|
||||
#endif
|
||||
zeroWriteBackLog();
|
||||
}
|
||||
|
||||
|
@ -51,9 +49,7 @@ void clrl(const UDSPInstruction& opc)
|
|||
u8 reg = (opc.hex >> 8) & 0x1;
|
||||
|
||||
g_dsp.r[DSP_REG_ACL0 + reg] = 0;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(reg));
|
||||
#endif
|
||||
zeroWriteBackLogPreserveAcc(reg);
|
||||
}
|
||||
|
||||
|
@ -215,9 +211,7 @@ void xorr(const UDSPInstruction& opc)
|
|||
zeroWriteBackLogPreserveAcc(dreg);
|
||||
|
||||
g_dsp.r[DSP_REG_ACM0 + dreg] = accm;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register16((s16)accm, false, false, isOverS32(dsp_get_long_acc(dreg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ANDR $acD.m, $axS.h
|
||||
|
@ -255,9 +249,7 @@ void orr(const UDSPInstruction& opc)
|
|||
zeroWriteBackLogPreserveAcc(dreg);
|
||||
|
||||
g_dsp.r[DSP_REG_ACM0 + dreg] = accm;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register16((s16)accm, false, false, isOverS32(dsp_get_long_acc(dreg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ANDC $acD.m, $ac(1-D).m
|
||||
|
@ -275,9 +267,7 @@ void andc(const UDSPInstruction& opc)
|
|||
zeroWriteBackLogPreserveAcc(dreg);
|
||||
|
||||
g_dsp.r[DSP_REG_ACM0 + dreg] = accm;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register16((s16)accm, false, false, isOverS32(dsp_get_long_acc(dreg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ORC $acD.m, $ac(1-D).m
|
||||
|
@ -295,9 +285,7 @@ void orc(const UDSPInstruction& opc)
|
|||
zeroWriteBackLogPreserveAcc(dreg);
|
||||
|
||||
g_dsp.r[DSP_REG_ACM0 + dreg] = accm;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register16((s16)accm, false, false, isOverS32(dsp_get_long_acc(dreg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// XORC $acD.m
|
||||
|
@ -314,9 +302,7 @@ void xorc(const UDSPInstruction& opc)
|
|||
zeroWriteBackLogPreserveAcc(dreg);
|
||||
|
||||
g_dsp.r[DSP_REG_ACM0 + dreg] = accm;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register16((s16)accm, false, false, isOverS32(dsp_get_long_acc(dreg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// NOT $acD.m
|
||||
|
@ -333,9 +319,7 @@ void notc(const UDSPInstruction& opc)
|
|||
zeroWriteBackLogPreserveAcc(dreg);
|
||||
|
||||
g_dsp.r[DSP_REG_ACM0 + dreg] = accm;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register16((s16)accm, false, false, isOverS32(dsp_get_long_acc(dreg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// XORI $acD.m, #I
|
||||
|
@ -351,9 +335,7 @@ void xori(const UDSPInstruction& opc)
|
|||
u16 imm = dsp_fetch_code();
|
||||
g_dsp.r[DSP_REG_ACM0 + reg] ^= imm;
|
||||
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register16((s16)g_dsp.r[DSP_REG_ACM0 + reg], false, false, isOverS32(dsp_get_long_acc(reg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ANDI $acD.m, #I
|
||||
|
@ -382,9 +364,8 @@ void ori(const UDSPInstruction& opc)
|
|||
u8 reg = (opc.hex >> 8) & 0x1;
|
||||
u16 imm = dsp_fetch_code();
|
||||
g_dsp.r[DSP_REG_ACM0 + reg] |= imm;
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
|
||||
Update_SR_Register16((s16)g_dsp.r[DSP_REG_ACM0 + reg], false, false, isOverS32(dsp_get_long_acc(reg)));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -407,10 +388,8 @@ void addr(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(res, isCarry(acc, res), isOverflow(acc, ax, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ADDAX $acD, $axS
|
||||
|
@ -430,10 +409,8 @@ void addax(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(res, isCarry(acc, res), isOverflow(acc, ax, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ADD $acD, $ac(1-D)
|
||||
|
@ -452,10 +429,8 @@ void add(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(res, isCarry(acc0, res), isOverflow(acc0, acc1, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ADDP $acD
|
||||
|
@ -474,10 +449,8 @@ void addp(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(res, isCarry2(acc, res), isOverflow(acc, prod, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ADDAXL $acD, $axS.l
|
||||
|
@ -499,10 +472,8 @@ void addaxl(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, (s64)res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64((s64)res, isCarry(acc, res), isOverflow((s64)acc, (s64)acx, (s64)res));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ADDI $amR, #I
|
||||
|
@ -521,10 +492,8 @@ void addi(const UDSPInstruction& opc)
|
|||
s64 res = acc + imm;
|
||||
|
||||
dsp_set_long_acc(areg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(areg);
|
||||
Update_SR_Register64(res, isCarry(acc, res), isOverflow(acc, imm, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ADDIS $acD, #I
|
||||
|
@ -581,10 +550,8 @@ void inc(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(res, isCarry(acc, res), isOverflow(acc, 1, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -668,10 +635,8 @@ void subp(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(res, isCarry2(acc, res), isOverflow(acc, -prod, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
// DECM $acsD
|
||||
|
@ -709,10 +674,8 @@ void dec(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, res);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
res = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(res, isCarry2(acc, res), isOverflow(acc, -1, res));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -732,9 +695,7 @@ void neg(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(dreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -758,9 +719,7 @@ void movr(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(areg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(acc);
|
||||
#endif
|
||||
}
|
||||
|
||||
// MOVAX $acD, $axS
|
||||
|
@ -778,9 +737,7 @@ void movax(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acx);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(acx);
|
||||
#endif
|
||||
}
|
||||
|
||||
// MOV $acD, $ac(1-D)
|
||||
|
@ -796,9 +753,7 @@ void mov(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(acc);
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -818,9 +773,7 @@ void lsl16(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(areg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(areg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// LSR16 $acR
|
||||
|
@ -839,9 +792,7 @@ void lsr16(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(areg, (s64)acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(areg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ASR16 $acR
|
||||
|
@ -859,9 +810,7 @@ void asr16(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(areg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(areg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// LSL $acR, #I
|
||||
|
@ -878,9 +827,7 @@ void lsl(const UDSPInstruction& opc)
|
|||
acc <<= shift;
|
||||
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// LSR $acR, #I
|
||||
|
@ -904,9 +851,7 @@ void lsr(const UDSPInstruction& opc)
|
|||
acc >>= shift;
|
||||
|
||||
dsp_set_long_acc(rreg, (s64)acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ASL $acR, #I
|
||||
|
@ -923,9 +868,7 @@ void asl(const UDSPInstruction& opc)
|
|||
acc <<= shift;
|
||||
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ASR $acR, #I
|
||||
|
@ -949,9 +892,7 @@ void asr(const UDSPInstruction& opc)
|
|||
acc >>= shift;
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(dreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// LSRN (fixed parameters)
|
||||
|
@ -981,9 +922,7 @@ void lsrn(const UDSPInstruction& opc)
|
|||
}
|
||||
|
||||
dsp_set_long_acc(0, (s64)acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(0));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ASRN (fixed parameters)
|
||||
|
@ -1012,9 +951,7 @@ void asrn(const UDSPInstruction& opc)
|
|||
}
|
||||
|
||||
dsp_set_long_acc(0, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(0));
|
||||
#endif
|
||||
}
|
||||
|
||||
// LSRNRX $acD, $axS.h
|
||||
|
@ -1049,9 +986,7 @@ void lsrnrx(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, (s64)acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(dreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ASRNRX $acD, $axS.h
|
||||
|
@ -1085,9 +1020,7 @@ void asrnrx(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(dreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// LSRNR $acD
|
||||
|
@ -1120,9 +1053,7 @@ void lsrnr(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, (s64)acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(dreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ASRNR $acD
|
||||
|
@ -1154,9 +1085,7 @@ void asrnr(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(dreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
|
|
@ -109,9 +109,7 @@ void movp(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(acc);
|
||||
#endif
|
||||
}
|
||||
|
||||
// MOVNP $acD
|
||||
|
@ -129,9 +127,7 @@ void movnp(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(acc);
|
||||
#endif
|
||||
}
|
||||
|
||||
// MOVPZ $acD
|
||||
|
@ -149,9 +145,7 @@ void movpz(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(acc);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ADDPAXZ $acD, $axS
|
||||
|
@ -174,10 +168,8 @@ void addpaxz(const UDSPInstruction& opc)
|
|||
zeroWriteBackLog();
|
||||
|
||||
dsp_set_long_acc(dreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
acc = dsp_get_long_acc(dreg);
|
||||
Update_SR_Register64(acc, isCarry2(prod, acc), isOverflow(prod, ax, acc));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -234,9 +226,7 @@ void mulac(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// MULMV $axS.l, $axS.h, $acR
|
||||
|
@ -260,9 +250,7 @@ void mulmv(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// MULMVZ $axS.l, $axS.h, $acR
|
||||
|
@ -287,9 +275,7 @@ void mulmvz(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -334,9 +320,7 @@ void mulxac(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// MULXMV $ax0.S, $ax1.T, $acR
|
||||
|
@ -361,9 +345,7 @@ void mulxmv(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// MULXMV $ax0.S, $ax1.T, $acR
|
||||
|
@ -389,9 +371,7 @@ void mulxmvz(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
@ -436,9 +416,7 @@ void mulcac(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// MULCMV $acS.m, $axT.h, $acR
|
||||
|
@ -464,9 +442,7 @@ void mulcmv(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
// MULCMVZ $acS.m, $axT.h, $acR
|
||||
|
@ -493,9 +469,7 @@ void mulcmvz(const UDSPInstruction& opc)
|
|||
|
||||
dsp_set_long_prod(prod);
|
||||
dsp_set_long_acc(rreg, acc);
|
||||
#ifdef PRECISE_SR_FLAGS
|
||||
Update_SR_Register64(dsp_get_long_acc(rreg));
|
||||
#endif
|
||||
}
|
||||
|
||||
//----
|
||||
|
|
Loading…
Reference in New Issue