[HIP] Add default header and include path
authorYaxun (Sam) Liu <yaxun.liu@amd.com>
Wed, 3 Jun 2020 14:05:52 +0000 (10:05 -0400)
committerYaxun (Sam) Liu <yaxun.liu@amd.com>
Fri, 5 Jun 2020 16:44:57 +0000 (12:44 -0400)
commit11d06b9511bd25aabbfad10dff548b0ce29135a5
tree49d514f344a4e9618813e156e8e6024a221c78cb
parenta3597ecae95938351339b2011baedb3f23ea72de
[HIP] Add default header and include path

To support std::complex and some other standard C/C++ functions in HIP device code,
they need to be forced to be __host__ __device__ functions by pragmas. This is done
by some clang standard C++ wrapper headers which are shared between cuda-clang and hip-Clang.

For these standard C++ wapper headers to work properly, specific include path order
has to be enforced:

  clang C++ wrapper include path
  standard C++ include path
  clang include path

Also, these C++ wrapper headers require device version of some standard C/C++ functions
must be declared before including them. This needs to be done by including a default
header which declares or defines these device functions. The default header is always
included before any other headers are included by users.

This patch adds the the default header and include path for HIP.

Differential Revision: https://reviews.llvm.org/D81176
48 files changed:
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/include/clang/Driver/Options.td
clang/include/clang/Driver/ToolChain.h
clang/lib/Driver/ToolChain.cpp
clang/lib/Driver/ToolChains/AMDGPU.cpp
clang/lib/Driver/ToolChains/AMDGPU.h
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/Cuda.cpp
clang/lib/Driver/ToolChains/Gnu.cpp
clang/lib/Driver/ToolChains/Gnu.h
clang/lib/Driver/ToolChains/HIP.cpp
clang/lib/Driver/ToolChains/HIP.h
clang/lib/Driver/ToolChains/Linux.cpp
clang/lib/Driver/ToolChains/Linux.h
clang/lib/Driver/ToolChains/MSVC.cpp
clang/lib/Driver/ToolChains/MSVC.h
clang/lib/Driver/ToolChains/ROCm.h [new file with mode: 0644]
clang/lib/Headers/CMakeLists.txt
clang/lib/Headers/__clang_cuda_math_forward_declares.h
clang/lib/Headers/__clang_hip_libdevice_declares.h [new file with mode: 0644]
clang/lib/Headers/__clang_hip_math.h [new file with mode: 0644]
clang/lib/Headers/__clang_hip_runtime_wrapper.h [new file with mode: 0644]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/hip.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/hip.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/ockl.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/ockl.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_correctly_rounded_sqrt_off.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_correctly_rounded_sqrt_off.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_daz_opt_off.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_daz_opt_off.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_daz_opt_on.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_daz_opt_on.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_finite_only_off.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_finite_only_off.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_finite_only_on.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_finite_only_on.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_isa_version_1010.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_isa_version_1010.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_isa_version_1011.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_isa_version_1011.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_isa_version_1012.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_isa_version_1012.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_isa_version_803.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_isa_version_803.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_isa_version_900.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_isa_version_900.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_unsafe_math_off.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_unsafe_math_off.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_unsafe_math_on.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_unsafe_math_on.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_wavefrontsize64_off.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_wavefrontsize64_off.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/oclc_wavefrontsize64_on.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/oclc_wavefrontsize64_on.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/ocml.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/ocml.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/amdgcn/bitcode/opencl.bc [moved from clang/test/Driver/Inputs/rocm-device-libs/amdgcn/bitcode/opencl.bc with 100% similarity]
clang/test/Driver/Inputs/rocm/include/hip/hip_runtime.h [new file with mode: 0644]
clang/test/Driver/hip-device-libs.hip
clang/test/Driver/hip-include-path.hip [new file with mode: 0644]
clang/test/Driver/rocm-detect.cl
clang/test/Driver/rocm-detect.hip
clang/test/Driver/rocm-device-libs.cl
clang/test/Driver/rocm-not-found.cl