Skip to content

Commit 315fc11

Browse files
committed
Try and fix clang-cuda
1 parent a43a8f2 commit 315fc11

File tree

2 files changed

+101
-6
lines changed
  • libcudacxx
    • include/cuda/std/__cccl
    • test/libcudacxx/std/numerics/complex.number

2 files changed

+101
-6
lines changed

libcudacxx/include/cuda/std/__cccl/builtin.h

Lines changed: 98 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,24 @@
9292
# define _CCCL_BUILTIN_ACOSL(...) __builtin_acosl(__VA_ARGS__)
9393
#endif // _CCCL_CHECK_BUILTIN(builtin_acos)
9494

95+
#if _CCCL_CUDA_COMPILER(CLANG)
96+
# undef _CCCL_BUILTIN_ACOSF
97+
# undef _CCCL_BUILTIN_ACOS
98+
# undef _CCCL_BUILTIN_ACOSL
99+
#endif // _CCCL_CUDA_COMPILER(CLANG)
100+
95101
#if _CCCL_CHECK_BUILTIN(builtin_acosh) || _CCCL_COMPILER(GCC)
96102
# define _CCCL_BUILTIN_ACOSHF(...) __builtin_acoshf(__VA_ARGS__)
97103
# define _CCCL_BUILTIN_ACOSH(...) __builtin_acosh(__VA_ARGS__)
98104
# define _CCCL_BUILTIN_ACOSHL(...) __builtin_acoshl(__VA_ARGS__)
99105
#endif // _CCCL_CHECK_BUILTIN(builtin_acosh)
100106

107+
#if _CCCL_CUDA_COMPILER(CLANG)
108+
# undef _CCCL_BUILTIN_ACOSHF
109+
# undef _CCCL_BUILTIN_ACOSH
110+
# undef _CCCL_BUILTIN_ACOSHL
111+
#endif // _CCCL_CUDA_COMPILER(CLANG)
112+
101113
// nvhpc has a bug where it supports __builtin_addressof but does not mark it via _CCCL_CHECK_BUILTIN
102114
#if _CCCL_CHECK_BUILTIN(builtin_addressof) || _CCCL_COMPILER(GCC, >=, 7) || _CCCL_COMPILER(MSVC) \
103115
|| _CCCL_COMPILER(NVHPC)
@@ -108,14 +120,26 @@
108120
# define _CCCL_BUILTIN_ASINF(...) __builtin_asinf(__VA_ARGS__)
109121
# define _CCCL_BUILTIN_ASIN(...) __builtin_asin(__VA_ARGS__)
110122
# define _CCCL_BUILTIN_ASINL(...) __builtin_asinl(__VA_ARGS__)
111-
#endif // _CCCL_CHECK_BUILTIN(builtin_asinh)
123+
#endif // _CCCL_CHECK_BUILTIN(builtin_asin)
124+
125+
#if _CCCL_CUDA_COMPILER(CLANG)
126+
# undef _CCCL_BUILTIN_ASINF
127+
# undef _CCCL_BUILTIN_ASIN
128+
# undef _CCCL_BUILTIN_ASINL
129+
#endif // _CCCL_CUDA_COMPILER(CLANG)
112130

113131
#if _CCCL_CHECK_BUILTIN(builtin_asinh) || _CCCL_COMPILER(GCC)
114132
# define _CCCL_BUILTIN_ASINHF(...) __builtin_asinhf(__VA_ARGS__)
115133
# define _CCCL_BUILTIN_ASINH(...) __builtin_asinh(__VA_ARGS__)
116134
# define _CCCL_BUILTIN_ASINHL(...) __builtin_asinhl(__VA_ARGS__)
117135
#endif // _CCCL_CHECK_BUILTIN(builtin_asin)
118136

137+
#if _CCCL_CUDA_COMPILER(CLANG)
138+
# undef _CCCL_BUILTIN_ASINHF
139+
# undef _CCCL_BUILTIN_ASINH
140+
# undef _CCCL_BUILTIN_ASINHL
141+
#endif // _CCCL_CUDA_COMPILER(CLANG)
142+
119143
#if _CCCL_CHECK_BUILTIN(builtin_assume) || _CCCL_COMPILER(CLANG) || _CCCL_COMPILER(NVHPC)
120144
# define _CCCL_BUILTIN_ASSUME(...) __builtin_assume(__VA_ARGS__)
121145
#elif _CCCL_COMPILER(GCC, >=, 13)
@@ -138,18 +162,36 @@
138162
# define _CCCL_BUILTIN_ATANL(...) __builtin_atanl(__VA_ARGS__)
139163
#endif // _CCCL_CHECK_BUILTIN(builtin_atan)
140164

165+
#if _CCCL_CUDA_COMPILER(CLANG)
166+
# undef _CCCL_BUILTIN_ATANF
167+
# undef _CCCL_BUILTIN_ATAN
168+
# undef _CCCL_BUILTIN_ATANL
169+
#endif // _CCCL_CUDA_COMPILER(CLANG)
170+
141171
#if _CCCL_CHECK_BUILTIN(builtin_atan2) || _CCCL_COMPILER(GCC)
142172
# define _CCCL_BUILTIN_ATAN2F(...) __builtin_atan2f(__VA_ARGS__)
143173
# define _CCCL_BUILTIN_ATAN2(...) __builtin_atan2(__VA_ARGS__)
144174
# define _CCCL_BUILTIN_ATAN2L(...) __builtin_atan2l(__VA_ARGS__)
145175
#endif // _CCCL_CHECK_BUILTIN(builtin_atan2)
146176

177+
#if _CCCL_CUDA_COMPILER(CLANG)
178+
# undef _CCCL_BUILTIN_ATAN2F
179+
# undef _CCCL_BUILTIN_ATAN2
180+
# undef _CCCL_BUILTIN_ATAN2L
181+
#endif // _CCCL_CUDA_COMPILER(CLANG)
182+
147183
#if _CCCL_CHECK_BUILTIN(builtin_atanh) || _CCCL_COMPILER(GCC)
148184
# define _CCCL_BUILTIN_ATANHF(...) __builtin_atanhf(__VA_ARGS__)
149185
# define _CCCL_BUILTIN_ATANH(...) __builtin_atanh(__VA_ARGS__)
150186
# define _CCCL_BUILTIN_ATANHL(...) __builtin_atanhl(__VA_ARGS__)
151187
#endif // _CCCL_CHECK_BUILTIN(builtin_atanh)
152188

189+
#if _CCCL_CUDA_COMPILER(CLANG)
190+
# undef _CCCL_BUILTIN_ATANHF
191+
# undef _CCCL_BUILTIN_ATANH
192+
# undef _CCCL_BUILTIN_ATANHL
193+
#endif // _CCCL_CUDA_COMPILER(CLANG)
194+
153195
// MSVC supports __builtin_bit_cast from 19.25 on
154196
#if _CCCL_CHECK_BUILTIN(builtin_bit_cast) || _CCCL_COMPILER(MSVC, >, 19, 25)
155197
# define _CCCL_BUILTIN_BIT_CAST(...) __builtin_bit_cast(__VA_ARGS__)
@@ -230,11 +272,23 @@
230272
# define _CCCL_BUILTIN_COSL(...) __builtin_cosl(__VA_ARGS__)
231273
#endif // _CCCL_CHECK_BUILTIN(builtin_cos)
232274

275+
#if _CCCL_CUDA_COMPILER(CLANG)
276+
# undef _CCCL_BUILTIN_COSF
277+
# undef _CCCL_BUILTIN_COS
278+
# undef _CCCL_BUILTIN_COSL
279+
#endif // _CCCL_CUDA_COMPILER(CLANG)
280+
233281
#if _CCCL_CHECK_BUILTIN(builtin_cosh) || _CCCL_COMPILER(GCC)
234282
# define _CCCL_BUILTIN_COSHF(...) __builtin_coshf(__VA_ARGS__)
235283
# define _CCCL_BUILTIN_COSH(...) __builtin_cosh(__VA_ARGS__)
236284
# define _CCCL_BUILTIN_COSHL(...) __builtin_coshl(__VA_ARGS__)
237-
#endif // _CCCL_CHECK_BUILTIN(builtin_cos)
285+
#endif // _CCCL_CHECK_BUILTIN(builtin_cosh)
286+
287+
#if _CCCL_CUDA_COMPILER(CLANG)
288+
# undef _CCCL_BUILTIN_COSHF
289+
# undef _CCCL_BUILTIN_COSH
290+
# undef _CCCL_BUILTIN_COSHL
291+
#endif // _CCCL_CUDA_COMPILER(CLANG)
238292

239293
#if _CCCL_CHECK_BUILTIN(builtin_exp) || _CCCL_COMPILER(GCC)
240294
# define _CCCL_BUILTIN_EXPF(...) __builtin_expf(__VA_ARGS__)
@@ -346,6 +400,12 @@
346400
# define _CCCL_BUILTIN_HYPOTL(...) __builtin_hypotl(__VA_ARGS__)
347401
#endif // _CCCL_CHECK_BUILTIN(builtin_hypot)
348402

403+
#if _CCCL_CUDA_COMPILER(CLANG)
404+
# undef _CCCL_BUILTIN_HYPOTF
405+
# undef _CCCL_BUILTIN_HYPOT
406+
# undef _CCCL_BUILTIN_HYPOTL
407+
#endif // _CCCL_CUDA_COMPILER(CLANG)
408+
349409
#if _CCCL_CHECK_BUILTIN(builtin_is_constant_evaluated) || _CCCL_COMPILER(GCC, >=, 9) || _CCCL_COMPILER(MSVC, >, 19, 24)
350410
# define _CCCL_BUILTIN_IS_CONSTANT_EVALUATED(...) __builtin_is_constant_evaluated(__VA_ARGS__)
351411
#endif // _CCCL_CHECK_BUILTIN(builtin_is_constant_evaluated)
@@ -385,6 +445,12 @@
385445
# define _CCCL_BUILTIN_LGAMMAL(...) __builtin_lgammal(__VA_ARGS__)
386446
#endif // _CCCL_CHECK_BUILTIN(builtin_lgamma)
387447

448+
#if _CCCL_CUDA_COMPILER(CLANG)
449+
# undef _CCCL_BUILTIN_LGAMMAF
450+
# undef _CCCL_BUILTIN_LGAMMA
451+
# undef _CCCL_BUILTIN_LGAMMAL
452+
#endif // _CCCL_CUDA_COMPILER(CLANG)
453+
388454
#if _CCCL_HAS_BUILTIN(__builtin_LINE) || _CCCL_COMPILER(GCC) || _CCCL_COMPILER(MSVC, >=, 19, 27)
389455
# define _CCCL_BUILTIN_LINE() __builtin_LINE()
390456
#else // ^^^ _CCCL_HAS_BUILTIN(__builtin_LINE) ^^^ / vvv !_CCCL_HAS_BUILTIN(__builtin_LINE) vvv
@@ -665,12 +731,24 @@
665731
# define _CCCL_BUILTIN_SINL(...) __builtin_sinl(__VA_ARGS__)
666732
#endif // _CCCL_CHECK_BUILTIN(builtin_sin)
667733

734+
#if _CCCL_CUDA_COMPILER(CLANG)
735+
# undef _CCCL_BUILTIN_SINF
736+
# undef _CCCL_BUILTIN_SIN
737+
# undef _CCCL_BUILTIN_SINL
738+
#endif // _CCCL_CUDA_COMPILER(CLANG)
739+
668740
#if _CCCL_CHECK_BUILTIN(builtin_sinh) || _CCCL_COMPILER(GCC)
669741
# define _CCCL_BUILTIN_SINHF(...) __builtin_sinhf(__VA_ARGS__)
670742
# define _CCCL_BUILTIN_SINH(...) __builtin_sinh(__VA_ARGS__)
671743
# define _CCCL_BUILTIN_SINHL(...) __builtin_sinhl(__VA_ARGS__)
672744
#endif // _CCCL_CHECK_BUILTIN(builtin_sin)
673745

746+
#if _CCCL_CUDA_COMPILER(CLANG)
747+
# undef _CCCL_BUILTIN_SINHF
748+
# undef _CCCL_BUILTIN_SINH
749+
# undef _CCCL_BUILTIN_SINHL
750+
#endif // _CCCL_CUDA_COMPILER(CLANG)
751+
674752
#if _CCCL_CHECK_BUILTIN(builtin_sqrt) || _CCCL_COMPILER(GCC)
675753
# define _CCCL_BUILTIN_SQRTF(...) __builtin_sqrtf(__VA_ARGS__)
676754
# define _CCCL_BUILTIN_SQRT(...) __builtin_sqrt(__VA_ARGS__)
@@ -683,18 +761,36 @@
683761
# define _CCCL_BUILTIN_TANL(...) __builtin_tanl(__VA_ARGS__)
684762
#endif // _CCCL_CHECK_BUILTIN(builtin_tan)
685763

764+
#if _CCCL_CUDA_COMPILER(CLANG)
765+
# undef _CCCL_BUILTIN_TANF
766+
# undef _CCCL_BUILTIN_TAN
767+
# undef _CCCL_BUILTIN_TANL
768+
#endif // _CCCL_CUDA_COMPILER(CLANG)
769+
686770
#if _CCCL_CHECK_BUILTIN(builtin_tanh) || _CCCL_COMPILER(GCC)
687771
# define _CCCL_BUILTIN_TANHF(...) __builtin_tanhf(__VA_ARGS__)
688772
# define _CCCL_BUILTIN_TANH(...) __builtin_tanh(__VA_ARGS__)
689773
# define _CCCL_BUILTIN_TANHL(...) __builtin_tanhl(__VA_ARGS__)
690774
#endif // _CCCL_CHECK_BUILTIN(builtin_tan)
691775

776+
#if _CCCL_CUDA_COMPILER(CLANG)
777+
# undef _CCCL_BUILTIN_TANHF
778+
# undef _CCCL_BUILTIN_TANH
779+
# undef _CCCL_BUILTIN_TANHL
780+
#endif // _CCCL_CUDA_COMPILER(CLANG)
781+
692782
#if _CCCL_CHECK_BUILTIN(builtin_tgamma) || _CCCL_COMPILER(GCC)
693783
# define _CCCL_BUILTIN_TGAMMAF(...) __builtin_tgammaf(__VA_ARGS__)
694784
# define _CCCL_BUILTIN_TGAMMA(...) __builtin_tgamma(__VA_ARGS__)
695785
# define _CCCL_BUILTIN_TGAMMAL(...) __builtin_tgammal(__VA_ARGS__)
696786
#endif // _CCCL_CHECK_BUILTIN(builtin_tgamma)
697787

788+
#if _CCCL_CUDA_COMPILER(CLANG)
789+
# undef _CCCL_BUILTIN_TGAMMAF
790+
# undef _CCCL_BUILTIN_TGAMMA
791+
# undef _CCCL_BUILTIN_TGAMMAL
792+
#endif // _CCCL_CUDA_COMPILER(CLANG)
793+
698794
#if _CCCL_CHECK_BUILTIN(builtin_trunc) || _CCCL_COMPILER(GCC)
699795
# define _CCCL_BUILTIN_TRUNCF(...) __builtin_truncf(__VA_ARGS__)
700796
# define _CCCL_BUILTIN_TRUNC(...) __builtin_trunc(__VA_ARGS__)

libcudacxx/test/libcudacxx/std/numerics/complex.number/cases.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,13 +311,12 @@ __host__ __device__ void is_about(double x, double y)
311311
assert(cuda::std::abs((x - y) / (x + y)) < 1.e-14);
312312
}
313313

314-
// CUDA treats long double as double
315-
/*
314+
#if !defined(_LIBCUDACXX_HAS_NO_LONG_DOUBLE)
316315
__host__ __device__ void is_about(long double x, long double y)
317316
{
318-
assert(cuda::std::abs((x-y)/(x+y)) < 1.e-14);
317+
assert(cuda::std::abs((x - y) / (x + y)) < 1.e-14);
319318
}
320-
*/
319+
#endif // !_LIBCUDACXX_HAS_NO_LONG_DOUBLE
321320

322321
#ifdef _LIBCUDACXX_HAS_NVFP16
323322
__host__ __device__ void is_about(__half x, __half y)

0 commit comments

Comments
 (0)