summaryrefslogtreecommitdiffstats
path: root/fpu/softfloat.h
diff options
context:
space:
mode:
authorAndrzej Zaborowski2011-10-27 01:02:46 +0200
committerAndrzej Zaborowski2011-10-27 01:02:46 +0200
commit9f60639b848944200c3d33a89233d808de0b5a43 (patch)
tree2346754fc52e973ce6d6122c9310fa293595fa79 /fpu/softfloat.h
parentSparc: split load and store op helpers (diff)
parenttarget-arm: Fix use of free() in cpu_arm_close() (diff)
downloadqemu-9f60639b848944200c3d33a89233d808de0b5a43.tar.gz
qemu-9f60639b848944200c3d33a89233d808de0b5a43.tar.xz
qemu-9f60639b848944200c3d33a89233d808de0b5a43.zip
Merge branch 'target-arm.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm
Diffstat (limited to 'fpu/softfloat.h')
-rw-r--r--fpu/softfloat.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/fpu/softfloat.h b/fpu/softfloat.h
index 618ddee569..07c2929613 100644
--- a/fpu/softfloat.h
+++ b/fpu/softfloat.h
@@ -212,6 +212,18 @@ void set_floatx80_rounding_precision(int val STATUS_PARAM);
void float_raise( int8 flags STATUS_PARAM);
/*----------------------------------------------------------------------------
+| Options to indicate which negations to perform in float*_muladd()
+| Using these differs from negating an input or output before calling
+| the muladd function in that this means that a NaN doesn't have its
+| sign bit inverted before it is propagated.
+*----------------------------------------------------------------------------*/
+enum {
+ float_muladd_negate_c = 1,
+ float_muladd_negate_product = 2,
+ float_muladd_negate_result = 3,
+};
+
+/*----------------------------------------------------------------------------
| Software IEC/IEEE integer-to-floating-point conversion routines.
*----------------------------------------------------------------------------*/
float32 int32_to_float32( int32 STATUS_PARAM );
@@ -269,6 +281,7 @@ float32 float32_sub( float32, float32 STATUS_PARAM );
float32 float32_mul( float32, float32 STATUS_PARAM );
float32 float32_div( float32, float32 STATUS_PARAM );
float32 float32_rem( float32, float32 STATUS_PARAM );
+float32 float32_muladd(float32, float32, float32, int STATUS_PARAM);
float32 float32_sqrt( float32 STATUS_PARAM );
float32 float32_exp2( float32 STATUS_PARAM );
float32 float32_log2( float32 STATUS_PARAM );
@@ -375,6 +388,7 @@ float64 float64_sub( float64, float64 STATUS_PARAM );
float64 float64_mul( float64, float64 STATUS_PARAM );
float64 float64_div( float64, float64 STATUS_PARAM );
float64 float64_rem( float64, float64 STATUS_PARAM );
+float64 float64_muladd(float64, float64, float64, int STATUS_PARAM);
float64 float64_sqrt( float64 STATUS_PARAM );
float64 float64_log2( float64 STATUS_PARAM );
int float64_eq( float64, float64 STATUS_PARAM );