diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index a76c833f654b3..345323d814a33 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -1780,6 +1780,16 @@ void SYCLToolChain::AddImpliedTargetArgs(const llvm::Triple &Triple, ArgStringList TargArgs; Args.AddAllArgValues(TargArgs, options::OPT_Xs, options::OPT_Xs_separate); Args.AddAllArgValues(TargArgs, options::OPT_Xsycl_backend); + // For -Xsycl-target-backend= the triple value is used to push + // specific options to the matching device compilation using that triple. + // Scrutinize this to make sure we are only checking the values needed + // for the current device compilation. + for (auto *A : Args) { + if (!A->getOption().matches(options::OPT_Xsycl_backend_EQ)) + continue; + if (getDriver().MakeSYCLDeviceTriple(A->getValue()) == Triple) + TargArgs.push_back(A->getValue(1)); + } // Check for any -device settings. std::string DevArg; if (IsJIT || Device == "pvc" || hasPVCDevice(TargArgs, DevArg)) { diff --git a/clang/test/Driver/sycl-ftarget-register-alloc-mode-old-model.cpp b/clang/test/Driver/sycl-ftarget-register-alloc-mode-old-model.cpp index f073dc11196c7..4eb587331ea05 100644 --- a/clang/test/Driver/sycl-ftarget-register-alloc-mode-old-model.cpp +++ b/clang/test/Driver/sycl-ftarget-register-alloc-mode-old-model.cpp @@ -20,6 +20,14 @@ // RUN: -fsycl-targets=spir64_gen -Xs "-device pvc" %s 2>&1 \ // RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc +// RUN: %clang -### -fsycl --no-offload-new-driver \ +// RUN: -fsycl-targets=spir64_gen -Xsycl-target-backend "-device pvc" %s 2>&1 \ +// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc + +// RUN: %clang -### -fsycl --no-offload-new-driver \ +// RUN: -fsycl-targets=spir64_gen -Xsycl-target-backend=spir64_gen "-device pvc" %s 2>&1 \ +// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc + // RUN: %clang -### -fsycl --no-offload-new-driver \ // RUN: -fsycl-targets=spir64_gen -Xs "-device 0x0BD5" %s 2>&1 \ // RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc diff --git a/clang/test/Driver/sycl-ftarget-register-alloc-mode.cpp b/clang/test/Driver/sycl-ftarget-register-alloc-mode.cpp index 8cd131ff5f3e2..6d944b9524694 100644 --- a/clang/test/Driver/sycl-ftarget-register-alloc-mode.cpp +++ b/clang/test/Driver/sycl-ftarget-register-alloc-mode.cpp @@ -20,6 +20,14 @@ // RUN: -fsycl-targets=spir64_gen -Xs "-device pvc" %s 2>&1 \ // RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc +// RUN: %clang -### -fsycl --offload-new-driver \ +// RUN: -fsycl-targets=spir64_gen -Xsycl-target-backend "-device pvc" %s 2>&1 \ +// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc + +// RUN: %clang -### -fsycl --offload-new-driver \ +// RUN: -fsycl-targets=spir64_gen -Xsycl-target-backend=spir64_gen "-device pvc" %s 2>&1 \ +// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc + // RUN: %clang -### -fsycl --offload-new-driver \ // RUN: -fsycl-targets=spir64_gen -Xs "-device 0x0BD5" %s 2>&1 \ // RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc diff --git a/clang/test/Driver/sycl-offload-new-driver.c b/clang/test/Driver/sycl-offload-new-driver.c index 33e1a9476ba49..e888ecf6f7f04 100644 --- a/clang/test/Driver/sycl-offload-new-driver.c +++ b/clang/test/Driver/sycl-offload-new-driver.c @@ -187,7 +187,7 @@ // RUN: %clangxx -fsycl -### -fsycl-targets=spir64_gen --offload-new-driver \ // RUN: -Xsycl-target-backend=spir64_gen "-device pvc,bdw" %s 2>&1 \ // RUN: | FileCheck -check-prefix COMMA_FILE %s -// COMMA_FILE: clang-offload-packager{{.*}} "--image=file={{.*}}pvc@bdw{{.*}},triple=spir64_gen-unknown-unknown,arch=pvc,bdw,kind=sycl" +// COMMA_FILE: clang-offload-packager{{.*}} "--image=file={{.*}}pvc@bdw{{.*}},triple=spir64_gen-unknown-unknown,arch=pvc,bdw,kind=sycl,compile-opts=-device_options pvc -ze-intel-enable-auto-large-GRF-mode" /// Verify that --cuda-path is passed to clang-linker-wrapper for SYCL offload // RUN: %clangxx -fsycl -### -fsycl-targets=nvptx64-nvidia-cuda \