2017-10-31 Joseph Myers <joseph@codesourcery.com>
+ * math/complex.h
+ [__HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT)] (CMPLXF16):
+ New macro.
+ [__HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT)] (CMPLXF32):
+ Likewise.
+ [__HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT)] (CMPLXF64):
+ Likewise.
+ [__HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT)]
+ (CMPLXF32X): Likewise.
+ [__HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT)]
+ (CMPLXF64X): Likewise.
+ [__HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT)]
+ (CMPLXF128X): Likewise.
+
* math/math.h
[__FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == 32]
(__MATH_EVAL_FMT2): Define to add 0.0f.
# define CMPLXL(x, y) __builtin_complex ((long double) (x), (long double) (y))
#endif
+#if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT)
+# define CMPLXF16(x, y) __builtin_complex ((_Float16) (x), (_Float16) (y))
+#endif
+
+#if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT)
+# define CMPLXF32(x, y) __builtin_complex ((_Float32) (x), (_Float32) (y))
+#endif
+
+#if __HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT)
+# define CMPLXF64(x, y) __builtin_complex ((_Float64) (x), (_Float64) (y))
+#endif
+
#if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
# define CMPLXF128(x, y) __builtin_complex ((_Float128) (x), (_Float128) (y))
#endif
+#if __HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT)
+# define CMPLXF32X(x, y) __builtin_complex ((_Float32x) (x), (_Float32x) (y))
+#endif
+
+#if __HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT)
+# define CMPLXF64X(x, y) __builtin_complex ((_Float64x) (x), (_Float64x) (y))
+#endif
+
+#if __HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT)
+# define CMPLXF128X(x, y) \
+ __builtin_complex ((_Float128x) (x), (_Float128x) (y))
+#endif
+
/* The file <bits/cmathcalls.h> contains the prototypes for all the
actual math functions. These macros are used for those prototypes,
so we can easily declare each function as both `name' and `__name',