1 /*===---- __clang_openmp_math.h - OpenMP target math support ---------------===
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
7 *===-----------------------------------------------------------------------===
10 #if defined(__NVPTX__) && defined(_OPENMP)
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.
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.
25 #if defined(__cplusplus)
26 #include <__clang_cuda_cmath.h>
31 /// Magic macro for stopping the math.h/cmath host header from being included.
32 #define __CLANG_NO_HOST_MATH__