about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--soft-fp/extended.h4
2 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 86dc10526d..ae29267c1e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* soft-fp/extended.h [_FP_W_TYPE_SIZE < 64] (FP_UNPACK_RAW_E):
+	Mask implicit bit out of unpacked value.
+	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_RAW_EP): Likewise.
+	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_RAW_E): Likewise.
+	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_RAW_EP): Likewise.
+
 	* sysdeps/sparc/fpu/fesetexcept.c: New file.
 
 	* sysdeps/sh/sh4/fpu/fesetexcept.c: New file.
diff --git a/soft-fp/extended.h b/soft-fp/extended.h
index de53448341..7b19e835f7 100644
--- a/soft-fp/extended.h
+++ b/soft-fp/extended.h
@@ -104,6 +104,7 @@ union _FP_UNION_E
       X##_f[3] = 0;					\
       X##_f[0] = FP_UNPACK_RAW_E_flo.bits.frac0;	\
       X##_f[1] = FP_UNPACK_RAW_E_flo.bits.frac1;	\
+      X##_f[1] &= ~_FP_IMPLBIT_E;			\
       X##_e  = FP_UNPACK_RAW_E_flo.bits.exp;		\
       X##_s  = FP_UNPACK_RAW_E_flo.bits.sign;		\
     }							\
@@ -119,6 +120,7 @@ union _FP_UNION_E
       X##_f[3] = 0;					\
       X##_f[0] = FP_UNPACK_RAW_EP_flo->bits.frac0;	\
       X##_f[1] = FP_UNPACK_RAW_EP_flo->bits.frac1;	\
+      X##_f[1] &= ~_FP_IMPLBIT_E;			\
       X##_e  = FP_UNPACK_RAW_EP_flo->bits.exp;		\
       X##_s  = FP_UNPACK_RAW_EP_flo->bits.sign;		\
     }							\
@@ -332,6 +334,7 @@ union _FP_UNION_E
       FP_UNPACK_RAW_E_flo.flt = (val);		\
 						\
       X##_f0 = FP_UNPACK_RAW_E_flo.bits.frac;	\
+      X##_f0 &= ~_FP_IMPLBIT_E;			\
       X##_f1 = 0;				\
       X##_e = FP_UNPACK_RAW_E_flo.bits.exp;	\
       X##_s = FP_UNPACK_RAW_E_flo.bits.sign;	\
@@ -345,6 +348,7 @@ union _FP_UNION_E
 	= (union _FP_UNION_E *) (val);		\
 						\
       X##_f0 = FP_UNPACK_RAW_EP_flo->bits.frac;	\
+      X##_f0 &= ~_FP_IMPLBIT_E;			\
       X##_f1 = 0;				\
       X##_e = FP_UNPACK_RAW_EP_flo->bits.exp;	\
       X##_s = FP_UNPACK_RAW_EP_flo->bits.sign;	\