diff options
author | 2022-09-25 22:28:50 -0400 | |
---|---|---|
committer | 2022-09-25 22:37:29 -0400 | |
commit | 5dc22ca8fd325315c5d24b6ed6a037cc38e86527 (patch) | |
tree | 3b0810f803ef2e9dff52c203510825f7c0b79a9b /src/devices/cpu/m88000/m88000.cpp | |
parent | a61cb4cb61c544241712dfb039817e7c7b72e3c0 (diff) |
eminline.h: Additions
- Add mul_16x16 inline function to perform a signed 16x16-bit multiplication with 32-bit result. This was moved from cpu/e132xs to unite it with the analogous 32x32 operations.
- Add rotl_32, rotr_32, rotl_64 and rotr_64 inline functions to perform 32-bit and 64-bit circular shifts in either direction by the specified number of places, modulo 32 or 64. It is anticipated that these will eventually be replaced by standard functions in C++20's <bit> header, and so they have been given similar signatures and semantics (which are also validity-checked).
- Remove LSL, LSR, ROL and ROR macros from cpu/arm and cpu/arm7 to ameliorate unnecessary obfuscation.
Diffstat (limited to 'src/devices/cpu/m88000/m88000.cpp')
-rw-r--r-- | src/devices/cpu/m88000/m88000.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/devices/cpu/m88000/m88000.cpp b/src/devices/cpu/m88000/m88000.cpp index 57cdfa6fbb2..f3921bc8667 100644 --- a/src/devices/cpu/m88000/m88000.cpp +++ b/src/devices/cpu/m88000/m88000.cpp @@ -615,7 +615,7 @@ void mc88100_device::execute(u32 const inst) { unsigned const offset = inst & 31; - m_r[D] = (m_r[S1] << (32 - offset)) | (m_r[S1] >> offset); + m_r[D] = rotr_32(m_r[S1], offset); } break; @@ -988,11 +988,7 @@ void mc88100_device::execute(u32 const inst) } break; case 0x540: // rot: rotate (register) - { - unsigned const offset = m_r[S2] & 31; - - m_r[D] = (m_r[S1] << (32 - offset)) | (m_r[S1] >> offset); - } + m_r[D] = rotr_32(m_r[S1], m_r[S2]); break; case 0x740: // ff1: find first bit set { |