summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordas <das@FreeBSD.org>2005-03-07 04:55:22 +0000
committerdas <das@FreeBSD.org>2005-03-07 04:55:22 +0000
commit5bfaaf046488af0dd3a30704b1de957d8e998484 (patch)
tree0587ae7e38dc49cbd8c4f33e5beaf44770486b0f
parente08a3e75cadf3db2f91c84aa1fb0e266b4334fc4 (diff)
downloadFreeBSD-src-5bfaaf046488af0dd3a30704b1de957d8e998484.zip
FreeBSD-src-5bfaaf046488af0dd3a30704b1de957d8e998484.tar.gz
Define LDBL_NBIT to be a mask indicating the position of the integer
bit in a long double. For architectures that don't have such a bit, LDBL_NBIT is 0. This makes it possible to say `mantissa & ~LDBL_NBIT' in places that previously used an #ifdef to select the right expression. The optimizer should dispense with the extra arithmetic when LDBL_NBIT is 0.
-rw-r--r--lib/libc/alpha/_fpmath.h1
-rw-r--r--lib/libc/amd64/_fpmath.h3
-rw-r--r--lib/libc/arm/_fpmath.h3
-rw-r--r--lib/libc/i386/_fpmath.h3
-rw-r--r--lib/libc/powerpc/_fpmath.h1
-rw-r--r--lib/libc/sparc64/_fpmath.h1
6 files changed, 9 insertions, 3 deletions
diff --git a/lib/libc/alpha/_fpmath.h b/lib/libc/alpha/_fpmath.h
index e449668..8b6d09e 100644
--- a/lib/libc/alpha/_fpmath.h
+++ b/lib/libc/alpha/_fpmath.h
@@ -38,6 +38,7 @@ union IEEEl2bits {
#define mask_nbit_l(u) ((void)0)
#define LDBL_IMPLICIT_NBIT
+#define LDBL_NBIT 0
#define LDBL_MANH_SIZE 20
#define LDBL_MANL_SIZE 32
diff --git a/lib/libc/amd64/_fpmath.h b/lib/libc/amd64/_fpmath.h
index 08ec6f2..8f8cf6f 100644
--- a/lib/libc/amd64/_fpmath.h
+++ b/lib/libc/amd64/_fpmath.h
@@ -38,7 +38,8 @@ union IEEEl2bits {
} bits;
};
-#define mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#define LDBL_NBIT 0x80000000
+#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT)
#define LDBL_MANH_SIZE 32
#define LDBL_MANL_SIZE 32
diff --git a/lib/libc/arm/_fpmath.h b/lib/libc/arm/_fpmath.h
index d7a78aa..80e764f 100644
--- a/lib/libc/arm/_fpmath.h
+++ b/lib/libc/arm/_fpmath.h
@@ -37,7 +37,8 @@ union IEEEl2bits {
} bits;
};
-#define mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#define LDBL_NBIT 0x80000000
+#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT)
#define LDBL_MANH_SIZE 32
#define LDBL_MANL_SIZE 32
diff --git a/lib/libc/i386/_fpmath.h b/lib/libc/i386/_fpmath.h
index d7a78aa..80e764f 100644
--- a/lib/libc/i386/_fpmath.h
+++ b/lib/libc/i386/_fpmath.h
@@ -37,7 +37,8 @@ union IEEEl2bits {
} bits;
};
-#define mask_nbit_l(u) ((u).bits.manh &= 0x7fffffff)
+#define LDBL_NBIT 0x80000000
+#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT)
#define LDBL_MANH_SIZE 32
#define LDBL_MANL_SIZE 32
diff --git a/lib/libc/powerpc/_fpmath.h b/lib/libc/powerpc/_fpmath.h
index 58ee942..6d80eb4 100644
--- a/lib/libc/powerpc/_fpmath.h
+++ b/lib/libc/powerpc/_fpmath.h
@@ -38,6 +38,7 @@ union IEEEl2bits {
#define mask_nbit_l(u) ((void)0)
#define LDBL_IMPLICIT_NBIT
+#define LDBL_NBIT 0
#define LDBL_MANH_SIZE 20
#define LDBL_MANL_SIZE 32
diff --git a/lib/libc/sparc64/_fpmath.h b/lib/libc/sparc64/_fpmath.h
index f4de8fd..e5f2238 100644
--- a/lib/libc/sparc64/_fpmath.h
+++ b/lib/libc/sparc64/_fpmath.h
@@ -39,6 +39,7 @@ union IEEEl2bits {
#define mask_nbit_l(u) ((void)0)
#define LDBL_IMPLICIT_NBIT
+#define LDBL_NBIT 0
#define LDBL_MANH_SIZE 48
#define LDBL_MANL_SIZE 64
OpenPOWER on IntegriCloud