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