aboutsummaryrefslogtreecommitdiff
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 86dc105..ae29267 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 de53448..7b19e83 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; \