diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index de8ceb2f0898b..cecd34acbc92c 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -3234,7 +3234,7 @@ class OffloadingActionBuilder final { CudaActionBuilder(Compilation &C, DerivedArgList &Args, const Driver::InputList &Inputs) : CudaActionBuilderBase(C, Args, Inputs, Action::OFK_Cuda) { - DefaultCudaArch = CudaArch::SM_35; + DefaultCudaArch = CudaArch::CudaDefault; } StringRef getCanonicalOffloadArch(StringRef ArchStr) override { diff --git a/clang/test/Driver/cuda-detect.cu b/clang/test/Driver/cuda-detect.cu index 077d555a3128f..49e58004e672c 100644 --- a/clang/test/Driver/cuda-detect.cu +++ b/clang/test/Driver/cuda-detect.cu @@ -11,7 +11,6 @@ // RUN: %clang -v --target=x86_64-apple-macosx \ // RUN: --sysroot=%S/no-cuda-there --cuda-path-ignore-env 2>&1 | FileCheck %s -check-prefix NOCUDA - // RUN: %clang -v --target=i386-unknown-linux \ // RUN: --sysroot=%S/Inputs/CUDA --cuda-path-ignore-env 2>&1 | FileCheck %s // RUN: %clang -v --target=i386-apple-macosx \ @@ -146,9 +145,9 @@ // RUN: -check-prefix NOCUDAINC // Verify that C++ include paths are passed for both host and device frontends. -// RUN: not %clang -### --target=x86_64-linux-gnu %s \ +// RUN: %clang -### --target=x86_64-linux-gnu %s \ // RUN: --stdlib=libstdc++ --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree2 \ -// RUN: --gcc-toolchain="" 2>&1 \ +// RUN: -nogpulib -nogpuinc --gcc-toolchain="" 2>&1 \ // RUN: | FileCheck %s --check-prefix CHECK-CXXINCLUDE // Verify that CUDA SDK version is propagated to the CC1 compilations. diff --git a/clang/test/Driver/cuda-march.cu b/clang/test/Driver/cuda-march.cu index 7003e9fd4198c..25fd6f3a10f2a 100644 --- a/clang/test/Driver/cuda-march.cu +++ b/clang/test/Driver/cuda-march.cu @@ -5,15 +5,15 @@ // REQUIRES: x86-registered-target // REQUIRES: nvptx-registered-target -// RUN: not %clang -### --target=x86_64-linux-gnu -c \ -// RUN: -march=haswell %s 2>&1 | FileCheck %s -// RUN: not %clang -### --target=x86_64-linux-gnu -c \ -// RUN: -march=haswell --cuda-gpu-arch=sm_35 %s 2>&1 | FileCheck %s +// RUN: %clang -### --target=x86_64-linux-gnu -c \ +// RUN: -nogpulib -nogpuinc -march=haswell %s 2>&1 | FileCheck %s +// RUN: %clang -### --target=x86_64-linux-gnu -c \ +// RUN: -nogpulib -nogpuinc -march=haswell --cuda-gpu-arch=sm_52 %s 2>&1 | FileCheck %s // CHECK: "-cc1"{{.*}} "-triple" "nvptx -// CHECK-SAME: "-target-cpu" "sm_35" +// CHECK-SAME: "-target-cpu" "sm_52" // CHECK: ptxas -// CHECK-SAME: "--gpu-name" "sm_35" +// CHECK-SAME: "--gpu-name" "sm_52" // CHECK: "-cc1"{{.*}} "-target-cpu" "haswell" diff --git a/clang/test/Driver/cuda-omp-unsupported-debug-options.cu b/clang/test/Driver/cuda-omp-unsupported-debug-options.cu index 77cfa6925e387..8e1bb2e496c74 100644 --- a/clang/test/Driver/cuda-omp-unsupported-debug-options.cu +++ b/clang/test/Driver/cuda-omp-unsupported-debug-options.cu @@ -2,56 +2,56 @@ // REQUIRES: nvptx-registered-target // REQUIRES: zlib -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -g -gz 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -g -gz 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -gdwarf -fdebug-info-for-profiling 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -gdwarf -fdebug-info-for-profiling 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -gdwarf-2 -gsplit-dwarf 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -gdwarf-2 -gsplit-dwarf 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -gdwarf-3 -glldb 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -gdwarf-3 -glldb 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -gdwarf-4 -gcodeview 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -gdwarf-4 -gcodeview 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -gdwarf-5 -gmodules 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -gdwarf-5 -gmodules 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -ggdb1 -fdebug-macro 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -ggdb1 -fdebug-macro 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -ggdb2 -ggnu-pubnames 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -ggdb2 -ggnu-pubnames 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -ggdb3 -gdwarf-aranges 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -ggdb3 -gdwarf-aranges 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -g -gcolumn-info -fdebug-types-section 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -g -gcolumn-info -fdebug-types-section 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN,COMMON // Same tests for OpenMP -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -g -gz 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -gdwarf -fdebug-info-for-profiling 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -gdwarf-2 -gsplit-dwarf 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -gdwarf-3 -glldb 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -gdwarf-4 -gcodeview 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -gdwarf-5 -gmodules 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -ggdb1 -fdebug-macro 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -ggdb2 -ggnu-pubnames 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -ggdb3 -gdwarf-aranges 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -g -gcolumn-info -fdebug-types-section 2>&1 | FileCheck %s --check-prefixes WARN,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -gdwarf-5 -gembed-source 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -gdwarf-5 -gembed-source 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN-GES,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -ggdb -gembed-source -gdwarf-5 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -c %s -ggdb -gembed-source -gdwarf-5 2>&1 \ // RUN: | FileCheck %s --check-prefixes WARN-GES,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -gdwarf-5 -gembed-source 2>&1 | FileCheck %s --check-prefixes WARN-GES,COMMON -// RUN: not %clang -### --target=x86_64-linux-gnu -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -c %s \ +// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=sm_52 -nogpulib -nogpuinc -fopenmp=libomp -c %s \ // RUN: -fgpu-rdc -ggdb -gembed-source -gdwarf-5 2>&1 | FileCheck %s --check-prefixes WARN-GES,COMMON // COMMON: warning: debug information option '{{-gz|-fdebug-info-for-profiling|-gsplit-dwarf|-glldb|-gcodeview|-gmodules|-gembed-source|-fdebug-macro|-ggnu-pubnames|-gdwarf-aranges|-fdebug-types-section}}' is not supported diff --git a/clang/test/Driver/cuda-options.cu b/clang/test/Driver/cuda-options.cu index ad892b7839b96..8999a6618fe1f 100644 --- a/clang/test/Driver/cuda-options.cu +++ b/clang/test/Driver/cuda-options.cu @@ -4,197 +4,197 @@ // Simple compilation case. Compile device-side to PTX assembly and make sure // we use it on the host side. -// RUN: %clang -### -target x86_64-linux-gnu -c --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \ +// RUN: %clang -### -target x86_64-linux-gnu -c -nogpulib -nogpuinc %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix HOST -check-prefix INCLUDES-DEVICE \ // RUN: -check-prefix NOLINK %s // Typical compilation + link case. -// RUN: %clang -### -target x86_64-linux-gnu --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \ +// RUN: %clang -### -target x86_64-linux-gnu -nogpulib -nogpuinc %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix HOST -check-prefix INCLUDES-DEVICE \ // RUN: -check-prefix LINK %s // Verify that --cuda-host-only disables device-side compilation, but doesn't // disable host-side compilation/linking. -// RUN: %clang -### -target x86_64-linux-gnu --cuda-host-only --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \ +// RUN: %clang -### -target x86_64-linux-gnu --cuda-host-only -nogpulib -nogpuinc %s 2>&1 \ // RUN: | FileCheck -check-prefix NODEVICE -check-prefix HOST \ // RUN: -check-prefix NOINCLUDES-DEVICE -check-prefix LINK %s // Verify that --cuda-device-only disables host-side compilation and linking. -// RUN: %clang -### -target x86_64-linux-gnu --cuda-device-only --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \ +// RUN: %clang -### -target x86_64-linux-gnu --cuda-device-only -nogpulib -nogpuinc %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix NOHOST -check-prefix NOLINK %s // Check that the last of --cuda-compile-host-device, --cuda-host-only, and // --cuda-device-only wins. -// RUN: %clang -### -target x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-host-only --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-device-only \ +// RUN: --cuda-host-only -nogpulib -nogpuinc %s 2>&1 \ // RUN: | FileCheck -check-prefix NODEVICE -check-prefix HOST \ // RUN: -check-prefix NOINCLUDES-DEVICE -check-prefix LINK %s -// RUN: %clang -### -target x86_64-linux-gnu --cuda-compile-host-device \ -// RUN: --cuda-host-only --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-compile-host-device \ +// RUN: --cuda-host-only -nogpulib -nogpuinc %s 2>&1 \ // RUN: | FileCheck -check-prefix NODEVICE -check-prefix HOST \ // RUN: -check-prefix NOINCLUDES-DEVICE -check-prefix LINK %s -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-host-only \ -// RUN: --cuda-device-only %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-host-only \ +// RUN: -nogpulib -nogpuinc --cuda-device-only %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix NOHOST -check-prefix NOLINK %s -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-compile-host-device \ -// RUN: --cuda-device-only %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-compile-host-device \ +// RUN: -nogpulib -nogpuinc --cuda-device-only %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix NOHOST -check-prefix NOLINK %s -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-host-only \ -// RUN: --cuda-compile-host-device %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-host-only \ +// RUN: -nogpulib -nogpuinc --cuda-compile-host-device %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix HOST -check-prefix INCLUDES-DEVICE \ // RUN: -check-prefix LINK %s -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-compile-host-device %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-device-only \ +// RUN: -nogpulib -nogpuinc --cuda-compile-host-device %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix HOST -check-prefix INCLUDES-DEVICE \ // RUN: -check-prefix LINK %s // Verify that --cuda-gpu-arch option passes the correct GPU architecture to // device compilation. -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-gpu-arch=sm_30 -c %s 2>&1 \ +// RUN: %clang -### -nogpulib -nogpuinc --target=x86_64-linux-gnu --cuda-gpu-arch=sm_52 -c %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ -// RUN: -check-prefix DEVICE-SM30 -check-prefix HOST \ +// RUN: -check-prefix DEVICE-SM52 -check-prefix HOST \ // RUN: -check-prefix INCLUDES-DEVICE -check-prefix NOLINK %s // Verify that there is one device-side compilation per --cuda-gpu-arch args // and that all results are included on the host side. -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 -c %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu \ +// RUN: -nogpulib -nogpuinc --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 -c %s 2>&1 \ // RUN: | FileCheck -check-prefixes DEVICE,DEVICE-NOSAVE,DEVICE2 \ -// RUN: -check-prefixes DEVICE-SM30,DEVICE2-SM35 \ +// RUN: -check-prefixes DEVICE-SM52,DEVICE2-SM60 \ // RUN: -check-prefixes INCLUDES-DEVICE,INCLUDES-DEVICE2 \ // RUN: -check-prefixes HOST,HOST-NOSAVE,NOLINK %s // Verify that device-side results are passed to the correct tool when // -save-temps is used. -// RUN: not %clang -### --target=x86_64-linux-gnu -save-temps -c %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc -save-temps -c %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-SAVE \ // RUN: -check-prefix HOST -check-prefix HOST-SAVE -check-prefix NOLINK %s // Verify that device-side results are passed to the correct tool when // -fno-integrated-as is used. -// RUN: not %clang -### --target=x86_64-linux-gnu -fno-integrated-as -c %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc -fno-integrated-as -c %s 2>&1 \ // RUN: | FileCheck -check-prefix DEVICE -check-prefix DEVICE-NOSAVE \ // RUN: -check-prefix HOST -check-prefix HOST-NOSAVE \ // RUN: -check-prefix HOST-AS -check-prefix NOLINK %s // Verify that --[no-]cuda-gpu-arch arguments are handled correctly. // a) --no-cuda-gpu-arch=X negates preceding --cuda-gpu-arch=X -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-gpu-arch=sm_50 --cuda-gpu-arch=sm_30 \ -// RUN: --no-cuda-gpu-arch=sm_50 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-device-only \ +// RUN: -nogpulib -nogpuinc --cuda-gpu-arch=sm_70 --cuda-gpu-arch=sm_52 \ +// RUN: --no-cuda-gpu-arch=sm_70 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes ARCH-SM30,NOARCH-SM35,NOARCH-SM50 %s +// RUN: | FileCheck -check-prefixes ARCH-SM52,NOARCH-SM60,NOARCH-SM70 %s // b) --no-cuda-gpu-arch=X negates more than one preceding --cuda-gpu-arch=X -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-gpu-arch=sm_50 --cuda-gpu-arch=sm_50 --cuda-gpu-arch=sm_30 \ -// RUN: --no-cuda-gpu-arch=sm_50 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-device-only \ +// RUN: -nogpulib -nogpuinc --cuda-gpu-arch=sm_70 --cuda-gpu-arch=sm_70 --cuda-gpu-arch=sm_52 \ +// RUN: --no-cuda-gpu-arch=sm_70 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes ARCH-SM30,NOARCH-SM35,NOARCH-SM50 %s +// RUN: | FileCheck -check-prefixes ARCH-SM52,NOARCH-SM60,NOARCH-SM70 %s // c) if --no-cuda-gpu-arch=X negates all preceding --cuda-gpu-arch=X -// we default to sm_35 -- same as if no --cuda-gpu-arch were passed. -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-gpu-arch=sm_50 --cuda-gpu-arch=sm_30 \ -// RUN: --no-cuda-gpu-arch=sm_50 --no-cuda-gpu-arch=sm_30 \ +// we default to sm_52 -- same as if no --cuda-gpu-arch were passed. +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-device-only \ +// RUN: -nogpulib -nogpuinc --cuda-gpu-arch=sm_70 --cuda-gpu-arch=sm_60 \ +// RUN: --no-cuda-gpu-arch=sm_70 --no-cuda-gpu-arch=sm_60 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes NOARCH-SM30,ARCH-SM35,NOARCH-SM50 %s +// RUN: | FileCheck -check-prefixes ARCH-SM52,NOARCH-SM60,NOARCH-SM70 %s // d) --no-cuda-gpu-arch=X is a no-op if there's no preceding --cuda-gpu-arch=X -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30\ -// RUN: --no-cuda-gpu-arch=sm_50 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-device-only \ +// RUN: -nogpulib -nogpuinc --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52\ +// RUN: --no-cuda-gpu-arch=sm_70 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes ARCH-SM30,ARCH-SM35,NOARCH-SM50 %s +// RUN: | FileCheck -check-prefixes ARCH-SM52,ARCH-SM60,NOARCH-SM70 %s // e) --no-cuda-gpu-arch=X does not affect following --cuda-gpu-arch=X -// RUN: not %clang -### --target=x86_64-linux-gnu --cuda-device-only \ -// RUN: --no-cuda-gpu-arch=sm_50 --no-cuda-gpu-arch=sm_30 \ -// RUN: --cuda-gpu-arch=sm_50 --cuda-gpu-arch=sm_30 \ +// RUN: %clang -### --target=x86_64-linux-gnu --cuda-device-only \ +// RUN: -nogpulib -nogpuinc --no-cuda-gpu-arch=sm_70 --no-cuda-gpu-arch=sm_52 \ +// RUN: --cuda-gpu-arch=sm_70 --cuda-gpu-arch=sm_52 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes ARCH-SM30,NOARCH-SM35,ARCH-SM50 %s +// RUN: | FileCheck -check-prefixes ARCH-SM52,NOARCH-SM60,ARCH-SM70 %s // f) --no-cuda-gpu-arch=all negates all preceding --cuda-gpu-arch=X // RUN: %clang -### -target x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 \ +// RUN: -nogpulib -nogpuinc --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 \ // RUN: --no-cuda-gpu-arch=all \ -// RUN: --cuda-gpu-arch=sm_50 \ -// RUN: -c --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s 2>&1 \ -// RUN: | FileCheck -check-prefixes NOARCH-SM30,NOARCH-SM35,ARCH-SM50 %s +// RUN: --cuda-gpu-arch=sm_70 \ +// RUN: -c -nogpulib -nogpuinc %s 2>&1 \ +// RUN: | FileCheck -check-prefixes NOARCH-SM52,NOARCH-SM60,ARCH-SM70 %s // g) There's no --cuda-gpu-arch=all // RUN: not %clang -### --target=x86_64-linux-gnu --cuda-device-only \ -// RUN: --cuda-gpu-arch=all \ +// RUN: -nogpulib -nogpuinc --cuda-gpu-arch=all \ // RUN: -c %s 2>&1 \ // RUN: | FileCheck -check-prefix ARCHALLERROR %s // Verify that --[no-]cuda-include-ptx arguments are handled correctly. // a) by default we're including PTX for all GPUs. -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc \ +// RUN: --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM35,PTX-SM30 %s +// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM60,PTX-SM52 %s // b) --no-cuda-include-ptx=all disables PTX inclusion for all GPUs -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc \ +// RUN: --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 \ // RUN: --no-cuda-include-ptx=all \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes FATBIN-COMMON,NOPTX-SM35,NOPTX-SM30 %s +// RUN: | FileCheck -check-prefixes FATBIN-COMMON,NOPTX-SM60,NOPTX-SM52 %s // c) --no-cuda-include-ptx=sm_XX disables PTX inclusion for that GPU only. -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 \ -// RUN: --no-cuda-include-ptx=sm_35 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc \ +// RUN: --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 \ +// RUN: --no-cuda-include-ptx=sm_60 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes FATBIN-COMMON,NOPTX-SM35,PTX-SM30 %s -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 \ -// RUN: --no-cuda-include-ptx=sm_30 \ +// RUN: | FileCheck -check-prefixes FATBIN-COMMON,NOPTX-SM60,PTX-SM52 %s +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc \ +// RUN: --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 \ +// RUN: --no-cuda-include-ptx=sm_52 \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM35,NOPTX-SM30 %s +// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM60,NOPTX-SM52 %s // d) --cuda-include-ptx=all overrides preceding --no-cuda-include-ptx=all -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc \ +// RUN: --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 \ // RUN: --no-cuda-include-ptx=all --cuda-include-ptx=all \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM35,PTX-SM30 %s +// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM60,PTX-SM52 %s // e) --cuda-include-ptx=all overrides preceding --no-cuda-include-ptx=sm_XX -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_30 \ -// RUN: --no-cuda-include-ptx=sm_30 --cuda-include-ptx=all \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc \ +// RUN: --cuda-gpu-arch=sm_60 --cuda-gpu-arch=sm_52 \ +// RUN: --no-cuda-include-ptx=sm_52 --cuda-include-ptx=all \ // RUN: -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM35,PTX-SM30 %s +// RUN: | FileCheck -check-prefixes FATBIN-COMMON,PTX-SM60,PTX-SM52 %s // Verify -flto=thin -fwhole-program-vtables handling. This should result in // both options being passed to the host compilation, with neither passed to // the device compilation. -// RUN: not %clang -### --target=x86_64-linux-gnu -c -flto=thin -fwhole-program-vtables %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc -c -flto=thin -fwhole-program-vtables %s 2>&1 \ // RUN: | FileCheck -check-prefixes DEVICE,DEVICE-NOSAVE,HOST,INCLUDES-DEVICE,NOLINK,THINLTOWPD %s // THINLTOWPD-NOT: error: invalid argument '-fwhole-program-vtables' only allowed with '-flto' -// ARCH-SM30: "-cc1"{{.*}}"-target-cpu" "sm_30" -// NOARCH-SM30-NOT: "-cc1"{{.*}}"-target-cpu" "sm_30" -// ARCH-SM35: "-cc1"{{.*}}"-target-cpu" "sm_35" -// NOARCH-SM35-NOT: "-cc1"{{.*}}"-target-cpu" "sm_35" -// ARCH-SM50: "-cc1"{{.*}}"-target-cpu" "sm_50" -// NOARCH-SM50-NOT: "-cc1"{{.*}}"-target-cpu" "sm_50" +// ARCH-SM52: "-cc1"{{.*}}"-target-cpu" "sm_52" +// NOARCH-SM52-NOT: "-cc1"{{.*}}"-target-cpu" "sm_52" +// ARCH-SM60: "-cc1"{{.*}}"-target-cpu" "sm_60" +// NOARCH-SM60-NOT: "-cc1"{{.*}}"-target-cpu" "sm_60" +// ARCH-SM70: "-cc1"{{.*}}"-target-cpu" "sm_70" +// NOARCH-SM70-NOT: "-cc1"{{.*}}"-target-cpu" "sm_70" // ARCHALLERROR: error: unsupported CUDA gpu architecture: all // Match device-side preprocessor and compiler phases with -save-temps. @@ -213,7 +213,7 @@ // DEVICE-NOSAVE-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" // THINLTOWPD-NOT: "-flto=thin" // DEVICE-SAME: "-fcuda-is-device" -// DEVICE-SM30-SAME: "-target-cpu" "sm_30" +// DEVICE-SM52-SAME: "-target-cpu" "sm_52" // THINLTOWPD-NOT: "-fwhole-program-vtables" // DEVICE-SAME: "-o" "[[PTXFILE:[^"]*]]" // DEVICE-NOSAVE-SAME: "-x" "cuda" @@ -221,7 +221,7 @@ // Match the call to ptxas (which assembles PTX to SASS). // DEVICE:ptxas -// DEVICE-SM30-DAG: "--gpu-name" "sm_30" +// DEVICE-SM52-DAG: "--gpu-name" "sm_52" // DEVICE-DAG: "--output-file" "[[CUBINFILE:[^"]*]]" // DEVICE-DAG: "[[PTXFILE]]" @@ -229,13 +229,13 @@ // DEVICE2: "-cc1" "-triple" "nvptx64-nvidia-cuda" // DEVICE2-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" // DEVICE2-SAME: "-fcuda-is-device" -// DEVICE2-SM35-SAME: "-target-cpu" "sm_35" +// DEVICE2-SM60-SAME: "-target-cpu" "sm_60" // DEVICE2-SAME: "-o" "[[PTXFILE2:[^"]*]]" // DEVICE2-SAME: "-x" "cuda" // Match another call to ptxas. // DEVICE2: ptxas -// DEVICE2-SM35-DAG: "--gpu-name" "sm_35" +// DEVICE2-SM60-DAG: "--gpu-name" "sm_60" // DEVICE2-DAG: "--output-file" "[[CUBINFILE2:[^"]*]]" // DEVICE2-DAG: "[[PTXFILE2]]" @@ -290,9 +290,9 @@ // FATBIN-COMMON:fatbinary // FATBIN-COMMON: "--create" "[[FATBINARY:[^"]*]]" -// FATBIN-COMMON: "--image=profile=sm_30,file= -// PTX-SM30: "--image=profile=compute_30,file= -// NOPTX-SM30-NOT: "--image=profile=compute_30,file= -// FATBIN-COMMON: "--image=profile=sm_35,file= -// PTX-SM35: "--image=profile=compute_35,file= -// NOPTX-SM35-NOT: "--image=profile=compute_35,file= +// FATBIN-COMMON: "--image=profile=sm_52,file= +// PTX-SM52: "--image=profile=compute_52,file= +// NOPTX-SM52-NOT: "--image=profile=compute_52,file= +// FATBIN-COMMON: "--image=profile=sm_60,file= +// PTX-SM60: "--image=profile=compute_60,file= +// NOPTX-SM60-NOT: "--image=profile=compute_60,file= diff --git a/clang/test/Driver/cuda-ptxas-path.cu b/clang/test/Driver/cuda-ptxas-path.cu index 09c6014a91a2e..87b19d9d4d616 100644 --- a/clang/test/Driver/cuda-ptxas-path.cu +++ b/clang/test/Driver/cuda-ptxas-path.cu @@ -8,4 +8,4 @@ // CHECK-NOT: "ptxas" // CHECK: "/some/path/to/ptxas" -// CHECK-SAME: "--gpu-name" "sm_35" +// CHECK-SAME: "--gpu-name" "sm_52" diff --git a/clang/test/Driver/dwarf-target-version-clamp.cu b/clang/test/Driver/dwarf-target-version-clamp.cu index ec0386afbc57e..d9dbbe62cfb2f 100644 --- a/clang/test/Driver/dwarf-target-version-clamp.cu +++ b/clang/test/Driver/dwarf-target-version-clamp.cu @@ -2,9 +2,9 @@ // REQUIRES: nvptx-registered-target // Verify that DWARF version is properly clamped for nvptx, but not for the host. -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -gdwarf-5 -gembed-source 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc -c %s -gdwarf-5 -gembed-source 2>&1 \ // RUN: | FileCheck %s --check-prefix=DWARF-CLAMP -// RUN: not %clang -### --target=x86_64-linux-gnu -c %s -ggdb -gembed-source -gdwarf-5 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpulib -nogpuinc -c %s -ggdb -gembed-source -gdwarf-5 2>&1 \ // RUN: | FileCheck %s --check-prefix=DWARF-CLAMP // DWARF-CLAMP: "-triple" "nvptx64-nvidia-cuda"