36 lines
1.2 KiB
C
36 lines
1.2 KiB
C
/*===---- __clang_openmp_math.h - OpenMP target math support ---------------===
|
|
*
|
|
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
* See https://llvm.org/LICENSE.txt for license information.
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
*
|
|
*===-----------------------------------------------------------------------===
|
|
*/
|
|
|
|
#if defined(__NVPTX__) && defined(_OPENMP)
|
|
/// TODO:
|
|
/// We are currently reusing the functionality of the Clang-CUDA code path
|
|
/// as an alternative to the host declarations provided by math.h and cmath.
|
|
/// This is suboptimal.
|
|
///
|
|
/// We should instead declare the device functions in a similar way, e.g.,
|
|
/// through OpenMP 5.0 variants, and afterwards populate the module with the
|
|
/// host declarations by unconditionally including the host math.h or cmath,
|
|
/// respectively. This is actually what the Clang-CUDA code path does, using
|
|
/// __device__ instead of variants to avoid redeclarations and get the desired
|
|
/// overload resolution.
|
|
|
|
#define __CUDA__
|
|
|
|
#if defined(__cplusplus)
|
|
#include <__clang_cuda_cmath.h>
|
|
#endif
|
|
|
|
#undef __CUDA__
|
|
|
|
/// Magic macro for stopping the math.h/cmath host header from being included.
|
|
#define __CLANG_NO_HOST_MATH__
|
|
|
|
#endif
|
|
|