diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | soft-fp/extended.h | 4 |
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; \ |