[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 077/111] m68k: add facos instruction
From: |
Bryce Lanham |
Subject: |
[Qemu-devel] [PATCH 077/111] m68k: add facos instruction |
Date: |
Wed, 17 Aug 2011 15:47:22 -0500 |
From: Laurent Vivier <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
target-m68k/helper.c | 29 ++++++++++++++++++++++++-----
target-m68k/helpers.h | 1 +
target-m68k/translate.c | 3 +++
3 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/target-m68k/helper.c b/target-m68k/helper.c
index cccae97..bba4ae3 100644
--- a/target-m68k/helper.c
+++ b/target-m68k/helper.c
@@ -28,10 +28,15 @@
#include "gdbstub.h"
#include "helpers.h"
+#include <math.h>
#if 0
#define DBG_FPUH(...) do { fprintf(stderr, "0x%08x: ", env->pc);
fprintf(stderr, __VA_ARGS__); } while(0)
#define DBG_FPU(...) do { fprintf(stderr, __VA_ARGS__); } while(0)
+#else
+#define DBG_FPUH(...)
+#define DBG_FPU(...)
+#endif
static inline float FLOAT(float32 x)
{
return *(float *)&x;
@@ -44,11 +49,10 @@ static inline long double LDOUBLE(floatx80 x)
{
return *(long double *)&x;
}
-#else
-#define DBG_FPUH(...)
-#define DBG_FPU(...)
-#define LDOUBLE(x)
-#endif
+static inline floatx80 FLOATx80(long double x)
+{
+ return *(floatx80 *)&x;
+}
#define SIGNBIT (1u << 31)
@@ -1386,6 +1390,21 @@ void HELPER(chs_FP0)(CPUState *env)
floatx80_to_FP0(env, res);
}
+void HELPER(acos_FP0)(CPUState *env)
+{
+ floatx80 res;
+ long double val;
+
+ res = FP0_to_floatx80(env);
+ val = LDOUBLE(res);
+
+ DBG_FPUH("acos_FP0 %Lg", val);
+ val = acosl(val);
+ DBG_FPU(" = %Lg", val);
+ res = FLOATx80(val);
+ floatx80_to_FP0(env, res);
+}
+
void HELPER(getexp_FP0)(CPUState *env)
{
int32_t exp;
diff --git a/target-m68k/helpers.h b/target-m68k/helpers.h
index 184ceef..1a375c0 100644
--- a/target-m68k/helpers.h
+++ b/target-m68k/helpers.h
@@ -71,6 +71,7 @@ DEF_HELPER_1(ln_FP0, void, env)
DEF_HELPER_1(log10_FP0, void, env)
DEF_HELPER_1(abs_FP0, void, env)
DEF_HELPER_1(chs_FP0, void, env)
+DEF_HELPER_1(acos_FP0, void, env)
DEF_HELPER_1(getexp_FP0, void, env)
DEF_HELPER_1(scale_FP0_FP1, void, env)
DEF_HELPER_1(add_FP0_FP1, void, env)
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 4f73bf8..ece5de3 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -3679,6 +3679,9 @@ DISAS_INSN(fpu)
case 0x1a: case 0x5a: case 0x5e: /* fneg */
gen_helper_chs_FP0(cpu_env);
break;
+ case 0x1c: /* facos */
+ gen_helper_acos_FP0(cpu_env);
+ break;
case 0x1e: /* fgetexp */
gen_helper_getexp_FP0(cpu_env);
break;
--
1.7.2.3
- [Qemu-devel] [PATCH 056/111] m68k-linux-user: add '--enable-emulop', (continued)
- [Qemu-devel] [PATCH 056/111] m68k-linux-user: add '--enable-emulop', Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 080/111] m68k: add fcos instruction, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 064/111] m68k: more tests, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 072/111] m68k: add flog10, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 021/111] m68k: add "byte", "word" and memory rotate., Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 078/111] m68k: add ftan instruction, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 032/111] m68k: add linkl instruction, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 036/111] m68k: correct neg condition code flags computation, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 024/111] m68k: add cas, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 028/111] m68k: allow fpu to manage double data type., Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 077/111] m68k: add facos instruction,
Bryce Lanham <=
- [Qemu-devel] [PATCH 026/111] m68k: define fcntl constants, Bryce Lanham, 2011/08/17
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/21
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/21
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/23