diff mbox

[libgcc,arm] Fix PR 60166 - NAN fraction bits

Message ID 002201cf3454$f780bbe0$e68233a0$@arm.com
State New
Headers show

Commit Message

Joey Ye Feb. 28, 2014, 7:16 a.m. UTC
This patch is a mirror copy from approved patch in glibc:
http://sourceware.org/ml/libc-alpha/2014-02/msg00741.html

OK to trunk, 4.8 and 4.7?

ChangeLog.libgcc:

* config/arm/sfp-machine.h (_FP_NANFRAC_H,
  _FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q):
  Set to zero.

 #define _FP_NANSIGN_D		0

Comments

Ramana Radhakrishnan Feb. 28, 2014, 12:16 p.m. UTC | #1
On Fri, Feb 28, 2014 at 7:16 AM, Joey Ye <joey.ye@arm.com> wrote:
> This patch is a mirror copy from approved patch in glibc:
> http://sourceware.org/ml/libc-alpha/2014-02/msg00741.html
>
> OK to trunk, 4.8 and 4.7?

OK everywhere.

Ramana

>
> ChangeLog.libgcc:
>
> * config/arm/sfp-machine.h (_FP_NANFRAC_H,
>   _FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q):
>   Set to zero.
>
> diff --git a/libgcc/config/arm/sfp-machine.h
> b/libgcc/config/arm/sfp-machine.h
> index bb34895..8d45320 100644
> --- a/libgcc/config/arm/sfp-machine.h
> +++ b/libgcc/config/arm/sfp-machine.h
> @@ -19,10 +19,12 @@ typedef int __gcc_CMPtype __attribute__ ((mode
> (__libgcc_cmp_return__)));
>  #define _FP_DIV_MEAT_D(R,X,Y)  _FP_DIV_MEAT_2_udiv(D,R,X,Y)
>  #define _FP_DIV_MEAT_Q(R,X,Y)  _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
>
> -#define _FP_NANFRAC_H          ((_FP_QNANBIT_H << 1) - 1)
> -#define _FP_NANFRAC_S          ((_FP_QNANBIT_S << 1) - 1)
> -#define _FP_NANFRAC_D          ((_FP_QNANBIT_D << 1) - 1), -1
> -#define _FP_NANFRAC_Q          ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
> +/* According to RTABI, QNAN is only with the most significant bit of the
> +   significand set, and all other significand bits zero.  */
> +#define _FP_NANFRAC_H          0
> +#define _FP_NANFRAC_S          0
> +#define _FP_NANFRAC_D          0, 0
> +#define _FP_NANFRAC_Q          0, 0, 0, 0
>  #define _FP_NANSIGN_H          0
>  #define _FP_NANSIGN_S          0
>  #define _FP_NANSIGN_D          0
>
>
>
diff mbox

Patch

diff --git a/libgcc/config/arm/sfp-machine.h
b/libgcc/config/arm/sfp-machine.h
index bb34895..8d45320 100644
--- a/libgcc/config/arm/sfp-machine.h
+++ b/libgcc/config/arm/sfp-machine.h
@@ -19,10 +19,12 @@  typedef int __gcc_CMPtype __attribute__ ((mode
(__libgcc_cmp_return__)));
 #define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_2_udiv(D,R,X,Y)
 #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_4_udiv(Q,R,X,Y)
 
-#define _FP_NANFRAC_H		((_FP_QNANBIT_H << 1) - 1)
-#define _FP_NANFRAC_S		((_FP_QNANBIT_S << 1) - 1)
-#define _FP_NANFRAC_D		((_FP_QNANBIT_D << 1) - 1), -1
-#define _FP_NANFRAC_Q		((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
+/* According to RTABI, QNAN is only with the most significant bit of the
+   significand set, and all other significand bits zero.  */
+#define _FP_NANFRAC_H		0
+#define _FP_NANFRAC_S		0
+#define _FP_NANFRAC_D		0, 0
+#define _FP_NANFRAC_Q		0, 0, 0, 0
 #define _FP_NANSIGN_H		0
 #define _FP_NANSIGN_S		0