Skip to content

Commit d2e498b

Browse files
committed
[CUDA] Improve testing of libdevice detection.
Added new testcases for libdevice in CUDA-9+ and removed unused checks. Differential Revision: https://reviews.llvm.org/D77688
1 parent a9627b7 commit d2e498b

File tree

1 file changed

+29
-14
lines changed

1 file changed

+29
-14
lines changed

clang/test/Driver/cuda-detect.cu

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,49 +51,64 @@
5151
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_21 \
5252
// RUN: --cuda-path=%S/Inputs/CUDA_80/usr/local/cuda %s 2>&1 \
5353
// RUN: | FileCheck %s -check-prefix COMMON \
54-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE20
54+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE20
5555
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_32 \
5656
// RUN: --cuda-path=%S/Inputs/CUDA_80/usr/local/cuda %s 2>&1 \
5757
// RUN: | FileCheck %s -check-prefix COMMON \
58-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE20
58+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE20
5959
// sm_30, sm_6x map to compute_30.
6060
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_30 \
6161
// RUN: --cuda-path=%S/Inputs/CUDA_80/usr/local/cuda %s 2>&1 \
6262
// RUN: | FileCheck %s -check-prefix COMMON \
63-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE30
63+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE30
6464
// sm_5x is a special case. Maps to compute_30 for cuda-7.x only.
6565
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_50 \
6666
// RUN: --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
6767
// RUN: | FileCheck %s -check-prefix COMMON \
68-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE30
68+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE30
6969
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_60 \
7070
// RUN: --cuda-path=%S/Inputs/CUDA_80/usr/local/cuda %s 2>&1 \
7171
// RUN: | FileCheck %s -check-prefix COMMON \
72-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE30
72+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE30
7373
// sm_35 and sm_37 -> compute_35
7474
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
7575
// RUN: --cuda-path=%S/Inputs/CUDA_80/usr/local/cuda %s 2>&1 \
7676
// RUN: | FileCheck %s -check-prefix COMMON -check-prefix CUDAINC \
77-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE35
77+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE35
7878
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_37 \
7979
// RUN: --cuda-path=%S/Inputs/CUDA_80/usr/local/cuda %s 2>&1 \
8080
// RUN: | FileCheck %s -check-prefix COMMON -check-prefix CUDAINC \
81-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE35
81+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE35
8282
// sm_5x -> compute_50 for CUDA-8.0 and newer.
8383
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_50 \
8484
// RUN: --cuda-path=%S/Inputs/CUDA_80/usr/local/cuda %s 2>&1 \
8585
// RUN: | FileCheck %s -check-prefix COMMON \
86-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE50
86+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE50
87+
88+
// CUDA-9+ uses the same libdevice for all GPU variants:
89+
// RUN: %clang -### -v --target=x86_64-unknown-linux --cuda-gpu-arch=sm_30 \
90+
// RUN: --cuda-path=%S/Inputs/CUDA_90/usr/local/cuda %s 2>&1 \
91+
// RUN: | FileCheck %s -check-prefix COMMON64 \
92+
// RUN: -check-prefixes PTX60,LIBDEVICE,LIBDEVICE10
93+
// RUN: %clang -### -v --target=x86_64-unknown-linux --cuda-gpu-arch=sm_50 \
94+
// RUN: --cuda-path=%S/Inputs/CUDA_90/usr/local/cuda %s 2>&1 \
95+
// RUN: | FileCheck %s -check-prefix COMMON64 \
96+
// RUN: -check-prefixes PTX60,LIBDEVICE,LIBDEVICE10
97+
// RUN: %clang -### -v --target=x86_64-unknown-linux --cuda-gpu-arch=sm_60 \
98+
// RUN: --cuda-path=%S/Inputs/CUDA_90/usr/local/cuda %s 2>&1 \
99+
// RUN: | FileCheck %s -check-prefix COMMON64 \
100+
// RUN: -check-prefixes PTX60,LIBDEVICE,LIBDEVICE10
101+
87102

88103
// Verify that -nocudainc prevents adding include path to CUDA headers.
89104
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
90105
// RUN: -nocudainc --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
91106
// RUN: | FileCheck %s -check-prefix COMMON -check-prefix NOCUDAINC \
92-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE35
107+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE35
93108
// RUN: %clang -### -v --target=i386-apple-macosx --cuda-gpu-arch=sm_35 \
94109
// RUN: -nocudainc --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \
95110
// RUN: | FileCheck %s -check-prefix COMMON -check-prefix NOCUDAINC \
96-
// RUN: -check-prefix LIBDEVICE -check-prefix LIBDEVICE35
111+
// RUN: -check-prefixes PTX42,LIBDEVICE,LIBDEVICE35
97112

98113
// We should not add any CUDA include paths if there's no valid CUDA installation
99114
// RUN: %clang -### -v --target=i386-unknown-linux --cuda-gpu-arch=sm_35 \
@@ -154,16 +169,16 @@
154169
// MISSINGLIBDEVICE: error: cannot find libdevice for sm_20.
155170

156171
// COMMON: "-triple" "nvptx-nvidia-cuda"
172+
// COMMON64: "-triple" "nvptx64-nvidia-cuda"
157173
// COMMON-SAME: "-fcuda-is-device"
158174
// LIBDEVICE-SAME: "-mlink-builtin-bitcode"
159-
// NOLIBDEVICE-NOT: "-mlink-builtin-bitcode"
175+
// LIBDEVICE10-SAME: libdevice.10.bc
160176
// LIBDEVICE20-SAME: libdevice.compute_20.10.bc
161177
// LIBDEVICE30-SAME: libdevice.compute_30.10.bc
162178
// LIBDEVICE35-SAME: libdevice.compute_35.10.bc
163179
// LIBDEVICE50-SAME: libdevice.compute_50.10.bc
164-
// NOLIBDEVICE-NOT: libdevice.compute_{{.*}}.bc
165-
// LIBDEVICE-SAME: "-target-feature" "+ptx42"
166-
// NOLIBDEVICE-NOT: "-target-feature" "+ptx42"
180+
// PTX42-SAME: "-target-feature" "+ptx42"
181+
// PTX60-SAME: "-target-feature" "+ptx60"
167182
// CUDAINC-SAME: "-internal-isystem" "{{.*}}/Inputs/CUDA{{[_0-9]+}}/usr/local/cuda/include"
168183
// NOCUDAINC-NOT: "-internal-isystem" "{{.*}}/cuda/include"
169184
// CUDAINC-SAME: "-include" "__clang_cuda_runtime_wrapper.h"

0 commit comments

Comments
 (0)