@@ -22,6 +22,7 @@
#define M_FLOAT 1
#define M_DOUBLE 2
#define M_LDOUBLE 3
+#define M_FLOAT128 4
#if M_TYPE == M_FLOAT
# define M_PFX FLT
@@ -51,6 +52,24 @@
# define FLOAT long double
# define CFLOAT __complex__ long double
# define M_HUGE_VAL HUGE_VALL
+#elif M_TYPE == M_FLOAT128
+# define M_PFX FLT128
+# define M_MLIT(c) c ## f128
+# define M_SUF(c) c ## f128
+# define M_FUNC(c) c ## f128
+# define M_HUGE_VAL HUGE_VAL_F128
+
+# include <features.h>
+# if !__GNUC_PREREQ (7, 0)
+# define M_LIT(c) c ## q
+# define FLOAT __float128
+# define CFLOAT __cfloat128
+# else
+# define M_LIT(c) c ## f128
+# define FLOAT _Float128
+# define CFLOAT __complex__ _Float128
+# endif
+
#else
# error Error: M_TYPE is not a known floating point type
#endif
@@ -98,8 +117,8 @@
/* Rules for aliasing the currently generated math files. */
-/* Aliasing rules for float are straight forward. */
-#if M_TYPE == M_FLOAT
+/* Aliasing rules for float{,128} are straight forward. */
+#if M_TYPE == M_FLOAT || M_TYPE == M_FLOAT128
# define declare_mgen_alias(from, to) weak_alias (M_SUF (from), M_SUF (to))
#endif
--