|
22 | 22 | # pragma system_header
|
23 | 23 | #endif // no system header
|
24 | 24 |
|
| 25 | +#include <cuda/std/__cccl/extended_data_types.h> |
| 26 | + |
25 | 27 | //! This file consolidates all compiler builtin detection for CCCL.
|
26 | 28 | //!
|
27 | 29 | //! To work around older compilers not supporting `__has_builtin` we use `_CCCL_CHECK_BUILTIN` that detects more
|
|
427 | 429 | # define _CCCL_BUILTIN_HUGE_VALL() static_cast<long double>(__builtin_huge_val())
|
428 | 430 | #endif // _CCCL_CHECK_BUILTIN(builtin_huge_vall)
|
429 | 431 |
|
430 |
| -#if _CCCL_CHECK_BUILTIN(builtin_huge_valf128) || _CCCL_COMPILER(GCC, >=, 7) |
431 |
| -# define _CCCL_BUILTIN_HUGE_VALF128() __builtin_huge_valf128() |
432 |
| -#endif // _CCCL_CHECK_BUILTIN(builtin_huge_valf128) || _CCCL_COMPILER(GCC, >=, 7) |
| 432 | +#if _CCCL_HAS_FLOAT128() |
| 433 | +# if _CCCL_CHECK_BUILTIN(builtin_huge_valf128) || _CCCL_COMPILER(GCC, >=, 7) |
| 434 | +# define _CCCL_BUILTIN_HUGE_VALF128() __builtin_huge_valf128() |
| 435 | +# endif // _CCCL_CHECK_BUILTIN(builtin_huge_valf128) || _CCCL_COMPILER(GCC, >=, 7) |
433 | 436 |
|
434 | 437 | // nvcc does not implement __builtin_huge_valf128
|
435 |
| -#if _CCCL_CUDA_COMPILER(NVCC) |
436 |
| -# undef _CCCL_BUILTIN_HUGE_VALF128 |
437 |
| -#endif // _CCCL_CUDA_COMPILER(NVCC) |
| 438 | +# if _CCCL_CUDA_COMPILER(NVCC) |
| 439 | +# undef _CCCL_BUILTIN_HUGE_VALF128 |
| 440 | +# endif // _CCCL_CUDA_COMPILER(NVCC) |
| 441 | +#endif // _CCCL_HAS_FLOAT128() |
438 | 442 |
|
439 | 443 | #if _CCCL_CHECK_BUILTIN(builtin_hypot) || _CCCL_COMPILER(GCC)
|
440 | 444 | # define _CCCL_BUILTIN_HYPOTF(...) __builtin_hypotf(__VA_ARGS__)
|
|
575 | 579 | # define _CCCL_BUILTIN_NANL(...) static_cast<long double>(__builtin_nan(__VA_ARGS__))
|
576 | 580 | #endif // _CCCL_CHECK_BUILTIN(builtin_nanl)
|
577 | 581 |
|
578 |
| -#if _CCCL_CHECK_BUILTIN(builtin_nanf128) || _CCCL_COMPILER(GCC, >=, 7) |
579 |
| -# define _CCCL_BUILTIN_NANF128(...) __builtin_nanf128(__VA_ARGS__) |
580 |
| -#endif // _CCCL_CHECK_BUILTIN(builtin_nanf128) || _CCCL_COMPILER(GCC, >=, 7) |
| 582 | +#if _CCCL_HAS_FLOAT128() |
| 583 | +# if _CCCL_CHECK_BUILTIN(builtin_nanf128) || _CCCL_COMPILER(GCC, >=, 7) |
| 584 | +# define _CCCL_BUILTIN_NANF128(...) __builtin_nanf128(__VA_ARGS__) |
| 585 | +# endif // _CCCL_CHECK_BUILTIN(builtin_nanf128) || _CCCL_COMPILER(GCC, >=, 7) |
581 | 586 |
|
582 | 587 | // nvcc does not implement __builtin_nanf128
|
583 |
| -#if _CCCL_CUDA_COMPILER(NVCC) |
584 |
| -# undef _CCCL_BUILTIN_NANF128 |
585 |
| -#endif // _CCCL_CUDA_COMPILER(NVCC) |
| 588 | +# if _CCCL_CUDA_COMPILER(NVCC) |
| 589 | +# undef _CCCL_BUILTIN_NANF128 |
| 590 | +# endif // _CCCL_CUDA_COMPILER(NVCC) |
| 591 | +#endif // _CCCL_HAS_FLOAT128() |
586 | 592 |
|
587 | 593 | #if _CCCL_CHECK_BUILTIN(builtin_nansf) || _CCCL_COMPILER(MSVC) || _CCCL_COMPILER(GCC, <, 10)
|
588 | 594 | # define _CCCL_BUILTIN_NANSF(...) __builtin_nansf(__VA_ARGS__)
|
|
598 | 604 | # define _CCCL_BUILTIN_NANSL(...) static_cast<long double>(__builtin_nans(__VA_ARGS__))
|
599 | 605 | #endif // _CCCL_CHECK_BUILTIN(builtin_nansl)
|
600 | 606 |
|
601 |
| -#if _CCCL_CHECK_BUILTIN(builtin_nansf128) || _CCCL_COMPILER(GCC, >=, 7) |
602 |
| -# define _CCCL_BUILTIN_NANSF128(...) __builtin_nansf128(__VA_ARGS__) |
603 |
| -#endif // _CCCL_CHECK_BUILTIN(builtin_nansf128) || _CCCL_COMPILER(GCC, >=, 7) |
| 607 | +#if _CCCL_HAS_FLOAT128() |
| 608 | +# if _CCCL_CHECK_BUILTIN(builtin_nansf128) || _CCCL_COMPILER(GCC, >=, 7) |
| 609 | +# define _CCCL_BUILTIN_NANSF128(...) __builtin_nansf128(__VA_ARGS__) |
| 610 | +# endif // _CCCL_CHECK_BUILTIN(builtin_nansf128) || _CCCL_COMPILER(GCC, >=, 7) |
604 | 611 |
|
605 | 612 | // nvcc does not implement __builtin_nansf128
|
606 |
| -#if _CCCL_CUDA_COMPILER(NVCC) |
607 |
| -# undef _CCCL_BUILTIN_NANSF128 |
608 |
| -#endif // _CCCL_CUDA_COMPILER(NVCC) |
| 613 | +# if _CCCL_CUDA_COMPILER(NVCC) |
| 614 | +# undef _CCCL_BUILTIN_NANSF128 |
| 615 | +# endif // _CCCL_CUDA_COMPILER(NVCC) |
| 616 | +#endif // _CCCL_HAS_FLOAT128() |
609 | 617 |
|
610 | 618 | #if _CCCL_CHECK_BUILTIN(builtin_nearbyint) || _CCCL_COMPILER(GCC)
|
611 | 619 | # define _CCCL_BUILTIN_NEARBYINTF(...) __builtin_nearbyintf(__VA_ARGS__)
|
|
0 commit comments