[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 066/111] m68k: add fgetexp
From: |
Bryce Lanham |
Subject: |
[Qemu-devel] [PATCH 066/111] m68k: add fgetexp |
Date: |
Wed, 17 Aug 2011 15:47:11 -0500 |
From: Laurent Vivier <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
.gitignore | 1 +
target-m68k/helper.c | 17 +++++++++++++++++
target-m68k/helpers.h | 1 +
target-m68k/translate.c | 3 +++
tests/m68k/Makefile | 2 +-
tests/m68k/fgetexp.S | 8 ++++++++
6 files changed, 31 insertions(+), 1 deletions(-)
create mode 100644 tests/m68k/fgetexp.S
diff --git a/.gitignore b/.gitignore
index 08819c2..ef339f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -78,3 +78,4 @@ tests/m68k/fmovecr
tests/m68k/fmovem
tests/m68k/fmul
tests/m68k/fsub
+tests/m68k/fgetexp
diff --git a/target-m68k/helper.c b/target-m68k/helper.c
index 7dcac61..2be3355 100644
--- a/target-m68k/helper.c
+++ b/target-m68k/helper.c
@@ -1275,6 +1275,23 @@ void HELPER(chs_FP0)(CPUState *env)
floatx80_to_FP0(env, res);
}
+void HELPER(getexp_FP0)(CPUState *env)
+{
+ int32_t exp;
+ floatx80 res;
+
+ DBG_FPU("getexp_FP0(%Lg)\n", LDOUBLE(FP0_to_floatx80(env)));
+
+ DBG_FPU(" fp0h 0x%08x fp0l 0x%016" PRIx64 "\n", env->fp0h, env->fp0l);
+
+ exp = (env->fp0h & 0x7fff) - 0x3fff;
+
+ res = int32_to_floatx80(exp, &env->fp_status);
+
+ DBG_FPU(" = %Lg\n", LDOUBLE(res));
+ floatx80_to_FP0(env, res);
+}
+
void HELPER(add_FP0_FP1)(CPUState *env)
{
floatx80 res;
diff --git a/target-m68k/helpers.h b/target-m68k/helpers.h
index 6ddd659..0b4c0cb 100644
--- a/target-m68k/helpers.h
+++ b/target-m68k/helpers.h
@@ -67,6 +67,7 @@ DEF_HELPER_1(itrunc_FP0, void, env)
DEF_HELPER_1(sqrt_FP0, void, env)
DEF_HELPER_1(abs_FP0, void, env)
DEF_HELPER_1(chs_FP0, void, env)
+DEF_HELPER_1(getexp_FP0, void, env)
DEF_HELPER_1(add_FP0_FP1, void, env)
DEF_HELPER_1(sub_FP0_FP1, void, env)
DEF_HELPER_1(mul_FP0_FP1, void, env)
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 6bba2c9..d09e325 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -3647,6 +3647,9 @@ DISAS_INSN(fpu)
case 0x1a: case 0x5a: case 0x5e: /* fneg */
gen_helper_chs_FP0(cpu_env);
break;
+ case 0x1e: /* fgetexp */
+ gen_helper_getexp_FP0(cpu_env);
+ break;
case 0x20: case 0x60: case 0x64: /* fdiv */
gen_op_load_fpr_FP1(REG(ext, 7));
gen_helper_div_FP0_FP1(cpu_env);
diff --git a/tests/m68k/Makefile b/tests/m68k/Makefile
index 8b0d8a7..a7a59ac 100644
--- a/tests/m68k/Makefile
+++ b/tests/m68k/Makefile
@@ -1,4 +1,4 @@
-TESTS=fmovecr fmove fmovem fsub fdiv fmul fabs
+TESTS=fmovecr fmove fmovem fsub fdiv fmul fabs fgetexp
all: $(TESTS)
diff --git a/tests/m68k/fgetexp.S b/tests/m68k/fgetexp.S
new file mode 100644
index 0000000..d17f7ab
--- /dev/null
+++ b/tests/m68k/fgetexp.S
@@ -0,0 +1,8 @@
+ .include "trap.i"
+
+ .text
+ .globl _start
+_start:
+ fmove.l #4096, %fp0
+ fgetexp.x %fp0, %fp1
+ exit 0
--
1.7.2.3
- [Qemu-devel] [PATCH 058/111] m68k: correctly compute divul, (continued)
- [Qemu-devel] [PATCH 058/111] m68k: correctly compute divul, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 069/111] m68k: add fetox and flogn, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 048/111] m68k: correct shift side effect for roxrl and roxll, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 065/111] m68k: correct compute gen_bitfield_cc(), Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 049/111] m68k: asl/asr, clear C flag if shift count is 0, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 044/111] m68k: improve addx instructions Add (byte, word) opsize Add memory access, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 046/111] m68k: improve asl/asr evaluate correclty the missing V flag, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 023/111] m68k: add variable offset/width to bitfield_reg/bitfield_mem, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 081/111] m68k: correct fpcr update, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 063/111] m68k: some FPU debugging macros, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 066/111] m68k: add fgetexp,
Bryce Lanham <=
- [Qemu-devel] [PATCH 051/111] m68k: correct divs.w and divu.w, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 071/111] m68k: correct cmpa comparison datatype, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 061/111] m68k: remove useless file m68k-qreg.h, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 059/111] m68k: add m68030 definition, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 034/111] m68k: correct typo on f64_to_i32() return type., Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 052/111] m68k: correct flags with negl, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 038/111] m68k: add EA support for negx, Bryce Lanham, 2011/08/17
- [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