浏览代码

UserspaceEmulator: SoftCPU: Add support for FPTAN instruction

Brendan Coles 4 年之前
父节点
当前提交
2c24c0e451
共有 1 个文件被更改,包括 8 次插入1 次删除
  1. 8 1
      Userland/DevTools/UserspaceEmulator/SoftCPU.cpp

+ 8 - 1
Userland/DevTools/UserspaceEmulator/SoftCPU.cpp

@@ -1641,7 +1641,14 @@ void SoftCPU::FYL2XP1(const X86::Instruction&)
     fpu_pop();
 }
 
-void SoftCPU::FPTAN(const X86::Instruction&) { TODO_INSN(); }
+void SoftCPU::FPTAN(const X86::Instruction&)
+{
+    // FIXME: set C1 upon stack overflow or if result was rounded
+    // FIXME: Set C2 to 1 if ST(0) is outside range of -2^63 to +2^63; else set to 0
+    fpu_set(0, tanf(fpu_get(0)));
+    fpu_push(1.0f);
+}
+
 void SoftCPU::FPATAN(const X86::Instruction&) { TODO_INSN(); }
 void SoftCPU::FXTRACT(const X86::Instruction&) { TODO_INSN(); }
 void SoftCPU::FPREM1(const X86::Instruction&) { TODO_INSN(); }