/* Macros to control TS 18661-3 glibc features where the same definitions are appropriate for all platforms. Copyright (C) 2017-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ #ifndef _BITS_FLOATN_COMMON_H #define _BITS_FLOATN_COMMON_H #include <features.h> #include <bits/long-double.h> /* This header should be included at the bottom of each bits/floatn.h. It defines the following macros for each _FloatN and _FloatNx type, where the same definitions, or definitions based only on the macros in bits/floatn.h, are appropriate for all glibc configurations. */ /* Defined to 1 if the current compiler invocation provides a floating-point type with the right format for this type, and this glibc includes corresponding *fN or *fNx interfaces for it. */ #define __HAVE_FLOAT16 0 #define __HAVE_FLOAT32 1 #define __HAVE_FLOAT64 1 #define __HAVE_FLOAT32X 1 #define __HAVE_FLOAT128X 0 /* Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the type is the first with its format in the sequence of (the default choices for) float, double, long double, _Float16, _Float32, _Float64, _Float128, _Float32x, _Float64x, _Float128x for this glibc; that is, if functions present once per floating-point format rather than once per type are present for this type. All configurations supported by glibc have _Float32 the same format as float, _Float64 and _Float32x the same format as double, the _Float64x the same format as either long double or _Float128. No configurations support _Float128x or, as of GCC 7, have compiler support for a type meeting the requirements for _Float128x. */ #define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16 #define __HAVE_DISTINCT_FLOAT32 0 #define __HAVE_DISTINCT_FLOAT64 0 #define __HAVE_DISTINCT_FLOAT32X 0 #define __HAVE_DISTINCT_FLOAT64X 0 #define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X /* Defined to 1 if any _FloatN or _FloatNx types that are not ABI-distinct are however distinct types at the C language level (so for the purposes of __builtin_types_compatible_p and _Generic). */ #if __GNUC_PREREQ (7, 0) && !defined __cplusplus # define __HAVE_FLOATN_NOT_TYPEDEF 1 #else # define __HAVE_FLOATN_NOT_TYPEDEF 0 #endif #ifndef __ASSEMBLER__ /* Defined to concatenate the literal suffix to be used with _FloatN or _FloatNx types, if __HAVE_<type> is 1. The corresponding literal suffixes exist since GCC 7, for C only. */ # if __HAVE_FLOAT16 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus /* No corresponding suffix available for this type. */ # define __f16(x) ((_Float16) x##f) # else # define __f16(x) x##f16 # endif # endif # if __HAVE_FLOAT32 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # define __f32(x) x##f # else # define __f32(x) x##f32 # endif # endif # if __HAVE_FLOAT64 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # ifdef __NO_LONG_DOUBLE_MATH # define __f64(x) x##l # else # define __f64(x) x # endif # else # define __f64(x) x##f64 # endif # endif # if __HAVE_FLOAT32X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # define __f32x(x) x # else # define __f32x(x) x##f32x # endif # endif # if __HAVE_FLOAT64X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # if __HAVE_FLOAT64X_LONG_DOUBLE # define __f64x(x) x##l # else # define __f64x(x) __f128 (x) # endif # else # define __f64x(x) x##f64x # endif # endif # if __HAVE_FLOAT128X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # error "_Float128X supported but no constant suffix" # else # define __f128x(x) x##f128x # endif # endif /* Defined to a complex type if __HAVE_<type> is 1. */ # if __HAVE_FLOAT16 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef _Complex float __cfloat16 __attribute__ ((__mode__ (__HC__))); # define __CFLOAT16 __cfloat16 # else # define __CFLOAT16 _Complex _Float16 # endif # endif # if __HAVE_FLOAT32 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # define __CFLOAT32 _Complex float # else # define __CFLOAT32 _Complex _Float32 # endif # endif # if __HAVE_FLOAT64 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # ifdef __NO_LONG_DOUBLE_MATH # define __CFLOAT64 _Complex long double # else # define __CFLOAT64 _Complex double # endif # else # define __CFLOAT64 _Complex _Float64 # endif # endif # if __HAVE_FLOAT32X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # define __CFLOAT32X _Complex double # else # define __CFLOAT32X _Complex _Float32x # endif # endif # if __HAVE_FLOAT64X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # if __HAVE_FLOAT64X_LONG_DOUBLE # define __CFLOAT64X _Complex long double # else # define __CFLOAT64X __CFLOAT128 # endif # else # define __CFLOAT64X _Complex _Float64x # endif # endif # if __HAVE_FLOAT128X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # error "_Float128X supported but no complex type" # else # define __CFLOAT128X _Complex _Float128x # endif # endif /* The remaining of this file provides support for older compilers. */ # if __HAVE_FLOAT16 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef float _Float16 __attribute__ ((__mode__ (__HF__))); # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf16() ((_Float16) __builtin_huge_val ()) # define __builtin_inff16() ((_Float16) __builtin_inf ()) # define __builtin_nanf16(x) ((_Float16) __builtin_nan (x)) # define __builtin_nansf16(x) ((_Float16) __builtin_nans (x)) # endif # endif # if __HAVE_FLOAT32 # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef float _Float32; # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf32() (__builtin_huge_valf ()) # define __builtin_inff32() (__builtin_inff ()) # define __builtin_nanf32(x) (__builtin_nanf (x)) # define __builtin_nansf32(x) (__builtin_nansf (x)) # endif # endif # if __HAVE_FLOAT64 /* If double, long double and _Float64 all have the same set of values, TS 18661-3 requires the usual arithmetic conversions on long double and _Float64 to produce _Float64. For this to be the case when building with a compiler without a distinct _Float64 type, _Float64 must be a typedef for long double, not for double. */ # ifdef __NO_LONG_DOUBLE_MATH # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef long double _Float64; # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf64() (__builtin_huge_vall ()) # define __builtin_inff64() (__builtin_infl ()) # define __builtin_nanf64(x) (__builtin_nanl (x)) # define __builtin_nansf64(x) (__builtin_nansl (x)) # endif # else # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef double _Float64; # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf64() (__builtin_huge_val ()) # define __builtin_inff64() (__builtin_inf ()) # define __builtin_nanf64(x) (__builtin_nan (x)) # define __builtin_nansf64(x) (__builtin_nans (x)) # endif # endif # endif # if __HAVE_FLOAT32X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef double _Float32x; # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf32x() (__builtin_huge_val ()) # define __builtin_inff32x() (__builtin_inf ()) # define __builtin_nanf32x(x) (__builtin_nan (x)) # define __builtin_nansf32x(x) (__builtin_nans (x)) # endif # endif # if __HAVE_FLOAT64X # if __HAVE_FLOAT64X_LONG_DOUBLE # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef long double _Float64x; # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf64x() (__builtin_huge_vall ()) # define __builtin_inff64x() (__builtin_infl ()) # define __builtin_nanf64x(x) (__builtin_nanl (x)) # define __builtin_nansf64x(x) (__builtin_nansl (x)) # endif # else # if !__GNUC_PREREQ (7, 0) || defined __cplusplus typedef _Float128 _Float64x; # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf64x() (__builtin_huge_valf128 ()) # define __builtin_inff64x() (__builtin_inff128 ()) # define __builtin_nanf64x(x) (__builtin_nanf128 (x)) # define __builtin_nansf64x(x) (__builtin_nansf128 (x)) # endif # endif # endif # if __HAVE_FLOAT128X # if !__GNUC_PREREQ (7, 0) || defined __cplusplus # error "_Float128x supported but no type" # endif # if !__GNUC_PREREQ (7, 0) # define __builtin_huge_valf128x() ((_Float128x) __builtin_huge_val ()) # define __builtin_inff128x() ((_Float128x) __builtin_inf ()) # define __builtin_nanf128x(x) ((_Float128x) __builtin_nan (x)) # define __builtin_nansf128x(x) ((_Float128x) __builtin_nans (x)) # endif # endif #endif /* !__ASSEMBLER__. */ #endif /* _BITS_FLOATN_COMMON_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
types | Folder | 0755 |
|
|
_G_config.h | File | 1.41 KB | 0644 |
|
a.out.h | File | 268 B | 0644 |
|
auxv.h | File | 3.39 KB | 0644 |
|
byteswap-16.h | File | 1.69 KB | 0644 |
|
byteswap.h | File | 5.53 KB | 0644 |
|
cmathcalls.h | File | 4.04 KB | 0644 |
|
confname.h | File | 23.15 KB | 0644 |
|
cpu-set.h | File | 4.41 KB | 0644 |
|
dirent.h | File | 1.69 KB | 0644 |
|
dlfcn.h | File | 2.46 KB | 0644 |
|
elfclass.h | File | 426 B | 0644 |
|
endian.h | File | 176 B | 0644 |
|
environments.h | File | 3.7 KB | 0644 |
|
epoll.h | File | 1.04 KB | 0644 |
|
errno.h | File | 1.39 KB | 0644 |
|
error.h | File | 2.62 KB | 0644 |
|
eventfd.h | File | 1.1 KB | 0644 |
|
fcntl-linux.h | File | 14.02 KB | 0644 |
|
fcntl.h | File | 2.19 KB | 0644 |
|
fcntl2.h | File | 5.44 KB | 0644 |
|
fenv.h | File | 4.5 KB | 0644 |
|
fenvinline.h | File | 190 B | 0644 |
|
floatn-common.h | File | 9.2 KB | 0644 |
|
floatn.h | File | 4.32 KB | 0644 |
|
flt-eval-method.h | File | 1.19 KB | 0644 |
|
fp-fast.h | File | 1.19 KB | 0644 |
|
fp-logb.h | File | 1011 B | 0644 |
|
getopt_core.h | File | 3.58 KB | 0644 |
|
getopt_ext.h | File | 2.97 KB | 0644 |
|
getopt_posix.h | File | 1.77 KB | 0644 |
|
hwcap.h | File | 971 B | 0644 |
|
in.h | File | 9.22 KB | 0644 |
|
initspin.h | File | 25 B | 0644 |
|
inotify.h | File | 1.05 KB | 0644 |
|
ioctl-types.h | File | 2.4 KB | 0644 |
|
ioctls.h | File | 4.37 KB | 0644 |
|
ipc.h | File | 2.02 KB | 0644 |
|
ipctypes.h | File | 1.15 KB | 0644 |
|
iscanonical.h | File | 2.42 KB | 0644 |
|
libc-header-start.h | File | 2.55 KB | 0644 |
|
libio-ldbl.h | File | 1.06 KB | 0644 |
|
libio.h | File | 16.82 KB | 0644 |
|
libm-simd-decl-stubs.h | File | 2.93 KB | 0644 |
|
link.h | File | 4.18 KB | 0644 |
|
local_lim.h | File | 3.11 KB | 0644 |
|
locale.h | File | 1.33 KB | 0644 |
|
long-double.h | File | 923 B | 0644 |
|
math-finite.h | File | 5.25 KB | 0644 |
|
math-vector.h | File | 2.25 KB | 0644 |
|
mathcalls-helper-functions.h | File | 1.72 KB | 0644 |
|
mathcalls.h | File | 12.81 KB | 0644 |
|
mathdef.h | File | 890 B | 0644 |
|
mathinline.h | File | 26.54 KB | 0644 |
|
mman-linux.h | File | 4.69 KB | 0644 |
|
mman-shared.h | File | 2.67 KB | 0644 |
|
mman.h | File | 1.83 KB | 0644 |
|
monetary-ldbl.h | File | 1.02 KB | 0644 |
|
mqueue.h | File | 1.22 KB | 0644 |
|
mqueue2.h | File | 2.1 KB | 0644 |
|
msq.h | File | 2.55 KB | 0644 |
|
netdb.h | File | 1.23 KB | 0644 |
|
param.h | File | 1.4 KB | 0644 |
|
poll.h | File | 2.03 KB | 0644 |
|
poll2.h | File | 2.87 KB | 0644 |
|
posix1_lim.h | File | 4.81 KB | 0644 |
|
posix2_lim.h | File | 2.8 KB | 0644 |
|
posix_opt.h | File | 5.57 KB | 0644 |
|
printf-ldbl.h | File | 991 B | 0644 |
|
pthreadtypes-arch.h | File | 3.21 KB | 0644 |
|
pthreadtypes.h | File | 3 KB | 0644 |
|
ptrace-shared.h | File | 2.83 KB | 0644 |
|
resource.h | File | 6.15 KB | 0644 |
|
sched.h | File | 3.72 KB | 0644 |
|
select.h | File | 2.06 KB | 0644 |
|
select2.h | File | 1.4 KB | 0644 |
|
sem.h | File | 2.53 KB | 0644 |
|
semaphore.h | File | 1.21 KB | 0644 |
|
setjmp.h | File | 1.26 KB | 0644 |
|
setjmp2.h | File | 1.66 KB | 0644 |
|
shm.h | File | 3.48 KB | 0644 |
|
sigaction.h | File | 2.8 KB | 0644 |
|
sigcontext.h | File | 4.16 KB | 0644 |
|
sigevent-consts.h | File | 1.44 KB | 0644 |
|
siginfo-arch.h | File | 729 B | 0644 |
|
siginfo-consts-arch.h | File | 204 B | 0644 |
|
siginfo-consts.h | File | 5.83 KB | 0644 |
|
signalfd.h | File | 1.04 KB | 0644 |
|
signum-generic.h | File | 4.24 KB | 0644 |
|
signum.h | File | 1.59 KB | 0644 |
|
sigstack.h | File | 1.14 KB | 0644 |
|
sigthread.h | File | 1.65 KB | 0644 |
|
sockaddr.h | File | 1.48 KB | 0644 |
|
socket.h | File | 13.99 KB | 0644 |
|
socket2.h | File | 2.95 KB | 0644 |
|
socket_type.h | File | 2.16 KB | 0644 |
|
ss_flags.h | File | 1.16 KB | 0644 |
|
stab.def | File | 8.83 KB | 0644 |
|
stat.h | File | 7.44 KB | 0644 |
|
statfs.h | File | 1.87 KB | 0644 |
|
statvfs.h | File | 3.34 KB | 0644 |
|
stdint-intn.h | File | 1.01 KB | 0644 |
|
stdint-uintn.h | File | 1.02 KB | 0644 |
|
stdio-ldbl.h | File | 2.94 KB | 0644 |
|
stdio.h | File | 5.36 KB | 0644 |
|
stdio2.h | File | 12.25 KB | 0644 |
|
stdio_lim.h | File | 1.18 KB | 0644 |
|
stdlib-bsearch.h | File | 1.34 KB | 0644 |
|
stdlib-float.h | File | 1.09 KB | 0644 |
|
stdlib-ldbl.h | File | 1.34 KB | 0644 |
|
stdlib.h | File | 5.53 KB | 0644 |
|
string_fortified.h | File | 4.21 KB | 0644 |
|
strings_fortified.h | File | 1.18 KB | 0644 |
|
stropts.h | File | 8.25 KB | 0644 |
|
sys_errlist.h | File | 1.19 KB | 0644 |
|
syscall.h | File | 39.59 KB | 0644 |
|
sysctl.h | File | 898 B | 0644 |
|
syslog-ldbl.h | File | 1.18 KB | 0644 |
|
syslog-path.h | File | 1.04 KB | 0644 |
|
syslog.h | File | 1.64 KB | 0644 |
|
sysmacros.h | File | 2.88 KB | 0644 |
|
termios.h | File | 5.24 KB | 0644 |
|
thread-shared-types.h | File | 6.56 KB | 0644 |
|
time.h | File | 2.93 KB | 0644 |
|
timerfd.h | File | 1.08 KB | 0644 |
|
timex.h | File | 4.49 KB | 0644 |
|
types.h | File | 7.8 KB | 0644 |
|
typesizes.h | File | 3.32 KB | 0644 |
|
uintn-identity.h | File | 1.5 KB | 0644 |
|
uio-ext.h | File | 1.88 KB | 0644 |
|
uio_lim.h | File | 1.35 KB | 0644 |
|
unistd.h | File | 13 KB | 0644 |
|
ustat.h | File | 1.06 KB | 0644 |
|
utmp.h | File | 3.96 KB | 0644 |
|
utmpx.h | File | 3.38 KB | 0644 |
|
utsname.h | File | 1.18 KB | 0644 |
|
waitflags.h | File | 2.17 KB | 0644 |
|
waitstatus.h | File | 2.23 KB | 0644 |
|
wchar-ldbl.h | File | 2.37 KB | 0644 |
|
wchar.h | File | 1.86 KB | 0644 |
|
wchar2.h | File | 20.02 KB | 0644 |
|
wctype-wchar.h | File | 6.15 KB | 0644 |
|
wordsize.h | File | 442 B | 0644 |
|
xopen_lim.h | File | 3.77 KB | 0644 |
|
xtitypes.h | File | 1.19 KB | 0644 |
|