summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/i960/i960.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/i960/i960.cpp')
-rw-r--r--src/devices/cpu/i960/i960.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp
index 28ab1163d97..fe6d4dc9534 100644
--- a/src/devices/cpu/i960/i960.cpp
+++ b/src/devices/cpu/i960/i960.cpp
@@ -1530,6 +1530,12 @@ void i960_cpu_device::execute_op(uint32_t opcode)
set_rif(opcode, t2f*log(t1f+1.0)/log(2.0));
break;
+ case 0x2: // logr
+ m_icount -= 400; // checkme
+ t1f = get_1_rif(opcode);
+ set_rif(opcode, log(t1f));
+ break;
+
case 0x3: // remr
m_icount -= 67; // (67 to 75878 depending on opcodes!!!)
t1f = get_1_rif(opcode);
@@ -1550,6 +1556,12 @@ void i960_cpu_device::execute_op(uint32_t opcode)
set_rif(opcode, sqrt(t1f));
break;
+ case 0x9: // expr
+ m_icount -= 334; // checkme
+ t1f = get_1_rif(opcode);
+ set_rif(opcode, pow(2.0, t1f) - 1.0);
+ break;
+
case 0xa: // logbnr
m_icount -= 37;
t1f = get_1_rif(opcode);