Skip to content

Commit 457f582

Browse files
authored
[clang] Predefined macros for float128 support (#67196)
Expose some predefined macros for Float128 support.
1 parent 55d8f0c commit 457f582

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

clang/lib/Frontend/InitPreprocessor.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,8 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
10761076
DefineFloatMacros(Builder, "FLT", &TI.getFloatFormat(), "F");
10771077
DefineFloatMacros(Builder, "DBL", &TI.getDoubleFormat(), "");
10781078
DefineFloatMacros(Builder, "LDBL", &TI.getLongDoubleFormat(), "L");
1079+
if (TI.hasFloat128Type())
1080+
DefineFloatMacros(Builder, "FLT128", &TI.getFloat128Format(), "Q");
10791081

10801082
// Define a __POINTER_WIDTH__ macro for stdint.h.
10811083
Builder.defineMacro("__POINTER_WIDTH__",

clang/test/Preprocessor/init-x86.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,6 +1023,21 @@
10231023
// X86_64-LINUX:#define __DBL_MIN_EXP__ (-1021)
10241024
// X86_64-LINUX:#define __DBL_MIN__ 2.2250738585072014e-308
10251025
// X86_64-LINUX:#define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__
1026+
// X86_64-LINUX:#define __FLOAT128__ 1
1027+
// X86_64-LINUX:#define __FLT128_DECIMAL_DIG__ 36
1028+
// X86_64-LINUX:#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966Q
1029+
// X86_64-LINUX:#define __FLT128_DIG__ 33
1030+
// X86_64-LINUX:#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34Q
1031+
// X86_64-LINUX:#define __FLT128_HAS_DENORM__ 1
1032+
// X86_64-LINUX:#define __FLT128_HAS_INFINITY__ 1
1033+
// X86_64-LINUX:#define __FLT128_HAS_QUIET_NAN__ 1
1034+
// X86_64-LINUX:#define __FLT128_MANT_DIG__ 113
1035+
// X86_64-LINUX:#define __FLT128_MAX_10_EXP__ 4932
1036+
// X86_64-LINUX:#define __FLT128_MAX_EXP__ 16384
1037+
// X86_64-LINUX:#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932Q
1038+
// X86_64-LINUX:#define __FLT128_MIN_10_EXP__ (-4931)
1039+
// X86_64-LINUX:#define __FLT128_MIN_EXP__ (-16381)
1040+
// X86_64-LINUX:#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932Q
10261041
// X86_64-LINUX:#define __FLT_DENORM_MIN__ 1.40129846e-45F
10271042
// X86_64-LINUX:#define __FLT_DIG__ 6
10281043
// X86_64-LINUX:#define __FLT_EPSILON__ 1.19209290e-7F

clang/test/Preprocessor/init.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,6 +1576,20 @@
15761576
// EMSCRIPTEN-NEXT:#define __EMSCRIPTEN__ 1
15771577
// WEBASSEMBLY-NEXT:#define __FINITE_MATH_ONLY__ 0
15781578
// WEBASSEMBLY-NEXT:#define __FLOAT128__ 1
1579+
// WEBASSEMBLY-NEXT:#define __FLT128_DECIMAL_DIG__ 36
1580+
// WEBASSEMBLY-NEXT:#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966Q
1581+
// WEBASSEMBLY-NEXT:#define __FLT128_DIG__ 33
1582+
// WEBASSEMBLY-NEXT:#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34Q
1583+
// WEBASSEMBLY-NEXT:#define __FLT128_HAS_DENORM__ 1
1584+
// WEBASSEMBLY-NEXT:#define __FLT128_HAS_INFINITY__ 1
1585+
// WEBASSEMBLY-NEXT:#define __FLT128_HAS_QUIET_NAN__ 1
1586+
// WEBASSEMBLY-NEXT:#define __FLT128_MANT_DIG__ 113
1587+
// WEBASSEMBLY-NEXT:#define __FLT128_MAX_10_EXP__ 4932
1588+
// WEBASSEMBLY-NEXT:#define __FLT128_MAX_EXP__ 16384
1589+
// WEBASSEMBLY-NEXT:#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932Q
1590+
// WEBASSEMBLY-NEXT:#define __FLT128_MIN_10_EXP__ (-4931)
1591+
// WEBASSEMBLY-NEXT:#define __FLT128_MIN_EXP__ (-16381)
1592+
// WEBASSEMBLY-NEXT:#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932Q
15791593
// WEBASSEMBLY-NOT:#define __FLT16_DECIMAL_DIG__
15801594
// WEBASSEMBLY-NOT:#define __FLT16_DENORM_MIN__
15811595
// WEBASSEMBLY-NOT:#define __FLT16_DIG__

0 commit comments

Comments
 (0)