Recompiler: Fix some warnings related to DWORD overflow
This commit is contained in:
parent
4ae369ab81
commit
8db1ff697d
|
@ -2662,13 +2662,13 @@ void CRecompilerOps::SPECIAL_AND (void)
|
||||||
__int64 Value = GetMipsReg(ConstReg);
|
__int64 Value = GetMipsReg(ConstReg);
|
||||||
Map_GPR_64bit(m_Opcode.rd,MappedReg);
|
Map_GPR_64bit(m_Opcode.rd,MappedReg);
|
||||||
AndConstToX86Reg(GetMipsRegMapHi(m_Opcode.rd),(DWORD)(Value >> 32));
|
AndConstToX86Reg(GetMipsRegMapHi(m_Opcode.rd),(DWORD)(Value >> 32));
|
||||||
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),(DWORD)Value);
|
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),(DWORD)(Value & 0xFFFFFFFF));
|
||||||
}
|
}
|
||||||
} else if (Is64Bit(MappedReg)) {
|
} else if (Is64Bit(MappedReg)) {
|
||||||
DWORD Value = GetMipsRegLo(ConstReg);
|
DWORD Value = GetMipsRegLo(ConstReg);
|
||||||
if (Value != 0) {
|
if (Value != 0) {
|
||||||
Map_GPR_32bit(m_Opcode.rd,IsSigned(ConstReg)?TRUE:FALSE,MappedReg);
|
Map_GPR_32bit(m_Opcode.rd,IsSigned(ConstReg)?TRUE:FALSE,MappedReg);
|
||||||
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),(DWORD)Value);
|
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),Value);
|
||||||
} else {
|
} else {
|
||||||
Map_GPR_32bit(m_Opcode.rd,IsSigned(ConstReg)?TRUE:FALSE, 0);
|
Map_GPR_32bit(m_Opcode.rd,IsSigned(ConstReg)?TRUE:FALSE, 0);
|
||||||
}
|
}
|
||||||
|
@ -2693,11 +2693,11 @@ void CRecompilerOps::SPECIAL_AND (void)
|
||||||
unsigned __int64 Value = GetMipsReg(KnownReg);
|
unsigned __int64 Value = GetMipsReg(KnownReg);
|
||||||
Map_GPR_64bit(m_Opcode.rd,UnknownReg);
|
Map_GPR_64bit(m_Opcode.rd,UnknownReg);
|
||||||
AndConstToX86Reg(GetMipsRegMapHi(m_Opcode.rd),(DWORD)(Value >> 32));
|
AndConstToX86Reg(GetMipsRegMapHi(m_Opcode.rd),(DWORD)(Value >> 32));
|
||||||
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),(DWORD)Value);
|
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),(DWORD)(Value & 0xFFFFFFFF));
|
||||||
} else {
|
} else {
|
||||||
DWORD Value = GetMipsRegLo(KnownReg);
|
DWORD Value = GetMipsRegLo(KnownReg);
|
||||||
Map_GPR_32bit(m_Opcode.rd,IsSigned(KnownReg),UnknownReg);
|
Map_GPR_32bit(m_Opcode.rd,IsSigned(KnownReg),UnknownReg);
|
||||||
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),(DWORD)Value);
|
AndConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),Value);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ProtectGPR(KnownReg);
|
ProtectGPR(KnownReg);
|
||||||
|
@ -2789,8 +2789,9 @@ void CRecompilerOps::SPECIAL_OR (void) {
|
||||||
if ((Value >> 32) != 0) {
|
if ((Value >> 32) != 0) {
|
||||||
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
if ((DWORD)Value != 0) {
|
DWORD dwValue = (DWORD)(Value & 0xFFFFFFFF);
|
||||||
OrConstToX86Reg((DWORD)Value,GetMipsRegMapLo(m_Opcode.rd));
|
if (dwValue != 0) {
|
||||||
|
OrConstToX86Reg(dwValue,GetMipsRegMapLo(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int Value = GetMipsRegLo(ConstReg);
|
int Value = GetMipsRegLo(ConstReg);
|
||||||
|
@ -2802,24 +2803,24 @@ void CRecompilerOps::SPECIAL_OR (void) {
|
||||||
int KnownReg = IsKnown(m_Opcode.rt)?m_Opcode.rt:m_Opcode.rs;
|
int KnownReg = IsKnown(m_Opcode.rt)?m_Opcode.rt:m_Opcode.rs;
|
||||||
int UnknownReg = IsKnown(m_Opcode.rt)?m_Opcode.rs:m_Opcode.rt;
|
int UnknownReg = IsKnown(m_Opcode.rt)?m_Opcode.rs:m_Opcode.rt;
|
||||||
|
|
||||||
if (IsConst(KnownReg)) {
|
if (IsConst(KnownReg))
|
||||||
unsigned __int64 Value;
|
{
|
||||||
|
unsigned __int64 Value = Is64Bit(KnownReg)?GetMipsReg(KnownReg):GetMipsRegLo_S(KnownReg);
|
||||||
Value = Is64Bit(KnownReg)?GetMipsReg(KnownReg):GetMipsRegLo_S(KnownReg);
|
DWORD dwValue = (DWORD)(Value & 0xFFFFFFFF);
|
||||||
|
|
||||||
if (g_System->b32BitCore() && Is32Bit(KnownReg))
|
if (g_System->b32BitCore() && Is32Bit(KnownReg))
|
||||||
{
|
{
|
||||||
Map_GPR_32bit(m_Opcode.rd,true,UnknownReg);
|
Map_GPR_32bit(m_Opcode.rd,true,UnknownReg);
|
||||||
if ((DWORD)Value != 0) {
|
if (dwValue != 0) {
|
||||||
OrConstToX86Reg((DWORD)Value,GetMipsRegMapLo(m_Opcode.rd));
|
OrConstToX86Reg(dwValue,GetMipsRegMapLo(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Map_GPR_64bit(m_Opcode.rd,UnknownReg);
|
Map_GPR_64bit(m_Opcode.rd,UnknownReg);
|
||||||
if ((Value >> 32) != 0) {
|
if ((Value >> 32) != 0) {
|
||||||
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
if ((DWORD)Value != 0) {
|
if (dwValue != 0) {
|
||||||
OrConstToX86Reg((DWORD)Value,GetMipsRegMapLo(m_Opcode.rd));
|
OrConstToX86Reg(dwValue,GetMipsRegMapLo(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -2935,8 +2936,9 @@ void CRecompilerOps::SPECIAL_XOR (void) {
|
||||||
Value = GetMipsRegLo(KnownReg);
|
Value = GetMipsRegLo(KnownReg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((DWORD)Value != 0) {
|
DWORD dwValue = (DWORD)(Value & 0xFFFFFFFF);
|
||||||
XorConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),(DWORD)Value);
|
if (dwValue != 0) {
|
||||||
|
XorConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd),dwValue);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (g_System->b32BitCore())
|
if (g_System->b32BitCore())
|
||||||
|
@ -3015,8 +3017,9 @@ void CRecompilerOps::SPECIAL_NOR (void) {
|
||||||
if ((Value >> 32) != 0) {
|
if ((Value >> 32) != 0) {
|
||||||
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
if ((DWORD)Value != 0) {
|
DWORD dwValue = (DWORD)(Value & 0xFFFFFFFF);
|
||||||
OrConstToX86Reg((DWORD)Value,GetMipsRegMapLo(m_Opcode.rd));
|
if (dwValue != 0) {
|
||||||
|
OrConstToX86Reg(dwValue,GetMipsRegMapLo(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int Value = GetMipsRegLo(ConstReg);
|
int Value = GetMipsRegLo(ConstReg);
|
||||||
|
@ -3029,23 +3032,22 @@ void CRecompilerOps::SPECIAL_NOR (void) {
|
||||||
int UnknownReg = IsKnown(m_Opcode.rt)?m_Opcode.rs:m_Opcode.rt;
|
int UnknownReg = IsKnown(m_Opcode.rt)?m_Opcode.rs:m_Opcode.rt;
|
||||||
|
|
||||||
if (IsConst(KnownReg)) {
|
if (IsConst(KnownReg)) {
|
||||||
unsigned __int64 Value;
|
unsigned __int64 Value = Is64Bit(KnownReg)?GetMipsReg(KnownReg):GetMipsRegLo_S(KnownReg);
|
||||||
|
DWORD dwValue = (DWORD)(Value & 0xFFFFFFFF);
|
||||||
Value = Is64Bit(KnownReg)?GetMipsReg(KnownReg):GetMipsRegLo_S(KnownReg);
|
|
||||||
|
|
||||||
if (g_System->b32BitCore() && Is32Bit(KnownReg))
|
if (g_System->b32BitCore() && Is32Bit(KnownReg))
|
||||||
{
|
{
|
||||||
Map_GPR_32bit(m_Opcode.rd,true,UnknownReg);
|
Map_GPR_32bit(m_Opcode.rd,true,UnknownReg);
|
||||||
if ((DWORD)Value != 0) {
|
if (dwValue != 0) {
|
||||||
OrConstToX86Reg((DWORD)Value,GetMipsRegMapLo(m_Opcode.rd));
|
OrConstToX86Reg(dwValue,GetMipsRegMapLo(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Map_GPR_64bit(m_Opcode.rd,UnknownReg);
|
Map_GPR_64bit(m_Opcode.rd,UnknownReg);
|
||||||
if ((Value >> 32) != 0) {
|
if ((Value >> 32) != 0) {
|
||||||
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
OrConstToX86Reg((DWORD)(Value >> 32),GetMipsRegMapHi(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
if ((DWORD)Value != 0) {
|
if (dwValue != 0) {
|
||||||
OrConstToX86Reg((DWORD)Value,GetMipsRegMapLo(m_Opcode.rd));
|
OrConstToX86Reg(dwValue,GetMipsRegMapLo(m_Opcode.rd));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue