blob: 160ca11964fc20613d0c55e1347af631a0182221 [file] [log] [blame]
Artem Belevich98607b62015-09-23 21:49:39 +00001// REQUIRES: clang-driver
2// REQUIRES: x86-registered-target
Artem Belevichfa11ab52015-11-17 22:28:46 +00003// REQUIRES: nvptx-registered-target
Artem Belevich98607b62015-09-23 21:49:39 +00004//
Artem Belevichfa11ab52015-11-17 22:28:46 +00005// # Check that we properly detect CUDA installation.
Artem Belevich98607b62015-09-23 21:49:39 +00006// RUN: %clang -v --target=i386-unknown-linux \
Artem Belevichfa11ab52015-11-17 22:28:46 +00007// RUN: --sysroot=%S/no-cuda-there 2>&1 | FileCheck %s -check-prefix NOCUDA
8// RUN: %clang -v --target=i386-unknown-linux \
9// RUN: --sysroot=%S/Inputs/CUDA 2>&1 | FileCheck %s
Artem Belevich98607b62015-09-23 21:49:39 +000010// RUN: %clang -v --target=i386-unknown-linux \
Artem Belevich98607b62015-09-23 21:49:39 +000011// RUN: --cuda-path=%S/Inputs/CUDA/usr/local/cuda 2>&1 | FileCheck %s
12
Artem Belevich34f481a2015-11-17 22:28:50 +000013// Make sure we map libdevice bitcode files to proper GPUs.
14// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_21 \
15// RUN: --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
16// RUN: | FileCheck %s -check-prefix COMMON \
17// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE21
Artem Belevichfa11ab52015-11-17 22:28:46 +000018// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
19// RUN: --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
Artem Belevich34f481a2015-11-17 22:28:50 +000020// RUN: | FileCheck %s -check-prefix COMMON -check-prefix CUDAINC \
21// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE35
22// Verify that -nocudainc prevents adding include path to CUDA headers.
Artem Belevichfa11ab52015-11-17 22:28:46 +000023// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
24// RUN: -nocudainc --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
Artem Belevich34f481a2015-11-17 22:28:50 +000025// RUN: | FileCheck %s -check-prefix COMMON -check-prefix NOCUDAINC \
26// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE35
Artem Belevichfa11ab52015-11-17 22:28:46 +000027// We should not add any CUDA include paths if there's no valid CUDA installation
28// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
29// RUN: --cuda-path=%S/no-cuda-there %s 2>&1 \
30// RUN: | FileCheck %s -check-prefix COMMON -check-prefix NOCUDAINC
31
Artem Belevich34f481a2015-11-17 22:28:50 +000032// Verify that no options related to bitcode linking are passes if
33// there's no bitcode file.
34// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_30 \
35// RUN: --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
36// RUN: | FileCheck %s -check-prefix COMMON -check-prefix NOLIBDEVICE
37// .. or if we explicitly passed -nocudalib
38// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
39// RUN: -nocudalib --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
40// RUN: | FileCheck %s -check-prefix COMMON -check-prefix NOLIBDEVICE
Artem Belevich86017332015-11-17 22:28:55 +000041// Verify that we don't add include paths, link with libdevice or
42// -include cuda_runtime without valid CUDA installation.
43// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
44// RUN: --cuda-path=%S/no-cuda-there %s 2>&1 \
45// RUN: | FileCheck %s -check-prefix COMMON \
46// RUN: -check-prefix NOCUDAINC -check-prefix NOLIBDEVICE
Artem Belevich34f481a2015-11-17 22:28:50 +000047
Artem Belevich98607b62015-09-23 21:49:39 +000048// CHECK: Found CUDA installation: {{.*}}/Inputs/CUDA/usr/local/cuda
49// NOCUDA-NOT: Found CUDA installation:
Artem Belevichfa11ab52015-11-17 22:28:46 +000050
51// COMMON: "-triple" "nvptx-nvidia-cuda"
52// COMMON-SAME: "-fcuda-is-device"
Artem Belevich34f481a2015-11-17 22:28:50 +000053// LIBDEVICE-SAME: "-mlink-cuda-bitcode"
54// NOLIBDEVICE-NOT: "-mlink-cuda-bitcode"
55// LIBDEVICE21-SAME: libdevice.compute_20.10.bc
56// LIBDEVICE35-SAME: libdevice.compute_35.10.bc
57// NOLIBDEVICE-NOT: libdevice.compute_{{.*}}.bc
58// LIBDEVICE-SAME: "-target-feature" "+ptx42"
59// NOLIBDEVICE-NOT: "-target-feature" "+ptx42"
Artem Belevichfa11ab52015-11-17 22:28:46 +000060// CUDAINC-SAME: "-internal-isystem" "{{.*}}/Inputs/CUDA/usr/local/cuda/include"
61// NOCUDAINC-NOT: "-internal-isystem" "{{.*}}/cuda/include"
Artem Belevich86017332015-11-17 22:28:55 +000062// CUDAINC-SAME: "-include" "cuda_runtime.h"
63// NOCUDAINC-NOT: "-include" "cuda_runtime.h"
Artem Belevichfa11ab52015-11-17 22:28:46 +000064// COMMON-SAME: "-x" "cuda"