[OpenMP][Clang] Support for target math functions
authorGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>
Wed, 8 May 2019 15:52:33 +0000 (15:52 +0000)
committerGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>
Wed, 8 May 2019 15:52:33 +0000 (15:52 +0000)
commite62c693c8e71626d9dbf919280fd314cfac7f175
tree96e3be734529fe9f57b1adc60745e711ddf781aa
parenta3ff5727b78f1beeeee7484174ef86e48d35bd5c
[OpenMP][Clang] Support for target math functions

Summary:
In this patch we propose a temporary solution to resolving math functions for the NVPTX toolchain, temporary until OpenMP variant is supported by Clang.

We intercept the inclusion of math.h and cmath headers and if we are in the OpenMP-NVPTX case, we re-use CUDA's math function resolution mechanism.

Authors:
@gtbercea
@jdoerfert

Reviewers: hfinkel, caomhin, ABataev, tra

Reviewed By: hfinkel, ABataev, tra

Subscribers: JDevlieghere, mgorny, guansong, cfe-commits, jdoerfert

Tags: #clang

Differential Revision: https://reviews.llvm.org/D61399

llvm-svn: 360265
18 files changed:
clang/lib/Driver/ToolChain.cpp
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Headers/CMakeLists.txt
clang/lib/Headers/__clang_cuda_cmath.h
clang/lib/Headers/__clang_cuda_device_functions.h
clang/lib/Headers/__clang_cuda_libdevice_declares.h
clang/lib/Headers/__clang_cuda_math_forward_declares.h
clang/lib/Headers/openmp_wrappers/__clang_openmp_math.h [new file with mode: 0644]
clang/lib/Headers/openmp_wrappers/cmath [new file with mode: 0644]
clang/lib/Headers/openmp_wrappers/math.h [new file with mode: 0644]
clang/test/Driver/openmp-offload-gpu.c
clang/test/Headers/Inputs/include/cmath [new file with mode: 0644]
clang/test/Headers/Inputs/include/limits [new file with mode: 0644]
clang/test/Headers/Inputs/include/math.h
clang/test/Headers/nvptx_device_cmath_functions.c [new file with mode: 0644]
clang/test/Headers/nvptx_device_cmath_functions.cpp [new file with mode: 0644]
clang/test/Headers/nvptx_device_math_functions.c [new file with mode: 0644]
clang/test/Headers/nvptx_device_math_functions.cpp [new file with mode: 0644]