Henry =?utf-8?q?Linjamäki?= <[email protected]>, Henry =?utf-8?q?Linjamäki?= <[email protected]> Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/[email protected]>
llvmbot wrote: <!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: Henry Linjamäki (linehill) <details> <summary>Changes</summary> Update HIPSPV toolchain to support `--offload-new-driver`. Additionally, tailor llvm-spirv invocation for [chipStar](github.com/CHIP-SPV/chipStar) via `spirv64-*-chipstar` offload triple. AFAICT, all the relevant test failures in the previous PR (#<!-- -->178664) came from tests involving `-Xoffload-compiler ‘-###’` in their RUN directives. I have reworked those tests in this PR. --- Patch is 40.83 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/179902.diff 15 Files Affected: - (modified) clang/docs/ReleaseNotes.rst (+7) - (modified) clang/lib/Basic/Targets.cpp (+2-2) - (modified) clang/lib/Basic/Targets/SPIR.h (+6-4) - (modified) clang/lib/Driver/Driver.cpp (+15-7) - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+1) - (modified) clang/lib/Driver/ToolChains/HIPSPV.cpp (+59-11) - (modified) clang/lib/Driver/ToolChains/HIPSPV.h (+5-2) - (added) clang/test/Driver/Inputs/hipspv/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc () - (modified) clang/test/Driver/hipspv-device-libs.hip (+1-1) - (modified) clang/test/Driver/hipspv-link-static-library.hip (+39-10) - (modified) clang/test/Driver/hipspv-pass-plugin.hip (+27-8) - (added) clang/test/Driver/hipspv-toolchain-rdc-separate.hip (+66) - (modified) clang/test/Driver/hipspv-toolchain-rdc.hip (+100-44) - (modified) clang/test/Driver/hipspv-toolchain.hip (+92-16) - (modified) clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp (+21-9) ``````````diff diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 7dc6881ed43e6..24d4e07ca68b3 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -52,6 +52,13 @@ AST Dumping Potentially Breaking Changes Clang Frontend Potentially Breaking Changes ------------------------------------------- +- HIPSPV toolchain: `--offload-targets=spirv{32,64}` option is + deprecated and will be removed when the new offload driver becomes + default. The replacement for the option is + `--offload-targets=spirv{32,64}-unknown-chipstar` when using the new + offload driver (`--offload-new-driver`). + + Clang Python Bindings Potentially Breaking Changes -------------------------------------------------- - Remove ``CompletionString.Availability``. No libclang interfaces returned instances of it. diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 263253918d965..919fb0703b7a4 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -680,13 +680,13 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple, return std::make_unique<SPIRVTargetInfo>(Triple, Opts); } case llvm::Triple::spirv32: { - if (os != llvm::Triple::UnknownOS || + if ((os != llvm::Triple::UnknownOS && os != llvm::Triple::ChipStar) || Triple.getEnvironment() != llvm::Triple::UnknownEnvironment) return nullptr; return std::make_unique<SPIRV32TargetInfo>(Triple, Opts); } case llvm::Triple::spirv64: { - if (os != llvm::Triple::UnknownOS || + if ((os != llvm::Triple::UnknownOS && os != llvm::Triple::ChipStar) || Triple.getEnvironment() != llvm::Triple::UnknownEnvironment) { if (os == llvm::Triple::OSType::AMDHSA) return std::make_unique<SPIRV64AMDGCNTargetInfo>(Triple, Opts); diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h index ea992b0e01dbe..eef9521c7434a 100644 --- a/clang/lib/Basic/Targets/SPIR.h +++ b/clang/lib/Basic/Targets/SPIR.h @@ -362,8 +362,9 @@ class LLVM_LIBRARY_VISIBILITY SPIRV32TargetInfo : public BaseSPIRVTargetInfo { : BaseSPIRVTargetInfo(Triple, Opts) { assert(Triple.getArch() == llvm::Triple::spirv32 && "Invalid architecture for 32-bit SPIR-V."); - assert(getTriple().getOS() == llvm::Triple::UnknownOS && - "32-bit SPIR-V target must use unknown OS"); + assert((getTriple().getOS() == llvm::Triple::UnknownOS || + getTriple().getOS() == llvm::Triple::ChipStar) && + "32-bit SPIR-V target must use unknown or chipstar OS"); assert(getTriple().getEnvironment() == llvm::Triple::UnknownEnvironment && "32-bit SPIR-V target must use unknown environment type"); PointerWidth = PointerAlign = 32; @@ -385,8 +386,9 @@ class LLVM_LIBRARY_VISIBILITY SPIRV64TargetInfo : public BaseSPIRVTargetInfo { : BaseSPIRVTargetInfo(Triple, Opts) { assert(Triple.getArch() == llvm::Triple::spirv64 && "Invalid architecture for 64-bit SPIR-V."); - assert(getTriple().getOS() == llvm::Triple::UnknownOS && - "64-bit SPIR-V target must use unknown OS"); + assert((getTriple().getOS() == llvm::Triple::UnknownOS || + getTriple().getOS() == llvm::Triple::ChipStar) && + "64-bit SPIR-V target must use unknown or chipstar OS"); assert(getTriple().getEnvironment() == llvm::Triple::UnknownEnvironment && "64-bit SPIR-V target must use unknown environment type"); PointerWidth = PointerAlign = 64; diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 5df1a3a25b8ab..5322fb399a404 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -4938,21 +4938,26 @@ Action *Driver::BuildOffloadingActions(Compilation &C, // Compiling HIP in device-only non-RDC mode requires linking each action // individually. for (Action *&A : DeviceActions) { - bool IsAMDGCNSPIRV = A->getOffloadingToolChain() && - A->getOffloadingToolChain()->getTriple().getOS() == - llvm::Triple::OSType::AMDHSA && - A->getOffloadingToolChain()->getTriple().isSPIRV(); + auto *OffloadTriple = A->getOffloadingToolChain() + ? &A->getOffloadingToolChain()->getTriple() + : nullptr; + bool IsHIPSPV = + OffloadTriple && OffloadTriple->isSPIRV() && + (OffloadTriple->getOS() == llvm::Triple::OSType::AMDHSA || + OffloadTriple->getOS() == llvm::Triple::OSType::ChipStar); bool UseSPIRVBackend = Args.hasFlag(options::OPT_use_spirv_backend, options::OPT_no_use_spirv_backend, /*Default=*/false); - // Special handling for the HIP SPIR-V toolchain in device-only. + // Special handling for the HIP SPIR-V toolchains in device-only. // The translator path has a linking step, whereas the SPIR-V backend path // does not to avoid any external dependency such as spirv-link. The // linking step is skipped for the SPIR-V backend path. - bool IsAMDGCNSPIRVWithBackend = IsAMDGCNSPIRV && UseSPIRVBackend; + bool IsAMDGCNSPIRVWithBackend = + IsHIPSPV && OffloadTriple->getOS() == llvm::Triple::OSType::AMDHSA && + UseSPIRVBackend; - if ((A->getType() != types::TY_Object && !IsAMDGCNSPIRV && + if ((A->getType() != types::TY_Object && !IsHIPSPV && A->getType() != types::TY_LTO_BC) || HIPRelocatableObj || !HIPNoRDC || !offloadDeviceOnly() || (IsAMDGCNSPIRVWithBackend && offloadDeviceOnly())) @@ -6961,6 +6966,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args, case llvm::Triple::ShaderModel: TC = std::make_unique<toolchains::HLSLToolChain>(*this, Target, Args); break; + case llvm::Triple::ChipStar: + TC = std::make_unique<toolchains::HIPSPVToolChain>(*this, Target, Args); + break; default: // Of these targets, Hexagon is the only one that might have // an OS of Linux, in which case it got handled above already. diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index fe006051e60f2..b31381d269171 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -9203,6 +9203,7 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, OPT_v, OPT_cuda_path_EQ, OPT_rocm_path_EQ, + OPT_hip_path_EQ, OPT_O_Group, OPT_g_Group, OPT_g_flags_Group, diff --git a/clang/lib/Driver/ToolChains/HIPSPV.cpp b/clang/lib/Driver/ToolChains/HIPSPV.cpp index 0d7311f2b569c..8bdb7ab042b2b 100644 --- a/clang/lib/Driver/ToolChains/HIPSPV.cpp +++ b/clang/lib/Driver/ToolChains/HIPSPV.cpp @@ -90,9 +90,27 @@ void HIPSPV::Linker::constructLinkAndEmitSpirvCommand( } // Emit SPIR-V binary. + llvm::opt::ArgStringList TrArgs; + auto T = getToolChain().getTriple(); + bool HasNoSubArch = T.getSubArch() == llvm::Triple::NoSubArch; + if (T.getOS() == llvm::Triple::ChipStar) { + // chipStar needs 1.2 for supporting warp-level primitivies via sub-group + // extensions. Strictly put we'd need 1.3 for the standard non-extension + // shuffle operations, but it's not supported by any backend driver of the + // chipStar. + if (HasNoSubArch) + TrArgs.push_back("--spirv-max-version=1.2"); + TrArgs.push_back("--spirv-ext=-all" + // Needed for experimental indirect call support. + ",+SPV_INTEL_function_pointers" + // Needed for shuffles below SPIR-V 1.3 + ",+SPV_INTEL_subgroups"); + } else { + if (HasNoSubArch) + TrArgs.push_back("--spirv-max-version=1.1"); + TrArgs.push_back("--spirv-ext=+all"); + } - llvm::opt::ArgStringList TrArgs{"--spirv-max-version=1.1", - "--spirv-ext=+all"}; InputInfo TrInput = InputInfo(types::TY_LLVM_BC, TempFile, ""); SPIRV::constructTranslateCommand(C, *this, JA, Output, TrInput, TrArgs); } @@ -116,7 +134,16 @@ void HIPSPV::Linker::ConstructJob(Compilation &C, const JobAction &JA, HIPSPVToolChain::HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple, const ToolChain &HostTC, const ArgList &Args) - : ToolChain(D, Triple, Args), HostTC(HostTC) { + : ToolChain(D, Triple, Args), HostTC(&HostTC) { + // Lookup binaries into the driver directory, this is used to + // discover the clang-offload-bundler executable. + getProgramPaths().push_back(getDriver().Dir); +} + +// Non-offloading toolchain. Primaly used by clang-offload-linker. +HIPSPVToolChain::HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple, + const ArgList &Args) + : ToolChain(D, Triple, Args), HostTC(nullptr) { // Lookup binaries into the driver directory, this is used to // discover the clang-offload-bundler executable. getProgramPaths().push_back(getDriver().Dir); @@ -125,7 +152,14 @@ HIPSPVToolChain::HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple, void HIPSPVToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, Action::OffloadKind DeviceOffloadingKind) const { - HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + + if (!HostTC) { + assert(DeviceOffloadingKind == Action::OFK_None && + "Need host toolchain for offloading!"); + return; + } + + HostTC->addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); assert(DeviceOffloadingKind == Action::OFK_HIP && "Only HIP offloading kinds are supported for GPUs."); @@ -156,27 +190,37 @@ Tool *HIPSPVToolChain::buildLinker() const { } void HIPSPVToolChain::addClangWarningOptions(ArgStringList &CC1Args) const { - HostTC.addClangWarningOptions(CC1Args); + if (HostTC) + HostTC->addClangWarningOptions(CC1Args); + ToolChain::addClangWarningOptions(CC1Args); } ToolChain::CXXStdlibType HIPSPVToolChain::GetCXXStdlibType(const ArgList &Args) const { - return HostTC.GetCXXStdlibType(Args); + if (HostTC) + return HostTC->GetCXXStdlibType(Args); + return ToolChain::GetCXXStdlibType(Args); } void HIPSPVToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, ArgStringList &CC1Args) const { - HostTC.AddClangSystemIncludeArgs(DriverArgs, CC1Args); + if (HostTC) + HostTC->AddClangSystemIncludeArgs(DriverArgs, CC1Args); + ToolChain::AddClangSystemIncludeArgs(DriverArgs, CC1Args); } void HIPSPVToolChain::AddClangCXXStdlibIncludeArgs( const ArgList &Args, ArgStringList &CC1Args) const { - HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args); + if (HostTC) + HostTC->AddClangCXXStdlibIncludeArgs(Args, CC1Args); + ToolChain::AddClangCXXStdlibIncludeArgs(Args, CC1Args); } void HIPSPVToolChain::AddIAMCUIncludeArgs(const ArgList &Args, ArgStringList &CC1Args) const { - HostTC.AddIAMCUIncludeArgs(Args, CC1Args); + if (HostTC) + HostTC->AddIAMCUIncludeArgs(Args, CC1Args); + ToolChain::AddIAMCUIncludeArgs(Args, CC1Args); } void HIPSPVToolChain::AddHIPIncludeArgs(const ArgList &DriverArgs, @@ -270,12 +314,16 @@ SanitizerMask HIPSPVToolChain::getSupportedSanitizers() const { // This behavior is necessary because the host and device toolchains // invocations often share the command line, so the device toolchain must // tolerate flags meant only for the host toolchain. - return HostTC.getSupportedSanitizers(); + if (HostTC) + return HostTC->getSupportedSanitizers(); + return ToolChain::getSupportedSanitizers(); } VersionTuple HIPSPVToolChain::computeMSVCVersion(const Driver *D, const ArgList &Args) const { - return HostTC.computeMSVCVersion(D, Args); + if (HostTC) + return HostTC->computeMSVCVersion(D, Args); + return ToolChain::computeMSVCVersion(D, Args); } void HIPSPVToolChain::adjustDebugInfoKind( diff --git a/clang/lib/Driver/ToolChains/HIPSPV.h b/clang/lib/Driver/ToolChains/HIPSPV.h index caf6924151446..068040ee4f491 100644 --- a/clang/lib/Driver/ToolChains/HIPSPV.h +++ b/clang/lib/Driver/ToolChains/HIPSPV.h @@ -47,9 +47,12 @@ class LLVM_LIBRARY_VISIBILITY HIPSPVToolChain final : public ToolChain { public: HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple, const ToolChain &HostTC, const llvm::opt::ArgList &Args); + HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple, + const llvm::opt::ArgList &Args); const llvm::Triple *getAuxTriple() const override { - return &HostTC.getTriple(); + assert(HostTC); + return &HostTC->getTriple(); } void @@ -90,7 +93,7 @@ class LLVM_LIBRARY_VISIBILITY HIPSPVToolChain final : public ToolChain { bool isPICDefaultForced() const override { return false; } bool SupportsProfiling() const override { return false; } - const ToolChain &HostTC; + const ToolChain *HostTC = nullptr; protected: Tool *buildLinker() const override; diff --git a/clang/test/Driver/Inputs/hipspv/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc b/clang/test/Driver/Inputs/hipspv/lib/hip-device-lib/hipspv-spirv64-unknown-chipstar.bc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/hipspv-device-libs.hip b/clang/test/Driver/hipspv-device-libs.hip index 9d6af54b10255..71bf0897e39dd 100644 --- a/clang/test/Driver/hipspv-device-libs.hip +++ b/clang/test/Driver/hipspv-device-libs.hip @@ -6,7 +6,7 @@ // Test --hip-device-lib-path // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \ -// RUN: --hip-path=%S/Inputs/hipspv \ +// RUN: --hip-path=%S/Inputs/hipspv \ // RUN: --hip-device-lib-path=%S/Inputs/hipspv-dev-lib %s \ // RUN: 2>&1 | FileCheck --check-prefixes=ALL,HIP-DEV-LIB-PATH %s diff --git a/clang/test/Driver/hipspv-link-static-library.hip b/clang/test/Driver/hipspv-link-static-library.hip index cf16236738c12..eb114ada49020 100644 --- a/clang/test/Driver/hipspv-link-static-library.hip +++ b/clang/test/Driver/hipspv-link-static-library.hip @@ -1,28 +1,57 @@ // Test HIPSPV static device library linking // REQUIRES: system-linux +// REQUIRES: x86-registered-target +// REQUIRES: spirv-registered-target // UNSUPPORTED: system-windows // Create a dummy archive to test SDL linking // RUN: rm -rf %t && mkdir %t -// RUN: touch %t/dummy.bc +// RUN: touch %t/dummy.bc // RUN: llvm-ar cr %t/libSDL.a %t/dummy.bc // Test that -l options are passed to llvm-link for --offload=spirv64 // RUN: %clang -### --target=x86_64-linux-gnu --offload=spirv64 \ // RUN: --hip-path=%S/Inputs/hipspv -nohipwrapperinc %s \ -// RUN: -L%t -lSDL \ -// RUN: 2>&1 | FileCheck -check-prefix=SDL-LINK %s +// RUN: --no-offload-new-driver -L%t -lSDL \ +// RUN: 2>&1 | FileCheck -check-prefixes=SDL %s -// Test that .a files are properly unbundled and passed to llvm-link +// Test that .a files are properly unbundled and passed to llvm-link // RUN: %clang -### --target=x86_64-linux-gnu --offload=spirv64 \ // RUN: --hip-path=%S/Inputs/hipspv -nohipwrapperinc %s \ -// RUN: %t/libSDL.a \ -// RUN: 2>&1 | FileCheck -check-prefix=SDL-ARCHIVE %s +// RUN: --no-offload-new-driver %t/libSDL.a \ +// RUN: 2>&1 | FileCheck -check-prefixes=SDL %s + +// RUN: %clang -cc1 %s -triple spirv64-unknown-chipstar -emit-llvm-bc -o %t/dev.bc +// RUN: llvm-offload-binary -o %t/dev.out \ +// RUN: --image=file=%t/dev.bc,kind=hip,triple=spirv64-unknown-chipstar,arch=generic +// RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -emit-obj -o %t/tu0.o \ +// RUN: -fembed-offload-object=%t/dev.out +// RUN: cp %t/tu0.o %t/tu1.o +// RUN: llvm-ar cr %t/libSDL2.a %t/tu1.o + +// RUN: %clang -### --target=x86_64-linux-gnu --offload-new-driver -fgpu-rdc \ +// RUN: -Xoffload-compiler-spirv64-unknown-chipstar \ +// RUN: --hip-path=%S/Inputs/hipspv -no-hip-rt %t/tu0.o %t/libSDL2.a \ +// RUN: 2>&1 | FileCheck -check-prefixes=SDL-NEW %s -DHIP_PATH=%S/Inputs/hipspv + +// RUN: clang-linker-wrapper --dry-run --host-triple=x86_64-unknown-linux-gnu \ +// RUN: --device-compiler=spirv64-unknown-chipstar=--hip-path=%S/Inputs/hipspv \ +// RUN: --linker-path=/usr/bin/ld -o a.out %t/tu0.o %t/libSDL2.a \ +// RUN: 2>&1 | FileCheck -check-prefixes=SDL-NEW-WRAPPER %s -DHIP_PATH=%S/Inputs/hipspv // Verify that the input files are added before the SDL files in llvm-link command // This tests the ordering fix to match HIPAMD behavior -// SDL-LINK: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" "-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles" -// SDL-LINK: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.bc" "[[SDL_A]]" +// SDL: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" "-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles" +// SDL: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.bc" "[[SDL_A]]" +// SDL-NEW: "{{.*}}clang-linker-wrapper" +// SDL-NEW-SAME: "--device-compiler=spirv64-unknown-chipstar=--hip-path=[[HIP_PATH]]" +// SDL-NEW-SAME: "{{.*}}/tu0.o" "{{.*}}/libSDL2.a" +// DELETE-SDL-NEW: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.o" "{{.*}}.o" + +// SDL-NEW-WRAPPER: clang{{.*}}" --no-default-config -o {{[^ ]*.img}} +// SDL-NEW-WRAPPER-SAME: {{[^ ]*.o}} {{[^ ]*.o}} +// SDL-NEW-WRAPPER-SAME: --hip-path=[[HIP_PATH]] -// SDL-ARCHIVE: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" "-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles" -// SDL-ARCHIVE: "{{.*}}llvm-link" "-o" "{{.*}}.bc" "{{.*}}.bc" "[[SDL_A]]" +// SDL: "{{.*}}opt" +// SDL-SAME: "-load-pass-plugin" {{".*/hipspv/lib/libLLVMHipSpvPasses.so"}} +// SDL-SAME: "-passes=hip-post-link-passes" diff --git a/clang/test/Driver/hipspv-pass-plugin.hip b/clang/test/Driver/hipspv-pass-plugin.hip index fc3c64b057352..3a0979ad6df01 100644 --- a/clang/test/Driver/hipspv-pass-plugin.hip +++ b/clang/test/Driver/hipspv-pass-plugin.hip @@ -1,20 +1,38 @@ // UNSUPPORTED: system-windows // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \ -// RUN: --hip-path=%S/Inputs/hipspv -nogpuinc %s \ -// RUN: 2>&1 | FileCheck --check-prefixes=FROM-HIP-PATH %s +// RUN: --no-offload-new-driver --hip-path=%S/Inputs/hipspv -nogpuinc %s \ +// RUN: 2>&1 | FileCheck --check-prefixes=ALL,FROM-HIP-PATH %s // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \ -// RUN: -nogpuinc -nogpulib --hipspv-pass-plugin=%S/Inputs/pass-plugin.so %s \ -// RUN: 2>&1 | FileCheck --check-prefixes=FROM-OPTION %s +// RUN: --no-offload-new-driver -nogpuinc -nogpulib --hipspv-pass-plugin=%S/Inputs/pass-plugin.so %s \ +// RUN: 2>&1 | FileCheck --check-prefixes=ALL,FROM-OPTION %s // RUN: not %clang -### --target=x86_64-linux-gnu --offload=spirv64 \ -// RUN: -nogpuinc -nogpulib --hipspv-pass-plugin=foo.so %s \ -// RUN: 2>&1 | FileCheck --check-prefixes=FROM-OPTION-INVALID %s +// RUN: --no-offload-new-driver -nogpuinc -nogpulib --hipspv-pass-plugin=foo.so %s \ +// RUN: 2>&1 | FileCheck --check-prefixes=ALL,FROM-OPTION-INVALID %s // RUN: %clang -### -target x86_64-linux-gnu --offload=spirv64 \ -// RUN: -nogpuinc -nogpulib %s \ -// RUN: 2>&1 | FileCheck --check-prefixes=NO-PLUGIN %s +// RUN: --no-offload-new-driver -nogpuinc -nogpulib %s \ +// RUN: 2>&1 | FileCheck --check-prefixes=ALL,NO-PLUGIN %s + +// Run commands for the new offload driver: + +// RUN: touch %t.dummy.o +// RUN: %clang -### --no-default-config -o /dev/null --target=spirv64-unknown-chipstar \ +// RUN: %t.dummy.o --hip-path=%S/Inputs/hipspv \ +// RUN: 2>&1 | FileCheck %s --check-prefixes=ALL,FROM-HIP-PATH + +// RUN: %clang -### --no-default-config -o /dev/null --target=spirv64-unknown-chipstar \ +// RUN: %t.dummy.o --hipspv-pass-plugin=%S/Inputs/pass-plugin.so \ +// RUN: 2>&1 | FileCheck %s --check-prefixes=ALL,FROM-OPTION + +// RUN: not %clang -### --no-default-config -o /dev/null --target=spirv64-unknown-chipstar \ +// RUN: %t.dummy.o --hipspv-pass-plugin=foo.so \ +// RUN: 2>&1 | FileCheck %s --check-prefixes=ALL,FROM-OPTION-I... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/179902 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
