diff options
| author | Aurelien Jarno | 2011-04-20 13:04:23 +0200 |
|---|---|---|
| committer | Aurelien Jarno | 2011-04-25 11:18:33 +0200 |
| commit | 47c0143cdde080101e97a1b39f3ff13e33b5726c (patch) | |
| tree | 06f1657d7d54e87c1af7fd9d20c721b9e0ca610b | |
| parent | target-i386: replace approx_rsqrt and approx_rcp by softfloat ops (diff) | |
| download | qemu-47c0143cdde080101e97a1b39f3ff13e33b5726c.tar.gz qemu-47c0143cdde080101e97a1b39f3ff13e33b5726c.tar.xz qemu-47c0143cdde080101e97a1b39f3ff13e33b5726c.zip | |
target-i386: add CPU86_LDouble <-> double conversion functions
Add functions to convert CPU86_LDouble to double and vice versa. They
are going to be used to implement logarithmic and trigonometric function
until softfloat implement them.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
| -rw-r--r-- | target-i386/op_helper.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/target-i386/op_helper.c b/target-i386/op_helper.c index f7cdaaa222..64c0bbf0ce 100644 --- a/target-i386/op_helper.c +++ b/target-i386/op_helper.c @@ -3431,6 +3431,28 @@ void helper_verw(target_ulong selector1) /* x87 FPU helpers */ +static inline double CPU86_LDouble_to_double(CPU86_LDouble a) +{ + union { + float64 f64; + double d; + } u; + + u.f64 = floatx_to_float64(a, &env->fp_status); + return u.d; +} + +static inline CPU86_LDouble double_to_CPU86_LDouble(double a) +{ + union { + float64 f64; + double d; + } u; + + u.d = a; + return float64_to_floatx(u.f64, &env->fp_status); +} + static void fpu_set_exception(int mask) { env->fpus |= mask; |
