]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/clang/lib/Headers/openmp_wrappers/__clang_openmp_math.h
MFC r355940:
[FreeBSD/FreeBSD.git] / contrib / llvm-project / clang / lib / Headers / openmp_wrappers / __clang_openmp_math.h
1 /*===---- __clang_openmp_math.h - OpenMP target math support ---------------===
2  *
3  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4  * See https://llvm.org/LICENSE.txt for license information.
5  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6  *
7  *===-----------------------------------------------------------------------===
8  */
9
10 #if defined(__NVPTX__) && defined(_OPENMP)
11 /// TODO:
12 /// We are currently reusing the functionality of the Clang-CUDA code path
13 /// as an alternative to the host declarations provided by math.h and cmath.
14 /// This is suboptimal.
15 ///
16 /// We should instead declare the device functions in a similar way, e.g.,
17 /// through OpenMP 5.0 variants, and afterwards populate the module with the
18 /// host declarations by unconditionally including the host math.h or cmath,
19 /// respectively. This is actually what the Clang-CUDA code path does, using
20 /// __device__ instead of variants to avoid redeclarations and get the desired
21 /// overload resolution.
22
23 #define __CUDA__
24
25 #if defined(__cplusplus)
26   #include <__clang_cuda_cmath.h>
27 #endif
28
29 #undef __CUDA__
30
31 /// Magic macro for stopping the math.h/cmath host header from being included.
32 #define __CLANG_NO_HOST_MATH__
33
34 #endif
35