summaryrefslogtreecommitdiffstats
path: root/clang/test/Preprocessor/init.c
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2019-05-31 01:21:36 +0000
committerJohn McCall <rjmccall@apple.com>2019-05-31 01:21:36 +0000
commit059b823e709a90d3b5d2d24663830e59b3bdded9 (patch)
tree39392b05b6b230e4acec135a3ed95dbf1e6cb95c /clang/test/Preprocessor/init.c
parentb5a45bb77e05647f04bbd9780d70aabe9f251155 (diff)
downloadbcm5719-llvm-059b823e709a90d3b5d2d24663830e59b3bdded9.tar.gz
bcm5719-llvm-059b823e709a90d3b5d2d24663830e59b3bdded9.zip
Fix the predefined exponent limit macros for the 16-bit IEEE format.
The magnitude range of normalized _Float16 is 2^-14 (~6e-5) to (2-2^-10)*2^15 (65504). You might think, then, that the code is correct to defne FLT16_MIN_EXP and FLT16_MAX_EXP to be -14 and 15 respectively. However, for some reason the C specification actually specifies a bias for these macros: C11 5.2.4.2.2: - minimum negative integer such that FLT_RADIX raised to one less than that power is a normalized floating-point number, e_min: FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP - maximum integer such that FLT_RADIX raised to one less than that power is a representable finite floating-point number, e_max: FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP FLT16_MIN_EXP and FLT16_MAX_EXP should clearly be biased the same way, and other compilers do in fact do so, as do our OpenCL headers for `half`. Additionally, FLT16_MIN_10_EXP is just wrong. llvm-svn: 362183
Diffstat (limited to 'clang/test/Preprocessor/init.c')
-rw-r--r--clang/test/Preprocessor/init.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c
index 8eb101c6a41..8df3b4bd2cc 100644
--- a/clang/test/Preprocessor/init.c
+++ b/clang/test/Preprocessor/init.c
@@ -310,10 +310,10 @@
// AARCH64:#define __FLT16_HAS_QUIET_NAN__ 1
// AARCH64:#define __FLT16_MANT_DIG__ 11
// AARCH64:#define __FLT16_MAX_10_EXP__ 4
-// AARCH64:#define __FLT16_MAX_EXP__ 15
+// AARCH64:#define __FLT16_MAX_EXP__ 16
// AARCH64:#define __FLT16_MAX__ 6.5504e+4F16
-// AARCH64:#define __FLT16_MIN_10_EXP__ (-13)
-// AARCH64:#define __FLT16_MIN_EXP__ (-14)
+// AARCH64:#define __FLT16_MIN_10_EXP__ (-4)
+// AARCH64:#define __FLT16_MIN_EXP__ (-13)
// AARCH64:#define __FLT16_MIN__ 6.103515625e-5F16
// AARCH64:#define __FLT_DENORM_MIN__ 1.40129846e-45F
// AARCH64:#define __FLT_DIG__ 6
OpenPOWER on IntegriCloud