From 581d5d7e749613a26985f6cf35f75673feede8fd Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 10 Nov 2024 11:51:35 -0500 Subject: cpu/drcbec.cpp, cpu/mips/mips3.cpp: Use 32x32=64-bit multiply inlines --- src/devices/cpu/drcbec.cpp | 8 ++++---- src/devices/cpu/mips/mips3.cpp | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/devices/cpu/drcbec.cpp b/src/devices/cpu/drcbec.cpp index 26063ffb380..14cac9e5501 100644 --- a/src/devices/cpu/drcbec.cpp +++ b/src/devices/cpu/drcbec.cpp @@ -950,13 +950,13 @@ int drcbe_c::execute(code_handle &entry) break; case MAKE_OPCODE_SHORT(OP_MULU, 4, 0): // MULU dst,edst,src1,src2[,f] - temp64 = (uint64_t)(uint32_t)PARAM2 * (uint64_t)(uint32_t)PARAM3; + temp64 = mulu_32x32(PARAM2, PARAM3); PARAM1 = temp64 >> 32; PARAM0 = (uint32_t)temp64; break; case MAKE_OPCODE_SHORT(OP_MULU, 4, 1): - temp64 = (uint64_t)(uint32_t)PARAM2 * (uint64_t)(uint32_t)PARAM3; + temp64 = mulu_32x32(PARAM2, PARAM3); flags = FLAGS64_NZ(temp64); PARAM1 = temp64 >> 32; PARAM0 = (uint32_t)temp64; @@ -965,13 +965,13 @@ int drcbe_c::execute(code_handle &entry) break; case MAKE_OPCODE_SHORT(OP_MULS, 4, 0): // MULS dst,edst,src1,src2[,f] - temp64 = (int64_t)(int32_t)PARAM2 * (int64_t)(int32_t)PARAM3; + temp64 = mul_32x32(PARAM2, PARAM3); PARAM1 = temp64 >> 32; PARAM0 = (uint32_t)temp64; break; case MAKE_OPCODE_SHORT(OP_MULS, 4, 1): - temp64 = (int64_t)(int32_t)PARAM2 * (int64_t)(int32_t)PARAM3; + temp64 = mul_32x32(PARAM2, PARAM3); temp32 = (int32_t)temp64; flags = FLAGS32_NZ(temp32); PARAM1 = temp64 >> 32; diff --git a/src/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp index b8df441ee65..c29ecfd817c 100644 --- a/src/devices/cpu/mips/mips3.cpp +++ b/src/devices/cpu/mips/mips3.cpp @@ -3756,7 +3756,7 @@ void mips3_device::handle_regimm(uint32_t op) void mips3_device::handle_mult(uint32_t op) { - uint64_t temp64 = (int64_t)(int32_t)RSVAL32 * (int64_t)(int32_t)RTVAL32; + uint64_t temp64 = mul_32x32(RSVAL32, RTVAL32); LOVAL64 = (int32_t)temp64; HIVAL64 = (int32_t)(temp64 >> 32); m_core->icount -= 3; @@ -3770,7 +3770,7 @@ void r5900_device::handle_mult(uint32_t op) void mips3_device::handle_multu(uint32_t op) { - uint64_t temp64 = (uint64_t)RSVAL32 * (uint64_t)RTVAL32; + uint64_t temp64 = mulu_32x32(RSVAL32, RTVAL32); LOVAL64 = (int32_t)temp64; HIVAL64 = (int32_t)(temp64 >> 32); m_core->icount -= 3; @@ -3909,7 +3909,7 @@ void mips3_device::handle_idt(uint32_t op) case 0: /* MAD */ if (RSREG != 0 && RTREG != 0) { - int64_t temp64 = (int64_t)(int32_t)RSVAL32 * (int64_t)(int32_t)RTVAL32; + int64_t temp64 = mul_32x32(RSVAL32, RTVAL32); temp64 += ((int64_t)m_core->r[REG_HI] << 32) | m_core->r[REG_LO]; m_core->r[REG_LO] = (int32_t)temp64; m_core->r[REG_HI] = (int32_t)(temp64 >> 32); @@ -3919,7 +3919,7 @@ void mips3_device::handle_idt(uint32_t op) case 1: /* MADU */ if (RSREG != 0 && RTREG != 0) { - uint64_t temp64 = (uint64_t)RSVAL32 * (uint64_t)RTVAL32; + uint64_t temp64 = mulu_32x32(RSVAL32, RTVAL32); temp64 += ((uint64_t)m_core->r[REG_HI] << 32) | m_core->r[REG_LO]; m_core->r[REG_LO] = (uint32_t)temp64; m_core->r[REG_HI] = (uint32_t)(temp64 >> 32); @@ -4044,7 +4044,7 @@ void r5900_device::handle_idt(uint32_t op) { case 0x00: /* MADD */ { - uint64_t temp64 = (int64_t)(int32_t)RSVAL32 * (int64_t)(int32_t)RTVAL32; + uint64_t temp64 = mul_32x32(RSVAL32, RTVAL32); m_core->r[REG_LO] += (int32_t)temp64; m_core->r[REG_HI] += (int32_t)(temp64 >> 32); if (rd) @@ -4098,7 +4098,7 @@ void r5900_device::handle_idt(uint32_t op) break; case 0x18: /* MULT1 */ { - uint64_t temp64 = (int64_t)(int32_t)RSVAL32 * (int64_t)(int32_t)RTVAL32; + uint64_t temp64 = mul_32x32(RSVAL32, RTVAL32); m_core->rh[REG_LO] = (int32_t)temp64; m_core->rh[REG_HI] = (int32_t)(temp64 >> 32); if (rd) -- cgit v1.2.3