1*67e74705SXin Li // REQUIRES: clang-driver 2*67e74705SXin Li // REQUIRES: x86-registered-target 3*67e74705SXin Li // REQUIRES: nvptx-registered-target 4*67e74705SXin Li 5*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_20 --sysroot=%S/Inputs/CUDA 2>&1 %s | \ 6*67e74705SXin Li // RUN: FileCheck %s --check-prefix=OK 7*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_20 --sysroot=%S/Inputs/CUDA_80 2>&1 %s | \ 8*67e74705SXin Li // RUN: FileCheck %s --check-prefix=OK 9*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_60 --sysroot=%S/Inputs/CUDA_80 2>&1 %s | \ 10*67e74705SXin Li // RUN: FileCheck %s --check-prefix=OK 11*67e74705SXin Li 12*67e74705SXin Li // The installation at Inputs/CUDA is CUDA 7.0, which doesn't support sm_60. 13*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_60 --sysroot=%S/Inputs/CUDA 2>&1 %s | \ 14*67e74705SXin Li // RUN: FileCheck %s --check-prefix=ERR_SM60 15*67e74705SXin Li 16*67e74705SXin Li // This should only complain about sm_60, not sm_35. 17*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_35 \ 18*67e74705SXin Li // RUN: --sysroot=%S/Inputs/CUDA 2>&1 %s | \ 19*67e74705SXin Li // RUN: FileCheck %s --check-prefix=ERR_SM60 --check-prefix=OK_SM35 20*67e74705SXin Li 21*67e74705SXin Li // We should get two errors here, one for sm_60 and one for sm_61. 22*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_61 \ 23*67e74705SXin Li // RUN: --sysroot=%S/Inputs/CUDA 2>&1 %s | \ 24*67e74705SXin Li // RUN: FileCheck %s --check-prefix=ERR_SM60 --check-prefix=ERR_SM61 25*67e74705SXin Li 26*67e74705SXin Li // We should still get an error if we pass -nocudainc, because this compilation 27*67e74705SXin Li // would invoke ptxas, and we do a version check on that, too. 28*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_60 -nocudainc --sysroot=%S/Inputs/CUDA 2>&1 %s | \ 29*67e74705SXin Li // RUN: FileCheck %s --check-prefix=ERR_SM60 30*67e74705SXin Li 31*67e74705SXin Li // If with -nocudainc and -E, we don't touch the CUDA install, so we 32*67e74705SXin Li // shouldn't get an error. 33*67e74705SXin Li // RUN: %clang -v -### -E --cuda-device-only --cuda-gpu-arch=sm_60 -nocudainc \ 34*67e74705SXin Li // RUN: --sysroot=%S/Inputs/CUDA 2>&1 %s | \ 35*67e74705SXin Li // RUN: FileCheck %s --check-prefix=OK 36*67e74705SXin Li 37*67e74705SXin Li // --no-cuda-version-check should suppress all of these errors. 38*67e74705SXin Li // RUN: %clang -v -### --cuda-gpu-arch=sm_60 --sysroot=%S/Inputs/CUDA 2>&1 \ 39*67e74705SXin Li // RUN: --no-cuda-version-check %s | \ 40*67e74705SXin Li // RUN: FileCheck %s --check-prefix=OK 41*67e74705SXin Li 42*67e74705SXin Li // OK-NOT: error: GPU arch 43*67e74705SXin Li 44*67e74705SXin Li // OK_SM35-NOT: error: GPU arch sm_35 45*67e74705SXin Li 46*67e74705SXin Li // We should only get one error per architecture. 47*67e74705SXin Li // ERR_SM60: error: GPU arch sm_60 {{.*}} 48*67e74705SXin Li // ERR_SM60-NOT: error: GPU arch sm_60 49*67e74705SXin Li 50*67e74705SXin Li // ERR_SM61: error: GPU arch sm_61 {{.*}} 51*67e74705SXin Li // ERR_SM61-NOT: error: GPU arch sm_61 52