diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index dff22182fbc0c..521afec97a4ba 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -4995,9 +4995,8 @@ class OffloadingActionBuilder final { ActionList CAList; CAList.push_back(A); ActionList DeviceLinkActions; - appendSYCLDeviceLink(CAList, TargetInfo.TC, DA, DeviceLinkActions, - TargetInfo.BoundArch, - /*AddOffloadAction=*/true); + appendSYCLDeviceLink(CAList, TargetInfo.TC, DeviceLinkActions, + TargetInfo.BoundArch, /*SkipWrapper=*/false); // The list of actions generated from appendSYCLDeviceLink is kept // in DeviceLinkActions. Instead of adding the dependency on the // compiled device file, add the dependency against the compiled @@ -5045,69 +5044,18 @@ class OffloadingActionBuilder final { if (CompileDeviceOnly && !SYCLDeviceActions.empty()) { for (auto SDA : SYCLDeviceActions) SYCLLinkBinaryList.push_back(SDA); - if (WrapDeviceOnlyBinary) { - // -fsycl-link behavior does the following to the unbundled device - // binaries: - // 1) Link them together using llvm-link - // 2) Pass the linked binary through sycl-post-link - // 3) Translate final .bc file to .spv - // 4) Wrap the binary with the offload wrapper which can be used - // by any compilation link step. - auto *DeviceLinkAction = C.MakeAction( - SYCLLinkBinaryList, types::TY_Image); - ActionList FullSYCLLinkBinaryList; - bool SYCLDeviceLibLinked = false; - FullSYCLLinkBinaryList.push_back(DeviceLinkAction); - // If used without the FPGA target, -fsycl-link is used to wrap - // device objects for future host link. Device libraries should - // be linked by default to resolve any undefined reference. - const auto *TC = ToolChains.front(); - llvm::Triple TT(TC->getTriple()); - if (TT.getSubArch() != llvm::Triple::SPIRSubArch_fpga) { - SYCLDeviceLibLinked = - addSYCLDeviceLibs(TC, FullSYCLLinkBinaryList, true, - C.getDefaultToolChain() - .getTriple() - .isWindowsMSVCEnvironment()); - } - - Action *FullDeviceLinkAction = nullptr; - if (SYCLDeviceLibLinked) - FullDeviceLinkAction = C.MakeAction( - FullSYCLLinkBinaryList, types::TY_LLVM_BC); - else - FullDeviceLinkAction = DeviceLinkAction; - auto *PostLinkAction = C.MakeAction( - FullDeviceLinkAction, types::TY_LLVM_BC, - types::TY_Tempfiletable); - PostLinkAction->setRTSetsSpecConstants(!TT.isSPIRAOT()); - auto *ExtractIRFilesAction = C.MakeAction( - PostLinkAction, types::TY_Tempfilelist, types::TY_Tempfilelist); - // single column w/o title fits TY_Tempfilelist format - ExtractIRFilesAction->addExtractColumnTform( - FileTableTformJobAction::COL_CODE, false /*drop titles*/); - auto *TranslateAction = C.MakeAction( - ExtractIRFilesAction, types::TY_Tempfilelist); - - ActionList TformInputs{PostLinkAction, TranslateAction}; - auto *ReplaceFilesAction = C.MakeAction( - TformInputs, types::TY_Tempfiletable, types::TY_Tempfiletable); - ReplaceFilesAction->addReplaceColumnTform( - FileTableTformJobAction::COL_CODE, - FileTableTformJobAction::COL_CODE); - - SYCLLinkBinary = C.MakeAction( - ReplaceFilesAction, types::TY_Object); - } else { - auto *Link = C.MakeAction(SYCLLinkBinaryList, - types::TY_Image); - SYCLLinkBinary = C.MakeAction( - Link, types::TY_Image); - } - // Remove the SYCL actions as they are already connected to an host // action or fat binary. SYCLDeviceActions.clear(); + + for (auto SDA : SYCLDeviceActions) + SYCLLinkBinaryList.push_back(SDA); + if (WrapDeviceOnlyBinary) + return ABRT_Success; + auto *Link = + C.MakeAction(SYCLLinkBinaryList, types::TY_Image); + SYCLLinkBinary = + C.MakeAction(Link, types::TY_Image); // We avoid creating host action in device-only mode. return ABRT_Ignore_Host; } @@ -5203,6 +5151,52 @@ class OffloadingActionBuilder final { return ABRT_Success; } + void appendLinkDeviceActions(ActionList &AL) override { + if (DeviceLinkerInputs.size() == 0) + return; + + for (const auto &LinkInputEnum : enumerate(DeviceLinkerInputs)) { + auto &LI = LinkInputEnum.value(); + int Index = LinkInputEnum.index(); + const ToolChain *TC = SYCLTargetInfoList[Index].TC; + const char *BoundArch = SYCLTargetInfoList[Index].BoundArch; + + auto TripleIt = llvm::find_if(SYCLTripleList, [&](auto &SYCLTriple) { + return SYCLTriple == TC->getTriple(); + }); + if (TripleIt == SYCLTripleList.end()) { + // If the toolchain's triple is absent in this "main" triple + // collection, this means it was created specifically for one of + // the SYCL AOT inputs. Those will be handled separately. + continue; + } + if (LI.empty()) + // Current list is empty, nothing to process. + continue; + // Do not add the wrapper when performing -fsycl-link. + // TODO: Update when wrappers are not added to be more general, + // improving the number of wrapper calls occuring. For now, only + // restrict the wrappers from being inlined with each device link + // when performing -fsycl-link behaviors. + appendSYCLDeviceLink(LI, TC, AL, BoundArch, + /*SkipWrapper=*/WrapDeviceOnlyBinary, + /*AddOffloadAction=*/true); + } + DeviceLinkerInputs.clear(); + } + + Action *appendLinkHostActions(ActionList &AL) override { + // Only add wrapping actions when performing -fsycl-link + if (!WrapDeviceOnlyBinary) + return nullptr; + + // Create wrapper bitcode from the result of device link actions and + // compile it to an object which will be added to the host link command. + auto *BC = C.MakeAction(AL, types::TY_LLVM_BC); + auto *ASM = C.MakeAction(BC, types::TY_PP_Asm); + return C.MakeAction(ASM, types::TY_Object); + } + // Actions that can only be appended after all Inputs have been processed // occur here. Not all offload actions are against single files. void appendTopLevelLinkAction(ActionList &AL) override { @@ -5274,10 +5268,14 @@ class OffloadingActionBuilder final { // created device linking actions are performed against. The // DeviceLinkActions is used to hold the actions generated to be added to // the toolchain. + // TODO: This function takes a list of items to work against. Update this + // to work one action at a time, enabling the ability to pull out the + // wrapping step to be performed solely on the host side of the toolchain. + // Any FPGA specific behaviors should also be specifically scrutinized + // to better compartmentalize that aspect of the compilation. void appendSYCLDeviceLink(const ActionList &ListIndex, const ToolChain *TC, - OffloadAction::DeviceDependences &DA, ActionList &DeviceLinkActions, - const char *BoundArch, + const char *BoundArch, bool SkipWrapper, bool AddOffloadAction = false) { auto addDeps = [&](Action *A, const ToolChain *TC, const char *BoundArch) { @@ -5286,9 +5284,8 @@ class OffloadingActionBuilder final { Deps.add(*A, *TC, BoundArch, Action::OFK_SYCL); DeviceLinkActions.push_back( C.MakeAction(Deps, A->getType())); - } else { - DA.add(*A, *TC, BoundArch, Action::OFK_SYCL); - } + } else + DeviceLinkActions.push_back(A); }; // List of device specific libraries to be fed into llvm-link. @@ -5416,9 +5413,9 @@ class OffloadingActionBuilder final { Action *CompiledDeviceAction = C.MakeAction(WrapperItems, types::TY_Object); - addDeps(CompiledDeviceAction, TC, nullptr); + addDeps(CompiledDeviceAction, TC, BoundArch); } - addDeps(DeviceAction, TC, nullptr); + addDeps(DeviceAction, TC, BoundArch); } } } @@ -5643,10 +5640,10 @@ class OffloadingActionBuilder final { FullDeviceLinkAction, types::TY_PP_Asm); auto *AsmAct = C.MakeAction(BackendAct, types::TY_Object); - DA.add(*AsmAct, *TC, BoundArch, Action::OFK_SYCL); + addDeps(AsmAct, TC, BoundArch); auto *DeviceWrappingAction = C.MakeAction( PostLinkAction, types::TY_Object); - DA.add(*DeviceWrappingAction, *TC, BoundArch, Action::OFK_SYCL); + addDeps(DeviceWrappingAction, TC, BoundArch); continue; } if ((IsNVPTX || IsAMDGCN) && @@ -5767,6 +5764,13 @@ class OffloadingActionBuilder final { FileTableTformJobAction::COL_CODE); WrapperInputs.push_back(ReplaceFilesAction); } + if (SkipWrapper) { + // Wrapper step not requested. + withBoundArchForToolChain(TC, [&](const char *BoundArch) { + addDeps(WrapperInputs.front(), TC, BoundArch); + }); + continue; + } // After the Link, wrap the files before the final host link // Add the unbundled wrapped AOC device binary to the wrapper @@ -5897,7 +5901,6 @@ class OffloadingActionBuilder final { auto *SYCLDeviceLibsDependenciesAction = C.MakeAction( Dep, SYCLDeviceLibsUnbundleAction->getType()); - DeviceLinkObjects.push_back(SYCLDeviceLibsDependenciesAction); if (!LibLocSelected) LibLocSelected = !LibLocSelected; @@ -5976,31 +5979,6 @@ class OffloadingActionBuilder final { } void appendLinkDependences(OffloadAction::DeviceDependences &DA) override { - // DeviceLinkerInputs holds binaries per ToolChain (TC) / bound-arch pair - // The following will loop link and post process for each TC / bound-arch - // to produce a final binary. - // They will be bundled per TC before being sent to the Offload Wrapper. - for (const auto &LinkInputEnum : enumerate(DeviceLinkerInputs)) { - auto &LI = LinkInputEnum.value(); - int Index = LinkInputEnum.index(); - const ToolChain *TC = SYCLTargetInfoList[Index].TC; - const char *BoundArch = SYCLTargetInfoList[Index].BoundArch; - - auto TripleIt = llvm::find_if(SYCLTripleList, [&](auto &SYCLTriple) { - return SYCLTriple == TC->getTriple(); - }); - if (TripleIt == SYCLTripleList.end()) { - // If the toolchain's triple is absent in this "main" triple - // collection, this means it was created specifically for one of - // the SYCL AOT inputs. Those will be handled separately. - continue; - } - if (LI.empty()) - // Current list is empty, nothing to process. - continue; - ActionList AL; - appendSYCLDeviceLink(LI, TC, DA, AL, BoundArch); - } for (auto &SAI : SYCLAOTInputs) { // Extract binary file name std::string FN(SAI.second); @@ -6279,9 +6257,8 @@ class OffloadingActionBuilder final { if (ToolChains.empty()) return false; - Arg *SYCLLinkTargets = Args.getLastArg( - options::OPT_fsycl_link_targets_EQ); - WrapDeviceOnlyBinary = Args.hasArg(options::OPT_fsycl_link_EQ); + Arg *SYCLLinkTargets = + Args.getLastArg(options::OPT_fsycl_link_targets_EQ); auto *DeviceCodeSplitArg = Args.getLastArg(options::OPT_fsycl_device_code_split_EQ); // -fsycl-device-code-split is an alias to @@ -6449,10 +6426,11 @@ class OffloadingActionBuilder final { SYCLfpgaTriple = true; } + WrapDeviceOnlyBinary = + Args.hasArg(options::OPT_fsycl_link_EQ) && !SYCLfpgaTriple; // Device only compilation for -fsycl-link (no FPGA) and // -fsycl-link-targets - CompileDeviceOnly = - (SYCLLinkTargets || (WrapDeviceOnlyBinary && !SYCLfpgaTriple)); + CompileDeviceOnly = (SYCLLinkTargets || WrapDeviceOnlyBinary); // Set the FPGA output type based on command line (-fsycl-link). if (auto *A = C.getInputArgs().getLastArg(options::OPT_fsycl_link_EQ)) { @@ -6772,6 +6750,9 @@ class OffloadingActionBuilder final { return false; if (HasFPGATarget && !updateInputForFPGA(A, InputArg, Args)) return false; + // FIXME - unbundling action is being split into two different actions + // when unbundling objects. One action for the host, the other for the + // device. auto UnbundlingHostAction = C.MakeAction( A, (HasSPIRTarget && HostAction->getType() == types::TY_Archive) ? types::TY_Tempfilelist @@ -6810,6 +6791,7 @@ class OffloadingActionBuilder final { // For unbundling of an FPGA AOCX binary, we want to link with the original // FPGA device archive. if ((OffloadKind == Action::OFK_None && CanUseBundler) || + (Args.hasArg(options::OPT_fsycl_link_EQ) && !HasFPGATarget) || (HasFPGATarget && ((Args.hasArg(options::OPT_fsycl_link_EQ) && HostAction->getType() == types::TY_Object) || HostAction->getType() == types::TY_FPGA_AOCX))) @@ -6912,6 +6894,29 @@ class OffloadingActionBuilder final { } } + void makeHostLinkDeviceOnlyAction(ActionList &Inputs) { + // Build a list of device linking actions. + ActionList DeviceAL; + appendDeviceLinkActions(DeviceAL); + if (DeviceAL.empty()) + return; + + // Let builders add host linking actions. + Action *HA = nullptr; + for (DeviceActionBuilder *SB : SpecializedBuilders) { + if (!SB->isValid()) + continue; + HA = SB->appendLinkHostActions(DeviceAL); + if (!HA) + continue; + // This created host action has no originating input argument, therefore + // needs to set its offloading kind directly. + HA->propagateHostOffloadInfo(SB->getAssociatedOffloadKind(), + /*BoundArch=*/nullptr); + Inputs.push_back(HA); + } + } + void makeHostLinkAction(ActionList &LinkerInputs) { bool IsCUinSYCL = false; @@ -6950,6 +6955,14 @@ class OffloadingActionBuilder final { HA->propagateHostOffloadInfo(SB->getAssociatedOffloadKind(), /*BoundArch=*/nullptr); LinkerInputs.push_back(HA); + } else { + // Nothing appended to create a singular input, so add each device + // individually to the inputs. + for (auto &DeviceAction : DeviceAL) { + DeviceAction->propagateHostOffloadInfo(SB->getAssociatedOffloadKind(), + /*BoundArch=*/nullptr); + LinkerInputs.push_back(DeviceAction); + } } } } @@ -7349,6 +7362,18 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args, // Queue linker inputs. if (Phase == phases::Link) { assert(Phase == PL.back() && "linking must be final compilation step."); + + // When performing -fsycl-link the current inputs are not expected to + // be passed to the final host link step. Instead, take these inputs + // and redirect them to the associated wrapping step to create the + // final object. + if (C.getInputArgs().hasArg(options::OPT_fsycl_link_EQ) && + !Args.hasArg(options::OPT_fintelfpga)) { + DeviceAOTLinkerInputs.push_back(Current); + Current = nullptr; + break; + } + // We don't need to generate additional link commands if emitting AMD // bitcode or compiling only for the offload device if (!(C.getInputArgs().hasArg(options::OPT_hip_link) && @@ -7454,7 +7479,11 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args, // Only wrap the object with -fsycl-link=early auto *BC = C.MakeAction(LI, types::TY_LLVM_BC); auto *ASM = C.MakeAction(BC, types::TY_PP_Asm); - LI = C.MakeAction(ASM, types::TY_Object); + auto *OBJ = C.MakeAction(ASM, types::TY_Object); + OffloadAction::HostDependence HDep( + *OBJ, *C.getSingleOffloadToolChain(), + /*BoundArch=*/nullptr, Action::OFK_SYCL); + LI = C.MakeAction(HDep); } }; if (auto *IA = dyn_cast(LI)) { @@ -7470,9 +7499,8 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args, continue; wrapObject(); } - } else { + } else wrapObject(); - } if (UnbundlerInput && !PL.empty()) { if (auto *IA = dyn_cast(UnbundlerInput)) { std::string FileName = IA->getInputArg().getAsString(Args); @@ -7485,12 +7513,23 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args, } // Add a link action if necessary. + Arg *FinalPhaseArg; + if (!UseNewOffloadingDriver && + getFinalPhase(Args, &FinalPhaseArg) == phases::Link) { + if (LinkerInputs.empty() && DeviceAOTLinkerInputs.empty()) + OffloadBuilder->appendDeviceLinkActions(Actions); - if (LinkerInputs.empty()) { - Arg *FinalPhaseArg; - if (getFinalPhase(Args, &FinalPhaseArg) == phases::Link) - if (!UseNewOffloadingDriver) - OffloadBuilder->appendDeviceLinkActions(Actions); + if (!DeviceAOTLinkerInputs.empty() && + Args.hasArg(options::OPT_fsycl_link_EQ) && + !Args.hasArg(options::OPT_fintelfpga)) { + ActionList LAList; + OffloadBuilder->makeHostLinkDeviceOnlyAction(LAList); + if (!LAList.empty()) { + Action *LA = LAList.front(); + LA = OffloadBuilder->processHostLinkAction(LA); + Actions.push_back(LA); + } + } } if (!LinkerInputs.empty()) { @@ -8961,7 +9000,6 @@ InputInfoList Driver::BuildJobsForActionNoCache( InputInfo CurI; bool IsFPGAObjLink = (JA->getType() == types::TY_Object && - EffectiveTriple.getSubArch() == llvm::Triple::SPIRSubArch_fpga && C.getInputArgs().hasArg(options::OPT_fsycl_link_EQ)); if (C.getDriver().getOffloadStaticLibSeen() && (JA->getType() == types::TY_Archive || diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 6c87adc696051..b93f06fe42e1d 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -9747,6 +9747,53 @@ void OffloadBundler::ConstructJobMultipleOutputs( // Begin OffloadWrapper +static void addRunTimeWrapperOpts(Compilation &C, + Action::OffloadKind DeviceOffloadKind, + const llvm::opt::ArgList &TCArgs, + ArgStringList &CmdArgs, + const ToolChain &TC, + const JobAction &JA) { + // Grab any Target specific options that need to be added to the wrapper + // information. + ArgStringList BuildArgs; + auto createArgString = [&](const char *Opt) { + if (BuildArgs.empty()) + return; + SmallString<128> AL; + for (const char *A : BuildArgs) { + if (AL.empty()) { + AL = A; + continue; + } + AL += " "; + AL += A; + } + CmdArgs.push_back(C.getArgs().MakeArgString(Twine(Opt) + AL)); + }; + const toolchains::SYCLToolChain &SYCLTC = + static_cast(TC); + llvm::Triple TT = SYCLTC.getTriple(); + // TODO: Consider separating the mechanisms for: + // - passing standard-defined options to AOT/JIT compilation steps; + // - passing AOT-compiler specific options. + // This would allow retaining standard language options in the + // image descriptor, while excluding tool-specific options that + // have been known to confuse RT implementations. + if (TT.getSubArch() == llvm::Triple::NoSubArch) { + // Only store compile/link opts in the image descriptor for the SPIR-V + // target; AOT compilation has already been performed otherwise. + const ArgList &Args = C.getArgsForToolChain(nullptr, StringRef(), + DeviceOffloadKind); + const ToolChain *HostTC = C.getSingleOffloadToolChain(); + SYCLTC.AddImpliedTargetArgs(TT, Args, BuildArgs, JA, *HostTC); + SYCLTC.TranslateBackendTargetArgs(TT, Args, BuildArgs); + createArgString("-compile-opts="); + BuildArgs.clear(); + SYCLTC.TranslateLinkerTargetArgs(TT, Args, BuildArgs); + createArgString("-link-opts="); + } +} + void OffloadWrapper::ConstructJob(Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, @@ -9792,6 +9839,9 @@ void OffloadWrapper::ConstructJob(Compilation &C, const JobAction &JA, if (A->getValue() == StringRef("image")) WrapperArgs.push_back(C.getArgs().MakeArgString("--emit-reg-funcs=0")); } + addRunTimeWrapperOpts(C, OffloadingKind, TCArgs, WrapperArgs, + getToolChain(), JA); + // When wrapping an FPGA device binary, we need to be sure to apply the // appropriate triple that corresponds (fpga_aocr-intel-) // to the target triple setting. @@ -9807,42 +9857,8 @@ void OffloadWrapper::ConstructJob(Compilation &C, const JobAction &JA, TT.setVendorName("intel"); TargetTripleOpt = TT.str(); } - // Grab any Target specific options that need to be added to the wrapper - // information. - ArgStringList BuildArgs; - auto createArgString = [&](const char *Opt) { - if (BuildArgs.empty()) - return; - SmallString<128> AL; - for (const char *A : BuildArgs) { - if (AL.empty()) { - AL = A; - continue; - } - AL += " "; - AL += A; - } - WrapperArgs.push_back(C.getArgs().MakeArgString(Twine(Opt) + AL)); - }; const toolchains::SYCLToolChain &TC = static_cast(getToolChain()); - // TODO: Consider separating the mechanisms for: - // - passing standard-defined options to AOT/JIT compilation steps; - // - passing AOT-compiler specific options. - // This would allow retaining standard language options in the - // image descriptor, while excluding tool-specific options that - // have been known to confuse RT implementations. - if (TC.getTriple().getSubArch() == llvm::Triple::NoSubArch) { - // Only store compile/link opts in the image descriptor for the SPIR-V - // target; AOT compilation has already been performed otherwise. - const ToolChain *HostTC = C.getSingleOffloadToolChain(); - TC.AddImpliedTargetArgs(TT, TCArgs, BuildArgs, JA, *HostTC); - TC.TranslateBackendTargetArgs(TT, TCArgs, BuildArgs); - createArgString("-compile-opts="); - BuildArgs.clear(); - TC.TranslateLinkerTargetArgs(TT, TCArgs, BuildArgs); - createArgString("-link-opts="); - } bool IsEmbeddedIR = cast(JA).isEmbeddedIR(); if (IsEmbeddedIR) { // When the offload-wrapper is called to embed LLVM IR, add a prefix to @@ -9984,8 +10000,18 @@ void OffloadWrapper::ConstructJob(Compilation &C, const JobAction &JA, // And add it to the offload targets. CmdArgs.push_back(C.getArgs().MakeArgString( Twine("-kind=") + Action::GetOffloadKindName(DeviceKind))); - CmdArgs.push_back(TCArgs.MakeArgString(Twine("-target=") + - DeviceTC->getTriple().normalize())); + std::string TargetTripleOpt = DeviceTC->getTriple().normalize(); + // SYCL toolchain target only uses the arch name. + if (DeviceKind == Action::OFK_SYCL) + TargetTripleOpt = DeviceTC->getTriple().getArchName(); + CmdArgs.push_back( + TCArgs.MakeArgString(Twine("-target=") + TargetTripleOpt)); + addRunTimeWrapperOpts(C, DeviceKind, TCArgs, CmdArgs, *DeviceTC, JA); + + if (Inputs[I].getType() == types::TY_Tempfiletable || + Inputs[I].getType() == types::TY_Tempfilelist) + // wrapper actual input files are passed via the batch job file table: + CmdArgs.push_back(C.getArgs().MakeArgString("-batch")); // Add input. assert(Inputs[I].isFilename() && "Invalid input."); diff --git a/clang/test/Driver/sycl-bfloat16-lib-win.cpp b/clang/test/Driver/sycl-bfloat16-lib-win.cpp index a09c5b9098988..9fcd1fb8a572f 100755 --- a/clang/test/Driver/sycl-bfloat16-lib-win.cpp +++ b/clang/test/Driver/sycl-bfloat16-lib-win.cpp @@ -67,255 +67,20 @@ // RUN: --sysroot=%S/Inputs/SYCL -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=BFLOAT16-FALLBACK-FALLBACK -// BFLOAT16: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-{{fallback|native}}-bfloat16.obj" "-output={{.*}}libsycl-{{fallback|native}}-{{.*}}.o" "-unbundle" +// BFLOAT16: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-{{fallback|native}}-bfloat16.obj" "-output={{.*}}libsycl-{{fallback|native}}-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.obj" -// BFLOAT16-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" -// BFLOAT16-NONE-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.obj" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.obj" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.obj" "-output={{.*}}libsycl-itt-stubs-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: sycl-post-link{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: llvm-foreach{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: llc{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: clang-16{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" +// BFLOAT16-NONE-NATIVE-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}-bfloat16.obj" // BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.obj" -// BFLOAT16-NONE-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.obj" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.obj" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.obj" "-output={{.*}}libsycl-itt-stubs-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: sycl-post-link{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: llvm-foreach{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: llc{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: clang-16{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" +// BFLOAT16-NONE-FALLBACK-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}-bfloat16.obj" +// BFLOAT16-NONE-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" -// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.obj" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.obj" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.obj" "-output={{.*}}libsycl-itt-stubs-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: sycl-post-link{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llc{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-16{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.obj" +// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.obj" "-unbundle" +// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.obj" -// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.obj" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.obj" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.obj" "-output={{.*}}libsycl-itt-stubs-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: sycl-post-link{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llc{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-16{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-mscv-math-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.obj" "-output={{.*}}libsycl-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.obj" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.obj" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" +// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.obj" "-unbundle" +// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" diff --git a/clang/test/Driver/sycl-bfloat16-lib.cpp b/clang/test/Driver/sycl-bfloat16-lib.cpp index 6b1cedc392341..b114270777761 100755 --- a/clang/test/Driver/sycl-bfloat16-lib.cpp +++ b/clang/test/Driver/sycl-bfloat16-lib.cpp @@ -66,255 +66,20 @@ // RUN: --sysroot=%S/Inputs/SYCL -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=BFLOAT16-FALLBACK-FALLBACK -// BFLOAT16: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" // BFLOAT16-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-{{fallback|native}}-bfloat16.o" "-output={{.*}}libsycl-{{fallback|native}}-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.o" +// BFLOAT16-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.o" -// BFLOAT16-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" +// BFLOAT16-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-{{spir64_gen-|spir64-}}unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" -// BFLOAT16-NONE-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.o" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.o" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.o" "-output={{.*}}libsycl-itt-stubs-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: sycl-post-link{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: llvm-foreach{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: llc{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: clang{{.*}} -// BFLOAT16-NONE-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.o" +// BFLOAT16-NONE-NATIVE-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}-bfloat16.o" +// BFLOAT16-NONE-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.o" -// BFLOAT16-NONE-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.o" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.o" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.o" "-output={{.*}}libsycl-itt-stubs-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: sycl-post-link{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: llvm-foreach{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: llc{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: clang{{.*}} -// BFLOAT16-NONE-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-NONE-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-NONE-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" +// BFLOAT16-NONE-FALLBACK-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}-bfloat16.o" +// BFLOAT16-NONE-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" -// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.o" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.o" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.o" "-output={{.*}}libsycl-itt-stubs-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: sycl-post-link{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llc{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang{{.*}} -// BFLOAT16-FALLBACK-NATIVE-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.o" +// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.o" "-unbundle" +// BFLOAT16-FALLBACK-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.o" -// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-user-wrappers.o" "-output={{.*}}libsycl-itt-user-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-compiler-wrappers.o" "-output={{.*}}libsycl-itt-compiler-wrappers-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-itt-stubs.o" "-output={{.*}}libsycl-itt-stubs-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: sycl-post-link{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-foreach{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: file-table-tform{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-wrapper{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llc{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang{{.*}} -// BFLOAT16-FALLBACK-FALLBACK-NEXT: llvm-link{{.*}} -// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-bf16.o" "-output={{.*}}libsycl-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" -// BFLOAT16-FALLBACK-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" +// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_x86_64-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" "-output={{.*}}libsycl-fallback-bfloat16-{{.*}}.o" "-unbundle" +// BFLOAT16-FALLBACK-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" diff --git a/clang/test/Driver/sycl-cuda-tu-offload.cu b/clang/test/Driver/sycl-cuda-tu-offload.cu index e0fa92960b9b5..12006ff843393 100644 --- a/clang/test/Driver/sycl-cuda-tu-offload.cu +++ b/clang/test/Driver/sycl-cuda-tu-offload.cu @@ -50,8 +50,6 @@ // DEFAULT-PHASES2: +- 16: offload, "host-cuda-sycl (x86_64-unknown-linux-gnu)" {7}, "device-cuda (nvptx64-nvidia-cuda)" {15}, ir // DEFAULT-PHASES2: +- 17: backend, {16}, assembler, (host-cuda-sycl) // DEFAULT-PHASES2: +- 18: assembler, {17}, object, (host-cuda-sycl) -// DEFAULT-PHASES2: +- 19: offload, "host-cuda-sycl (x86_64-unknown-linux-gnu)" {18}, object -// DEFAULT-PHASES2: +- 20: linker, {19}, image, (host-cuda-sycl) -// DEFAULT-PHASES2: | |- 21: offload, "device-cuda (nvptx64-nvidia-cuda:sm_80)" {10}, ir -// DEFAULT-PHASES2: | +- 22: linker, {5, 21}, ir, (device-sycl, sm_80) -// DEFAULT-PHASES2: {{.*}}: offload, "host-cuda-sycl (x86_64-unknown-linux-gnu)" {20}, "device-sycl (nvptx64-nvidia-cuda:sm_80)" {{{.*}}}, image +// DEFAULT-PHASES2: +- 19: offload, "host-cuda-sycl (x86_64-unknown-linux-gnu)" {18}, object +// DEFAULT-PHASES2: | |- 20: offload, "device-cuda (nvptx64-nvidia-cuda:sm_80)" {10}, ir +// DEFAULT-PHASES2: | +- 21: linker, {5, 20}, ir, (device-sycl, sm_80) diff --git a/clang/test/Driver/sycl-device-lib.cpp b/clang/test/Driver/sycl-device-lib.cpp index 325505bad4556..d206f59606aa9 100644 --- a/clang/test/Driver/sycl-device-lib.cpp +++ b/clang/test/Driver/sycl-device-lib.cpp @@ -122,7 +122,8 @@ // RUN: %clangxx -fsycl %s -fno-sycl-device-lib=libc,all,libm-fp64,libm-fp32 --sysroot=%S/Inputs/SYCL -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_UNBUNDLE_NO_DEVICE_LIB // SYCL_DEVICE_LIB_UNBUNDLE_NO_DEVICE_LIB: {{.*}}clang{{.*}} "-cc1" "-triple" "spir64-unknown-unknown" -// SYCL_DEVICE_LIB_UNBUNDLE_NO_DEVICE_LIB-NEXT: {{.*}}llvm-link{{.*}} {{.*}} "--suppress-warnings" +// SYCL_DEVICE_LIB_UNBUNDLE_NO_DEVICE_LIB-NOT: libsycl-cmath +// SYCL_DEVICE_LIB_UNBUNDLE_NO_DEVICE_LIB: {{.*}}llvm-link{{.*}} {{.*}} "--suppress-warnings" /// ########################################################################### @@ -249,5 +250,5 @@ // SYCL_DEVICE_LIB_SANITIZER-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-sanitizer.o" "-output={{.*}}libsycl-sanitizer-{{.*}}.o" "-unbundle" // SYCL_DEVICE_ASAN_MACRO: "-cc1" // SYCL_DEVICE_ASAN_MACRO-SAME: "USE_SYCL_DEVICE_ASAN" -// SYCL_DEVICE_ASAN_MACRO-NEXT: llvm-link{{.*}} +// SYCL_DEVICE_ASAN_MACRO: llvm-link{{.*}} // SYCL_DEVICE_ASAN_MACRO: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-sanitizer.o" "-output={{.*}}libsycl-sanitizer-{{.*}}.o" "-unbundle" diff --git a/clang/test/Driver/sycl-early-device-link.cpp b/clang/test/Driver/sycl-early-device-link.cpp index f3ab4c8f016f0..eecd27dfa885b 100644 --- a/clang/test/Driver/sycl-early-device-link.cpp +++ b/clang/test/Driver/sycl-early-device-link.cpp @@ -47,15 +47,14 @@ // CREATE_IMAGE_PHASES: 18: file-table-tform, {14, 17}, tempfiletable, (device-sycl) // CREATE_IMAGE_PHASES: 19: clang-offload-wrapper, {18}, object, (device-sycl) // CREATE_IMAGE_PHASES: 20: offload, "device-sycl (spir64_gen-unknown-unknown)" {19}, object -// CREATE_IMAGE_PHASES: 21: offload, "device-sycl (spir64_gen-unknown-unknown)" {20}, object -// CREATE_IMAGE_PHASES: 22: input, "[[INPUT]]", c++, (host-sycl) -// CREATE_IMAGE_PHASES: 23: append-footer, {22}, c++, (host-sycl) -// CREATE_IMAGE_PHASES: 24: preprocessor, {23}, c++-cpp-output, (host-sycl) -// CREATE_IMAGE_PHASES: 25: offload, "host-sycl (x86_64-unknown-linux-gnu)" {24}, "device-sycl (spir64_gen-unknown-unknown)" {20}, c++-cpp-output -// CREATE_IMAGE_PHASES: 26: compiler, {25}, ir, (host-sycl) -// CREATE_IMAGE_PHASES: 27: backend, {26}, assembler, (host-sycl) -// CREATE_IMAGE_PHASES: 28: assembler, {27}, object, (host-sycl) -// CREATE_IMAGE_PHASES: 29: clang-offload-bundler, {21, 28}, object, (host-sycl) +// CREATE_IMAGE_PHASES: 21: input, "[[INPUT]]", c++, (host-sycl) +// CREATE_IMAGE_PHASES: 22: append-footer, {21}, c++, (host-sycl) +// CREATE_IMAGE_PHASES: 23: preprocessor, {22}, c++-cpp-output, (host-sycl) +// CREATE_IMAGE_PHASES: 24: offload, "host-sycl (x86_64-unknown-linux-gnu)" {23}, "device-sycl (spir64_gen-unknown-unknown)" {19}, c++-cpp-output +// CREATE_IMAGE_PHASES: 25: compiler, {24}, ir, (host-sycl) +// CREATE_IMAGE_PHASES: 26: backend, {25}, assembler, (host-sycl) +// CREATE_IMAGE_PHASES: 27: assembler, {26}, object, (host-sycl) +// CREATE_IMAGE_PHASES: 28: clang-offload-bundler, {20, 27}, object, (host-sycl) // Use of -fno-sycl-rdc -c with non-AOT should not perform the device link. // RUN: %clangxx -c -fno-sycl-rdc -fsycl -fsycl-targets=spir64 \ @@ -107,15 +106,14 @@ // JIT_AOT_PHASES: 22: file-table-tform, {18, 21}, tempfiletable, (device-sycl) // JIT_AOT_PHASES: 23: clang-offload-wrapper, {22}, object, (device-sycl) // JIT_AOT_PHASES: 24: offload, "device-sycl (spir64_gen-unknown-unknown)" {23}, object -// JIT_AOT_PHASES: 25: offload, "device-sycl (spir64_gen-unknown-unknown)" {24}, object -// JIT_AOT_PHASES: 26: input, "[[INPUT]]", c++, (host-sycl) -// JIT_AOT_PHASES: 27: append-footer, {26}, c++, (host-sycl) -// JIT_AOT_PHASES: 28: preprocessor, {27}, c++-cpp-output, (host-sycl) -// JIT_AOT_PHASES: 29: offload, "host-sycl (x86_64-unknown-linux-gnu)" {28}, "device-sycl (spir64_gen-unknown-unknown)" {24}, c++-cpp-output -// JIT_AOT_PHASES: 30: compiler, {29}, ir, (host-sycl) -// JIT_AOT_PHASES: 31: backend, {30}, assembler, (host-sycl) -// JIT_AOT_PHASES: 32: assembler, {31}, object, (host-sycl) -// JIT_AOT_PHASES: 33: clang-offload-bundler, {3, 25, 32}, object, (host-sycl) +// JIT_AOT_PHASES: 25: input, "[[INPUT]]", c++, (host-sycl) +// JIT_AOT_PHASES: 26: append-footer, {25}, c++, (host-sycl) +// JIT_AOT_PHASES: 27: preprocessor, {26}, c++-cpp-output, (host-sycl) +// JIT_AOT_PHASES: 28: offload, "host-sycl (x86_64-unknown-linux-gnu)" {27}, "device-sycl (spir64_gen-unknown-unknown)" {23}, c++-cpp-output +// JIT_AOT_PHASES: 29: compiler, {28}, ir, (host-sycl) +// JIT_AOT_PHASES: 30: backend, {29}, assembler, (host-sycl) +// JIT_AOT_PHASES: 31: assembler, {30}, object, (host-sycl) +// JIT_AOT_PHASES: 32: clang-offload-bundler, {3, 24, 31}, object, (host-sycl) // Consume object and library that contain final device images. // RUN: %clangxx -fsycl --target=x86_64-unknown-linux-gnu -### \ diff --git a/clang/test/Driver/sycl-embed-ir.cpp b/clang/test/Driver/sycl-embed-ir.cpp index ed65be3b24314..6061d055bc16d 100644 --- a/clang/test/Driver/sycl-embed-ir.cpp +++ b/clang/test/Driver/sycl-embed-ir.cpp @@ -6,14 +6,26 @@ // RUN: FileCheck -check-prefix=CHECK-NV %s // CHECK-NV: [[IR:[0-9]+]]: compiler, {4}, ir, (device-sycl, sm_80) +// CHECK-NV: [[IR_OFFLOAD:[0-9]+]]: offload, "host-sycl (x86_64-unknown-linux-gnu)" {{{.*}}}, "device-sycl (nvptx64-nvidia-cuda:sm_80)" {[[IR]]}, c++-cpp-output +// CHECK-NV: [[COMPILER:[0-9]+]]: compiler, {[[IR_OFFLOAD]]}, ir, (host-sycl) +// CHECK-NV: [[BACKEND:[0-9]+]]: backend, {[[COMPILER]]}, assembler, (host-sycl) +// CHECK-NV: [[ASSEMBLER:[0-9]+]]: assembler, {[[BACKEND]]}, object, (host-sycl) // CHECK-NV: [[POSTLINK:[0-9]+]]: sycl-post-link, {{{.*}}}, ir, (device-sycl, sm_80) // CHECK-NV: [[WRAP:[0-9]+]]: clang-offload-wrapper, {[[POSTLINK]]}, object, (device-sycl, sm_80) -// CHECK-NV: offload, "host-sycl (x86_64-unknown-linux-gnu)" {{{.*}}}, "device-sycl (nvptx64-nvidia-cuda:sm_80)" {[[WRAP]]}, "device-sycl (nvptx64-nvidia-cuda:sm_80)" {{{.*}}}, image +// CHECK-NV: [[WRAP_OFFLOAD:[0-9]+]]: offload, "device-sycl (nvptx64-nvidia-cuda:sm_80)" {[[WRAP]]}, object +// CHECK-NV: [[FATBIN_OFFLOAD:[0-9]+]]: offload, "device-sycl (nvptx64-nvidia-cuda:sm_80)" {{{.*}}}, object +// CHECK-NV: linker, {[[ASSEMBLER]], [[WRAP_OFFLOAD]], [[FATBIN_OFFLOAD]]}, image, (host-sycl) // RUN: %clangxx -fsycl -fsycl-targets=amd_gpu_gfx1010 -fsycl-embed-ir -ccc-print-phases %s 2>&1 | \ // RUN: FileCheck -check-prefix=CHECK-AMD %s // CHECK-AMD: [[IR:[0-9]+]]: compiler, {4}, ir, (device-sycl, gfx1010) +// CHECK-AMD: [[IR_OFFLOAD:[0-9]+]]: offload, "host-sycl (x86_64-unknown-linux-gnu)" {{{.*}}}, "device-sycl (amdgcn-amd-amdhsa:gfx1010)" {[[IR]]}, c++-cpp-output +// CHECK-AMD: [[COMPILER:[0-9]+]]: compiler, {[[IR_OFFLOAD]]}, ir, (host-sycl) +// CHECK-AMD: [[BACKEND:[0-9]+]]: backend, {[[COMPILER]]}, assembler, (host-sycl) +// CHECK-AMD: [[ASSEMBLER:[0-9]+]]: assembler, {[[BACKEND]]}, object, (host-sycl) // CHECK-AMD: [[POSTLINK:[0-9]+]]: sycl-post-link, {{{.*}}}, ir, (device-sycl, gfx1010) // CHECK-AMD: [[WRAP:[0-9]+]]: clang-offload-wrapper, {[[POSTLINK]]}, object, (device-sycl, gfx1010) -// CHECK-AMD: offload, "host-sycl (x86_64-unknown-linux-gnu)" {{{.*}}}, "device-sycl (amdgcn-amd-amdhsa:gfx1010)" {[[WRAP]]}, "device-sycl (amdgcn-amd-amdhsa:gfx1010)" {{{.*}}}, image +// CHECK-AMD: [[WRAP_OFFLOAD:[0-9]+]]: offload, "device-sycl (amdgcn-amd-amdhsa:gfx1010)" {[[WRAP]]}, object +// CHECK-AMD: [[FATBIN_OFFLOAD:[0-9]+]]: offload, "device-sycl (amdgcn-amd-amdhsa:gfx1010)" {{{.*}}}, object +// CHECK-AMD: linker, {[[ASSEMBLER]], [[WRAP_OFFLOAD]], [[FATBIN_OFFLOAD]]}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-esimd-build-host-code.cpp b/clang/test/Driver/sycl-esimd-build-host-code.cpp index fe95091e46b7e..e632189a526d6 100644 --- a/clang/test/Driver/sycl-esimd-build-host-code.cpp +++ b/clang/test/Driver/sycl-esimd-build-host-code.cpp @@ -4,10 +4,9 @@ // RUN: %clang -### -fsycl -fno-sycl-esimd-build-host-code \ // RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-PASS-TO-COMPS %s // CHECK-PASS-TO-COMPS: clang +// CHECK-PASS-TO-COMPS: clang{{.*}} "-fsycl-is-host" {{.*}}"-fno-sycl-esimd-build-host-code" // CHECK-PASS-TO-COMPS-NOT: "-fno-sycl-esimd-build-host-code" // CHECK-PASS-TO-COMPS: sycl-post-link{{.*}} -// CHECK-PASS-TO-COMPS: clang{{.*}} "-fsycl-is-host" {{.*}}"-fno-sycl-esimd-build-host-code" - /// Verify that removing host code is not enabled by default // RUN: %clang -### -fsycl %s 2>&1 | FileCheck -implicit-check-not "-fno-sycl-esimd-build-host-code" %s diff --git a/clang/test/Driver/sycl-esimd-force-stateless-mem.cpp b/clang/test/Driver/sycl-esimd-force-stateless-mem.cpp index df34824038551..717b34f59021b 100644 --- a/clang/test/Driver/sycl-esimd-force-stateless-mem.cpp +++ b/clang/test/Driver/sycl-esimd-force-stateless-mem.cpp @@ -6,8 +6,8 @@ // Actually, only sycl-post-link gets an additional flag in this case. // RUN: %clang -### -fsycl %s 2>&1 | FileCheck -check-prefix=CHECK-DEFAULT %s // CHECK-DEFAULT-NOT: clang{{.*}} "sycl-esimd-force-stateless-mem" -// CHECK-DEFAULT-NOT: sycl-post-link{{.*}} "-lower-esimd-force-stateless-mem" // CHECK-DEFAULT-NOT: clang{{.*}} "-fsycl-is-host" {{.*}}"sycl-esimd-force-stateless-mem" +// CHECK-DEFAULT-NOT: sycl-post-link{{.*}} "-lower-esimd-force-stateless-mem" // Case2: Check that -fno-sycl-esimd-force-stateless-mem is handled correctly - // i.e. sycl-post-link gets nothing and clang gets corresponding -fno... option. diff --git a/clang/test/Driver/sycl-force-target.cpp b/clang/test/Driver/sycl-force-target.cpp index 40177ca5e63fc..441feee3a4fac 100644 --- a/clang/test/Driver/sycl-force-target.cpp +++ b/clang/test/Driver/sycl-force-target.cpp @@ -14,6 +14,7 @@ // RUN: -target x86_64-unknown-linux-gnu \ // RUN: --sysroot=%S/Inputs/SYCL %t.o -### 2>&1 \ // RUN: | FileCheck %s -check-prefixes=CHECK_FORCE_TARGET,CHECK_FORCE_TARGET_CPU +// CHECK_FORCE_TARGET: clang-offload-bundler{{.*}} "-type=o" "-targets=host-{{.*}},sycl-spir64-unknown-unknown" "-input={{.*}}" "-output={{.*}}" "-output=[[DEVICEOBJECTOUTx:.+]]" "-unbundle" "-allow-missing-bundles" // CHECK_FORCE_TARGET: clang-offload-bundler{{.*}} "-type=o" "-targets=host-{{.*}},sycl-spir64-unknown-unknown" "-input={{.*}}" "-output={{.*}}" "-output=[[DEVICEOBJECTOUT:.+]]" "-unbundle" "-allow-missing-bundles" // CHECK_FORCE_TARGET: spirv-to-ir-wrapper{{.*}} "[[DEVICEOBJECTOUT]]" "-o" "[[DEVICEOBJECTBC:.+\.bc]]" // CHECK_FORCE_TARGET: llvm-link{{.*}} "[[DEVICEOBJECTBC]]"{{.*}} "-o" "[[DEVICEOBJLINKED:.+\.bc]]" "--suppress-warnings" diff --git a/clang/test/Driver/sycl-int-footer.cpp b/clang/test/Driver/sycl-int-footer.cpp index 96bd1e6d651d9..ba9df0cdd11e1 100644 --- a/clang/test/Driver/sycl-int-footer.cpp +++ b/clang/test/Driver/sycl-int-footer.cpp @@ -57,14 +57,14 @@ // COMMON-PHASES: [[#OFFLOAD+1]]: compiler, {[[#OFFLOAD]]}, ir, (host-sycl) // COMMON-PHASES: [[#OFFLOAD+2]]: backend, {[[#OFFLOAD+1]]}, assembler, (host-sycl) // COMMON-PHASES: [[#OFFLOAD+3]]: assembler, {[[#OFFLOAD+2]]}, object, (host-sycl) -// COMMON-PHASES: [[#OFFLOAD+4]]: linker, {[[#OFFLOAD+3]]}, image, (host-sycl) -// COMMON-PHASES: [[#OFFLOAD+5]]: linker, {[[#DEVICE_IR]]}, ir, (device-sycl) -// COMMON-PHASES: [[#OFFLOAD+6]]: sycl-post-link, {[[#OFFLOAD+5]]}, tempfiletable, (device-sycl) -// COMMON-PHASES: [[#OFFLOAD+7]]: file-table-tform, {[[#OFFLOAD+6]]}, tempfilelist, (device-sycl) -// COMMON-PHASES: [[#OFFLOAD+8]]: llvm-spirv, {[[#OFFLOAD+7]]}, tempfilelist, (device-sycl) -// COMMON-PHASES: [[#OFFLOAD+9]]: file-table-tform, {[[#OFFLOAD+6]], [[#OFFLOAD+8]]}, tempfiletable, (device-sycl) -// COMMON-PHASES: [[#OFFLOAD+10]]: clang-offload-wrapper, {[[#OFFLOAD+9]]}, object, (device-sycl) -// COMMON-PHASES: [[#OFFLOAD+11]]: offload, "host-sycl (x86_64-{{.*}})" {[[#OFFLOAD+4]]}, "device-sycl (spir64-unknown-unknown)" {[[#OFFLOAD+10]]}, image +// COMMON-PHASES: [[#OFFLOAD+4]]: linker, {[[#DEVICE_IR]]}, ir, (device-sycl) +// COMMON-PHASES: [[#OFFLOAD+5]]: sycl-post-link, {[[#OFFLOAD+4]]}, tempfiletable, (device-sycl) +// COMMON-PHASES: [[#OFFLOAD+6]]: file-table-tform, {[[#OFFLOAD+5]]}, tempfilelist, (device-sycl) +// COMMON-PHASES: [[#OFFLOAD+7]]: llvm-spirv, {[[#OFFLOAD+6]]}, tempfilelist, (device-sycl) +// COMMON-PHASES: [[#OFFLOAD+8]]: file-table-tform, {[[#OFFLOAD+5]], [[#OFFLOAD+7]]}, tempfiletable, (device-sycl) +// COMMON-PHASES: [[#OFFLOAD+9]]: clang-offload-wrapper, {[[#OFFLOAD+8]]}, object, (device-sycl) +// COMMON-PHASES: [[#OFFLOAD+10]]: offload, "device-sycl (spir64-unknown-unknown)" {[[#OFFLOAD+9]]}, object +// COMMON-PHASES: [[#OFFLOAD+11]]: linker, {[[#OFFLOAD+3]], [[#OFFLOAD+10]]}, image, (host-sycl) /// Test for -fsycl-footer-path= // RUN: %clangxx -fsycl -fsycl-footer-path=dummy_dir %s -### 2>&1 \ diff --git a/clang/test/Driver/sycl-intelfpga-aoco-win.cpp b/clang/test/Driver/sycl-intelfpga-aoco-win.cpp index 40c8cfbd325c1..371ce3ce43f7f 100755 --- a/clang/test/Driver/sycl-intelfpga-aoco-win.cpp +++ b/clang/test/Driver/sycl-intelfpga-aoco-win.cpp @@ -22,24 +22,24 @@ // CHK-FPGA-AOCO-PHASES-WIN: 8: compiler, {7}, ir, (host-sycl) // CHK-FPGA-AOCO-PHASES-WIN: 9: backend, {8}, assembler, (host-sycl) // CHK-FPGA-AOCO-PHASES-WIN: 10: assembler, {9}, object, (host-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 11: linker, {0, 10}, image, (host-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 12: linker, {0, 10}, host_dep_image, (host-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 13: clang-offload-deps, {12}, ir, (host-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 14: input, "[[INPUTA]]", archive -// CHK-FPGA-AOCO-PHASES-WIN: 15: clang-offload-unbundler, {14}, tempfilelist -// CHK-FPGA-AOCO-PHASES-WIN: 16: spirv-to-ir-wrapper, {15}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 17: linker, {6, 13, 16}, ir, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 19: file-table-tform, {18}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 21: input, "[[INPUTA]]", archive -// CHK-FPGA-AOCO-PHASES-WIN: 22: clang-offload-unbundler, {21}, fpga_dep_list -// CHK-FPGA-AOCO-PHASES-WIN: 23: input, "[[INPUTA]]", fpga_aoco -// CHK-FPGA-AOCO-PHASES-WIN: 24: clang-offload-unbundler, {23}, fpga_aoco -// CHK-FPGA-AOCO-PHASES-WIN: 25: backend-compiler, {20, 22, 24}, fpga_aocx, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 26: file-table-tform, {18, 25}, tempfiletable, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 27: clang-offload-wrapper, {26}, object, (device-sycl) -// CHK-FPGA-AOCO-PHASES-WIN: 28: offload, "host-sycl (x86_64-pc-windows-msvc)" {11}, "device-sycl (spir64_fpga-unknown-unknown)" {27}, image +// CHK-FPGA-AOCO-PHASES-WIN: 11: linker, {0, 10}, host_dep_image, (host-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 12: clang-offload-deps, {11}, ir, (host-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 13: input, "[[INPUTA]]", archive +// CHK-FPGA-AOCO-PHASES-WIN: 14: clang-offload-unbundler, {13}, tempfilelist +// CHK-FPGA-AOCO-PHASES-WIN: 15: spirv-to-ir-wrapper, {14}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 16: linker, {6, 12, 15}, ir, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 17: sycl-post-link, {16}, tempfiletable, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 18: file-table-tform, {17}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 19: llvm-spirv, {18}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 20: input, "[[INPUTA]]", archive +// CHK-FPGA-AOCO-PHASES-WIN: 21: clang-offload-unbundler, {20}, fpga_dep_list +// CHK-FPGA-AOCO-PHASES-WIN: 22: input, "[[INPUTA]]", fpga_aoco +// CHK-FPGA-AOCO-PHASES-WIN: 23: clang-offload-unbundler, {22}, fpga_aoco +// CHK-FPGA-AOCO-PHASES-WIN: 24: backend-compiler, {19, 21, 23}, fpga_aocx, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 25: file-table-tform, {17, 24}, tempfiletable, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 26: clang-offload-wrapper, {25}, object, (device-sycl) +// CHK-FPGA-AOCO-PHASES-WIN: 27: offload, "device-sycl (spir64_fpga-unknown-unknown)" {26}, object +// CHK-FPGA-AOCO-PHASES-WIN: 28: linker, {0, 10, 27}, image, (host-sycl) /// aoco test, checking tools // RUN: %clang_cl --target=x86_64-pc-windows-msvc -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga %t_aoco.a -Xshardware -### %s 2>&1 \ diff --git a/clang/test/Driver/sycl-intelfpga-aoco.cpp b/clang/test/Driver/sycl-intelfpga-aoco.cpp index aed55a39b2edb..684d033bb71a9 100755 --- a/clang/test/Driver/sycl-intelfpga-aoco.cpp +++ b/clang/test/Driver/sycl-intelfpga-aoco.cpp @@ -26,24 +26,24 @@ // CHK-FPGA-AOCO-PHASES: 8: compiler, {7}, ir, (host-sycl) // CHK-FPGA-AOCO-PHASES: 9: backend, {8}, assembler, (host-sycl) // CHK-FPGA-AOCO-PHASES: 10: assembler, {9}, object, (host-sycl) -// CHK-FPGA-AOCO-PHASES: 11: linker, {0, 10}, image, (host-sycl) -// CHK-FPGA-AOCO-PHASES: 12: linker, {0, 10}, host_dep_image, (host-sycl) -// CHK-FPGA-AOCO-PHASES: 13: clang-offload-deps, {12}, ir, (host-sycl) -// CHK-FPGA-AOCO-PHASES: 14: input, "[[INPUTA]]", archive -// CHK-FPGA-AOCO-PHASES: 15: clang-offload-unbundler, {14}, tempfilelist -// CHK-FPGA-AOCO-PHASES: 16: spirv-to-ir-wrapper, {15}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 17: linker, {6, 13, 16}, ir, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 19: file-table-tform, {18}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 21: input, "[[INPUTA]]", archive -// CHK-FPGA-AOCO-PHASES: 22: clang-offload-unbundler, {21}, fpga_dep_list -// CHK-FPGA-AOCO-PHASES: 23: input, "[[INPUTA]]", fpga_aoco -// CHK-FPGA-AOCO-PHASES: 24: clang-offload-unbundler, {23}, fpga_aoco -// CHK-FPGA-AOCO-PHASES: 25: backend-compiler, {20, 22, 24}, fpga_aocx, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 26: file-table-tform, {18, 25}, tempfiletable, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 27: clang-offload-wrapper, {26}, object, (device-sycl) -// CHK-FPGA-AOCO-PHASES: 28: offload, "host-sycl (x86_64-unknown-linux-gnu)" {11}, "device-sycl (spir64_fpga-unknown-unknown)" {27}, image +// CHK-FPGA-AOCO-PHASES: 11: linker, {0, 10}, host_dep_image, (host-sycl) +// CHK-FPGA-AOCO-PHASES: 12: clang-offload-deps, {11}, ir, (host-sycl) +// CHK-FPGA-AOCO-PHASES: 13: input, "[[INPUTA]]", archive +// CHK-FPGA-AOCO-PHASES: 14: clang-offload-unbundler, {13}, tempfilelist +// CHK-FPGA-AOCO-PHASES: 15: spirv-to-ir-wrapper, {14}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 16: linker, {6, 12, 15}, ir, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 17: sycl-post-link, {16}, tempfiletable, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 18: file-table-tform, {17}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 19: llvm-spirv, {18}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 20: input, "[[INPUTA]]", archive +// CHK-FPGA-AOCO-PHASES: 21: clang-offload-unbundler, {20}, fpga_dep_list +// CHK-FPGA-AOCO-PHASES: 22: input, "[[INPUTA]]", fpga_aoco +// CHK-FPGA-AOCO-PHASES: 23: clang-offload-unbundler, {22}, fpga_aoco +// CHK-FPGA-AOCO-PHASES: 24: backend-compiler, {19, 21, 23}, fpga_aocx, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 25: file-table-tform, {17, 24}, tempfiletable, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 26: clang-offload-wrapper, {25}, object, (device-sycl) +// CHK-FPGA-AOCO-PHASES: 27: offload, "device-sycl (spir64_fpga-unknown-unknown)" {26}, object +// CHK-FPGA-AOCO-PHASES: 28: linker, {0, 10, 27}, image, (host-sycl) /// aoco test, checking tools // RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga -Xshardware -foffload-static-lib=%t_aoco.a -### %s 2>&1 \ @@ -84,22 +84,22 @@ // CHK-FPGA-AOCO-PHASES-EMU: 8: compiler, {7}, ir, (host-sycl) // CHK-FPGA-AOCO-PHASES-EMU: 9: backend, {8}, assembler, (host-sycl) // CHK-FPGA-AOCO-PHASES-EMU: 10: assembler, {9}, object, (host-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 11: linker, {0, 10}, image, (host-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 12: linker, {0, 10}, host_dep_image, (host-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 13: clang-offload-deps, {12}, ir, (host-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 14: input, "[[INPUTA]]", archive -// CHK-FPGA-AOCO-PHASES-EMU: 15: clang-offload-unbundler, {14}, tempfilelist -// CHK-FPGA-AOCO-PHASES-EMU: 16: spirv-to-ir-wrapper, {15}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 17: linker, {6, 13, 16}, ir, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 19: file-table-tform, {18}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 21: input, "[[INPUTA]]", archive -// CHK-FPGA-AOCO-PHASES-EMU: 22: clang-offload-unbundler, {21}, fpga_dep_list -// CHK-FPGA-AOCO-PHASES-EMU: 23: backend-compiler, {20, 22}, fpga_aocx, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 24: file-table-tform, {18, 23}, tempfiletable, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 25: clang-offload-wrapper, {24}, object, (device-sycl) -// CHK-FPGA-AOCO-PHASES-EMU: 26: offload, "host-sycl (x86_64-unknown-linux-gnu)" {11}, "device-sycl (spir64_fpga-unknown-unknown)" {25}, image +// CHK-FPGA-AOCO-PHASES-EMU: 11: linker, {0, 10}, host_dep_image, (host-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 12: clang-offload-deps, {11}, ir, (host-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 13: input, "[[INPUTA]]", archive +// CHK-FPGA-AOCO-PHASES-EMU: 14: clang-offload-unbundler, {13}, tempfilelist +// CHK-FPGA-AOCO-PHASES-EMU: 15: spirv-to-ir-wrapper, {14}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 16: linker, {6, 12, 15}, ir, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 17: sycl-post-link, {16}, tempfiletable, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 18: file-table-tform, {17}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 19: llvm-spirv, {18}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 20: input, "[[INPUTA]]", archive +// CHK-FPGA-AOCO-PHASES-EMU: 21: clang-offload-unbundler, {20}, fpga_dep_list +// CHK-FPGA-AOCO-PHASES-EMU: 22: backend-compiler, {19, 21}, fpga_aocx, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 23: file-table-tform, {17, 22}, tempfiletable, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 24: clang-offload-wrapper, {23}, object, (device-sycl) +// CHK-FPGA-AOCO-PHASES-EMU: 25: offload, "device-sycl (spir64_fpga-unknown-unknown)" {24}, object +// CHK-FPGA-AOCO-PHASES-EMU: 26: linker, {0, 10, 25}, image, (host-sycl) /// aoco emulation test, checking tools // RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga %t_aoco.a -### %s 2>&1 \ diff --git a/clang/test/Driver/sycl-intelfpga-static-lib-win.cpp b/clang/test/Driver/sycl-intelfpga-static-lib-win.cpp index 40f8e7c8b7757..c0e579e4db4e3 100644 --- a/clang/test/Driver/sycl-intelfpga-static-lib-win.cpp +++ b/clang/test/Driver/sycl-intelfpga-static-lib-win.cpp @@ -13,22 +13,22 @@ // RUN: %clang_cl --target=x86_64-pc-windows-msvc -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga %t.lib -ccc-print-phases 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK_PHASES %s // CHECK_PHASES: 0: input, "[[INPUT:.+\.lib]]", object, (host-sycl) -// CHECK_PHASES: 1: linker, {0}, image, (host-sycl) -// CHECK_PHASES: 2: linker, {0}, host_dep_image, (host-sycl) -// CHECK_PHASES: 3: clang-offload-deps, {2}, ir, (host-sycl) -// CHECK_PHASES: 4: input, "[[INPUT]]", archive -// CHECK_PHASES: 5: clang-offload-unbundler, {4}, tempfilelist -// CHECK_PHASES: 6: spirv-to-ir-wrapper, {5}, tempfilelist, (device-sycl) -// CHECK_PHASES: 7: linker, {3, 6}, ir, (device-sycl) -// CHECK_PHASES: 8: sycl-post-link, {7}, tempfiletable, (device-sycl) -// CHECK_PHASES: 9: file-table-tform, {8}, tempfilelist, (device-sycl) -// CHECK_PHASES: 10: llvm-spirv, {9}, tempfilelist, (device-sycl) -// CHECK_PHASES: 11: input, "[[INPUT]]", archive -// CHECK_PHASES: 12: clang-offload-unbundler, {11}, fpga_dep_list -// CHECK_PHASES: 13: backend-compiler, {10, 12}, fpga_aocx, (device-sycl) -// CHECK_PHASES: 14: file-table-tform, {8, 13}, tempfiletable, (device-sycl) -// CHECK_PHASES: 15: clang-offload-wrapper, {14}, object, (device-sycl) -// CHECK_PHASES: 16: offload, "host-sycl (x86_64-pc-windows-msvc)" {1}, "device-sycl (spir64_fpga-unknown-unknown)" {15}, image +// CHECK_PHASES: 1: linker, {0}, host_dep_image, (host-sycl) +// CHECK_PHASES: 2: clang-offload-deps, {1}, ir, (host-sycl) +// CHECK_PHASES: 3: input, "[[INPUT]]", archive +// CHECK_PHASES: 4: clang-offload-unbundler, {3}, tempfilelist +// CHECK_PHASES: 5: spirv-to-ir-wrapper, {4}, tempfilelist, (device-sycl) +// CHECK_PHASES: 6: linker, {2, 5}, ir, (device-sycl) +// CHECK_PHASES: 7: sycl-post-link, {6}, tempfiletable, (device-sycl) +// CHECK_PHASES: 8: file-table-tform, {7}, tempfilelist, (device-sycl) +// CHECK_PHASES: 9: llvm-spirv, {8}, tempfilelist, (device-sycl) +// CHECK_PHASES: 10: input, "[[INPUT]]", archive +// CHECK_PHASES: 11: clang-offload-unbundler, {10}, fpga_dep_list +// CHECK_PHASES: 12: backend-compiler, {9, 11}, fpga_aocx, (device-sycl) +// CHECK_PHASES: 13: file-table-tform, {7, 12}, tempfiletable, (device-sycl) +// CHECK_PHASES: 14: clang-offload-wrapper, {13}, object, (device-sycl) +// CHECK_PHASES: 15: offload, "device-sycl (spir64_fpga-unknown-unknown)" {14}, object +// CHECK_PHASES: 16: linker, {0, 15}, image, (host-sycl) /// Check for unbundle and use of deps in static lib // RUN: %clang_cl --target=x86_64-pc-windows-msvc -fno-sycl-device-lib=all -fintelfpga -Xshardware %t.lib -### 2>&1 \ diff --git a/clang/test/Driver/sycl-intelfpga-static-lib.cpp b/clang/test/Driver/sycl-intelfpga-static-lib.cpp index 6c9c90aa1149e..72b9ba48d867d 100644 --- a/clang/test/Driver/sycl-intelfpga-static-lib.cpp +++ b/clang/test/Driver/sycl-intelfpga-static-lib.cpp @@ -12,22 +12,22 @@ // RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-dead-args-optimization -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga %t.a -ccc-print-phases 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK_PHASES %s // CHECK_PHASES: 0: input, "[[INPUT:.+\.a]]", object, (host-sycl) -// CHECK_PHASES: 1: linker, {0}, image, (host-sycl) -// CHECK_PHASES: 2: linker, {0}, host_dep_image, (host-sycl) -// CHECK_PHASES: 3: clang-offload-deps, {2}, ir, (host-sycl) -// CHECK_PHASES: 4: input, "[[INPUT]]", archive -// CHECK_PHASES: 5: clang-offload-unbundler, {4}, tempfilelist -// CHECK_PHASES: 6: spirv-to-ir-wrapper, {5}, tempfilelist, (device-sycl) -// CHECK_PHASES: 7: linker, {3, 6}, ir, (device-sycl) -// CHECK_PHASES: 8: sycl-post-link, {7}, tempfiletable, (device-sycl) -// CHECK_PHASES: 9: file-table-tform, {8}, tempfilelist, (device-sycl) -// CHECK_PHASES: 10: llvm-spirv, {9}, tempfilelist, (device-sycl) -// CHECK_PHASES: 11: input, "[[INPUT]]", archive -// CHECK_PHASES: 12: clang-offload-unbundler, {11}, fpga_dep_list -// CHECK_PHASES: 13: backend-compiler, {10, 12}, fpga_aocx, (device-sycl) -// CHECK_PHASES: 14: file-table-tform, {8, 13}, tempfiletable, (device-sycl) -// CHECK_PHASES: 15: clang-offload-wrapper, {14}, object, (device-sycl) -// CHECK_PHASES: 16: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64_fpga-unknown-unknown)" {15}, image +// CHECK_PHASES: 1: linker, {0}, host_dep_image, (host-sycl) +// CHECK_PHASES: 2: clang-offload-deps, {1}, ir, (host-sycl) +// CHECK_PHASES: 3: input, "[[INPUT]]", archive +// CHECK_PHASES: 4: clang-offload-unbundler, {3}, tempfilelist +// CHECK_PHASES: 5: spirv-to-ir-wrapper, {4}, tempfilelist, (device-sycl) +// CHECK_PHASES: 6: linker, {2, 5}, ir, (device-sycl) +// CHECK_PHASES: 7: sycl-post-link, {6}, tempfiletable, (device-sycl) +// CHECK_PHASES: 8: file-table-tform, {7}, tempfilelist, (device-sycl) +// CHECK_PHASES: 9: llvm-spirv, {8}, tempfilelist, (device-sycl) +// CHECK_PHASES: 10: input, "[[INPUT]]", archive +// CHECK_PHASES: 11: clang-offload-unbundler, {10}, fpga_dep_list +// CHECK_PHASES: 12: backend-compiler, {9, 11}, fpga_aocx, (device-sycl) +// CHECK_PHASES: 13: file-table-tform, {7, 12}, tempfiletable, (device-sycl) +// CHECK_PHASES: 14: clang-offload-wrapper, {13}, object, (device-sycl) +// CHECK_PHASES: 15: offload, "device-sycl (spir64_fpga-unknown-unknown)" {14}, object +// CHECK_PHASES: 16: linker, {0, 15}, image, (host-sycl) /// Check for unbundle and use of deps in static lib // RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-device-lib=all -fintelfpga -Xshardware %t.a -### 2>&1 \ diff --git a/clang/test/Driver/sycl-link-add-targets.cpp b/clang/test/Driver/sycl-link-add-targets.cpp index c0e680e155337..4a75e3727be7d 100644 --- a/clang/test/Driver/sycl-link-add-targets.cpp +++ b/clang/test/Driver/sycl-link-add-targets.cpp @@ -183,16 +183,17 @@ // CHK-ADD-TARGETS-REG: 7: compiler, {6}, ir, (host-sycl) // CHK-ADD-TARGETS-REG: 8: backend, {7}, assembler, (host-sycl) // CHK-ADD-TARGETS-REG: 9: assembler, {8}, object, (host-sycl) -// CHK-ADD-TARGETS-REG: 10: linker, {9}, image, (host-sycl) -// CHK-ADD-TARGETS-REG: 11: linker, {5}, ir, (device-sycl) -// CHK-ADD-TARGETS-REG: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) -// CHK-ADD-TARGETS-REG: 13: file-table-tform, {12}, tempfilelist, (device-sycl) -// CHK-ADD-TARGETS-REG: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) -// CHK-ADD-TARGETS-REG: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) -// CHK-ADD-TARGETS-REG: 16: clang-offload-wrapper, {15}, object, (device-sycl) -// CHK-ADD-TARGETS-REG: 17: input, "dummy.spv", sycl-fatbin, (device-sycl) -// CHK-ADD-TARGETS-REG: 18: clang-offload-wrapper, {17}, object, (device-sycl) -// CHK-ADD-TARGETS-REG: 19: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, "device-sycl (spir64-unknown-unknown)" {18}, image +// CHK-ADD-TARGETS-REG: 10: linker, {5}, ir, (device-sycl) +// CHK-ADD-TARGETS-REG: 11: sycl-post-link, {10}, tempfiletable, (device-sycl) +// CHK-ADD-TARGETS-REG: 12: file-table-tform, {11}, tempfilelist, (device-sycl) +// CHK-ADD-TARGETS-REG: 13: llvm-spirv, {12}, tempfilelist, (device-sycl) +// CHK-ADD-TARGETS-REG: 14: file-table-tform, {11, 13}, tempfiletable, (device-sycl) +// CHK-ADD-TARGETS-REG: 15: clang-offload-wrapper, {14}, object, (device-sycl) +// CHK-ADD-TARGETS-REG: 16: offload, "device-sycl (spir64-unknown-unknown)" {15}, object +// CHK-ADD-TARGETS-REG: 17: linker, {9, 16}, image, (host-sycl) +// CHK-ADD-TARGETS-REG: 18: input, "dummy.spv", sycl-fatbin, (device-sycl) +// CHK-ADD-TARGETS-REG: 19: clang-offload-wrapper, {18}, object, (device-sycl) +// CHK-ADD-TARGETS-REG: 20: offload, "host-sycl (x86_64-unknown-linux-gnu)" {17}, "device-sycl (spir64-unknown-unknown)" {19}, image /// Check regular offload with multiple additional AOT binaries passed through -fsycl-add-targets // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64-unknown-unknown -fsycl-add-targets=spir64_fpga-unknown-unknown:dummy.aocx,spir64_gen-unknown-unknown:dummy_Gen9core.bin,spir64_x86_64-unknown-unknown:dummy.ir -ccc-print-phases %s 2>&1 \ @@ -207,17 +208,18 @@ // CHK-ADD-TARGETS-REG-MUL: 7: compiler, {6}, ir, (host-sycl) // CHK-ADD-TARGETS-REG-MUL: 8: backend, {7}, assembler, (host-sycl) // CHK-ADD-TARGETS-REG-MUL: 9: assembler, {8}, object, (host-sycl) -// CHK-ADD-TARGETS-REG-MUL: 10: linker, {9}, image, (host-sycl) -// CHK-ADD-TARGETS-REG-MUL: 11: linker, {5}, ir, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 13: file-table-tform, {12}, tempfilelist, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 16: clang-offload-wrapper, {15}, object, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 17: input, "dummy.aocx", sycl-fatbin, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 18: clang-offload-wrapper, {17}, object, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 19: input, "dummy_Gen9core.bin", sycl-fatbin, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 20: clang-offload-wrapper, {19}, object, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 21: input, "dummy.ir", sycl-fatbin, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 22: clang-offload-wrapper, {21}, object, (device-sycl) -// CHK-ADD-TARGETS-REG-MUL: 23: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, "device-sycl (spir64_fpga-unknown-unknown)" {18}, "device-sycl (spir64_gen-unknown-unknown)" {20}, "device-sycl (spir64_x86_64-unknown-unknown)" {22}, image +// CHK-ADD-TARGETS-REG-MUL: 10: linker, {5}, ir, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 11: sycl-post-link, {10}, tempfiletable, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 12: file-table-tform, {11}, tempfilelist, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 13: llvm-spirv, {12}, tempfilelist, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 14: file-table-tform, {11, 13}, tempfiletable, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 15: clang-offload-wrapper, {14}, object, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 16: offload, "device-sycl (spir64-unknown-unknown)" {15}, object +// CHK-ADD-TARGETS-REG-MUL: 17: linker, {9, 16}, image, (host-sycl) +// CHK-ADD-TARGETS-REG-MUL: 18: input, "dummy.aocx", sycl-fatbin, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 19: clang-offload-wrapper, {18}, object, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 20: input, "dummy_Gen9core.bin", sycl-fatbin, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 21: clang-offload-wrapper, {20}, object, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 22: input, "dummy.ir", sycl-fatbin, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 23: clang-offload-wrapper, {22}, object, (device-sycl) +// CHK-ADD-TARGETS-REG-MUL: 24: offload, "host-sycl (x86_64-unknown-linux-gnu)" {17}, "device-sycl (spir64_fpga-unknown-unknown)" {19}, "device-sycl (spir64_gen-unknown-unknown)" {21}, "device-sycl (spir64_x86_64-unknown-unknown)" {23}, image diff --git a/clang/test/Driver/sycl-native-cpu-fsycl.cpp b/clang/test/Driver/sycl-native-cpu-fsycl.cpp index 9ec119289d6c4..63f109ae7f86f 100644 --- a/clang/test/Driver/sycl-native-cpu-fsycl.cpp +++ b/clang/test/Driver/sycl-native-cpu-fsycl.cpp @@ -14,34 +14,34 @@ //CHECK_ACTIONS: +- 7: compiler, {6}, ir, (host-sycl) //CHECK_ACTIONS: +- 8: backend, {7}, assembler, (host-sycl) //CHECK_ACTIONS: +- 9: assembler, {8}, object, (host-sycl) -//CHECK_ACTIONS:+- 10: linker, {9}, image, (host-sycl) -//CHECK_ACTIONS: +- 11: linker, {5}, ir, (device-sycl) -//CHECK_ACTIONS: |- 12: input, "{{.*}}libspirv{{.*}}", ir, (device-sycl) -//CHECK_ACTIONS: +- 13: linker, {11, 12}, ir, (device-sycl) -//this is where we compile the device code to a shared lib, and we link the host shared lib and the device shared lib -//CHECK_ACTIONS:| +- 14: backend, {13}, assembler, (device-sycl) -//CHECK_ACTIONS:|- 15: assembler, {14}, object, (device-sycl) -//call sycl-post-link and clang-offload-wrapper -//CHECK_ACTIONS:| +- 16: sycl-post-link, {13}, tempfiletable, (device-sycl) -//CHECK_ACTIONS:|- 17: clang-offload-wrapper, {16}, object, (device-sycl) -//CHECK_ACTIONS:18: offload, "host-sycl ({{.*}})" {10}, "device-sycl ({{.*}})" {15}, "device-sycl ({{.*}})" {17}, image +//CHECK_ACTIONS:| +- 10: linker, {5}, ir, (device-sycl) +//CHECK_ACTIONS:| |- 11: input, "{{.*}}libspirv{{.*}}", ir, (device-sycl) +//CHECK_ACTIONS:| +- 12: linker, {10, 11}, ir, (device-sycl) +//CHECK_ACTIONS:| +- 13: backend, {12}, assembler, (device-sycl) +//CHECK_ACTIONS:| +- 14: assembler, {13}, object, (device-sycl) +//CHECK_ACTIONS:|- 15: offload, "device-sycl ({{.*}})" {14}, object +//CHECK_ACTIONS:| +- 16: sycl-post-link, {12}, tempfiletable, (device-sycl) +//CHECK_ACTIONS:| +- 17: clang-offload-wrapper, {16}, object, (device-sycl) +//CHECK_ACTIONS:|- 18: offload, "device-sycl ({{.*}})" {17}, object +//CHECK_ACTIONS:19: linker, {9, 15, 18}, image, (host-sycl) //CHECK_BINDINGS:# "{{.*}}" - "clang", inputs: ["{{.*}}sycl-native-cpu-fsycl.cpp"], output: "[[KERNELIR:.*]].bc" +//CHECK_BINDINGS:# "{{.*}}" - "Append Footer to source", inputs: ["{{.*}}sycl-native-cpu-fsycl.cpp"], output: "[[SRCWFOOTER:.*]].cpp" +//CHECK_BINDINGS:# "{{.*}}" - "clang", inputs: ["[[SRCWFOOTER]].cpp", "[[KERNELIR]].bc"], output: "[[HOSTOBJ:.*]].o" //CHECK_BINDINGS:# "{{.*}}" - "SYCL::Linker", inputs: ["[[KERNELIR]].bc"], output: "[[KERNELLINK:.*]].bc" //CHECK_BINDINGS:# "{{.*}}" - "SYCL::Linker", inputs: ["[[KERNELLINK]].bc", "{{.*}}.bc"], output: "[[KERNELLINKWLIB:.*]].bc" //CHECK_BINDINGS:# "{{.*}}" - "clang", inputs: ["[[KERNELLINKWLIB]].bc"], output: "[[KERNELOBJ:.*]].o" //CHECK_BINDINGS:# "{{.*}}" - "SYCL post link", inputs: ["[[KERNELLINKWLIB]].bc"], output: "[[TABLEFILE:.*]].table" //CHECK_BINDINGS:# "{{.*}}" - "offload wrapper", inputs: ["[[TABLEFILE]].table"], output: "[[WRAPPEROBJ:.*]].o" -//CHECK_BINDINGS:# "{{.*}}" - "Append Footer to source", inputs: ["{{.*}}sycl-native-cpu-fsycl.cpp"], output: "[[SRCWFOOTER:.*]].cpp" -//CHECK_BINDINGS:# "{{.*}}" - "clang", inputs: ["[[SRCWFOOTER]].cpp", "[[KERNELIR]].bc"], output: "[[HOSTOBJ:.*]].o" //CHECK_BINDINGS:# "{{.*}}" - "{{.*}}::Linker", inputs: ["[[HOSTOBJ]].o", "[[KERNELOBJ]].o", "[[WRAPPEROBJ]].o"], output: "a.{{.*}}" //CHECK_INVO:{{.*}}clang{{.*}}-fsycl-is-device{{.*}}"-fsycl-is-native-cpu" "-D" "__SYCL_NATIVE_CPU__" +//CHECK_INVO:{{.*}}clang{{.*}}"-fsycl-is-host"{{.*}} //CHECK_INVO:{{.*}}clang{{.*}}"-x" "ir" //CHECK_INVO-NOT:{{.*}}sycl-post-link{{.*}}-emit-only-kernels-as-entry-points -//CHECK_INVO:{{.*}}clang{{.*}}"-fsycl-is-host"{{.*}} // checks that the device and host triple is correct in the generated actions when it is set explicitly //CHECK_ACTIONS-AARCH64: +- 6: offload, "host-sycl (aarch64-unknown-linux-gnu)" {2}, "device-sycl (aarch64-unknown-linux-gnu)" {5}, c++-cpp-output -//CHECK_ACTIONS-AARCH64:{{[0-9]*}}: offload, "host-sycl (aarch64-unknown-linux-gnu)" {{{[0-9]*}}}, "device-sycl (aarch64-unknown-linux-gnu)" {{{[0-9]*}}}, "device-sycl (aarch64-unknown-linux-gnu)" {{{[0-9]*}}}, image +//CHECK_ACTIONS-AARCH64:|- 15: offload, "device-sycl (aarch64-unknown-linux-gnu)" {14}, object +//CHECK_ACTIONS-AARCH64:|- 18: offload, "device-sycl (aarch64-unknown-linux-gnu)" {17}, object diff --git a/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp b/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp index c2d7c0c7cda1b..2f5856265a9ad 100644 --- a/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp +++ b/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp @@ -13,23 +13,25 @@ // RUN: %clang_cl -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=auto /clang:--sysroot=%S/Inputs/SYCL-windows %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s // RUN: %clang_cl -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=per_kernel /clang:--sysroot=%S/Inputs/SYCL-windows %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s // RUN: %clang_cl -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=per_source /clang:--sysroot=%S/Inputs/SYCL-windows %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s -// CHECK: 2: input, "{{.*}}_lib.a", archive -// CHECK: 3: clang-offload-unbundler, {2}, tempfilelist -// CHECK: 4: spirv-to-ir-wrapper, {3}, tempfilelist, (device-sycl) -// CHECK: 5: input, "{{.*}}libsycl-crt{{.*}}", object -// CHECK: 6: clang-offload-unbundler, {5}, object -// CHECK: 7: offload, " (spir64-unknown-unknown)" {6}, object -// CHECK: 68: linker, {7, {{.*}}}, ir, (device-sycl) -// CHECK: 69: linker, {4, 68}, ir, (device-sycl) -// CHECK: 70: foreach, {4, 69}, ir, (device-sycl) -// CHECK: 71: file-table-tform, {4, 70}, tempfilelist, (device-sycl) -// CHECK: 72: sycl-post-link, {71}, tempfiletable, (device-sycl) -// CHECK: 73: foreach, {71, 72}, tempfiletable, (device-sycl) -// CHECK: 74: file-table-tform, {73}, tempfilelist, (device-sycl) -// CHECK: 75: file-table-tform, {73}, tempfilelist, (device-sycl) -// CHECK: 76: foreach, {71, 75}, tempfilelist, (device-sycl) -// CHECK: 77: file-table-tform, {76}, tempfilelist, (device-sycl) -// CHECK: 78: llvm-spirv, {77}, tempfilelist, (device-sycl) -// CHECK: 79: file-table-tform, {74, 78}, tempfiletable, (device-sycl) -// CHECK: 80: clang-offload-wrapper, {79}, object, (device-sycl) -// CHECK: 81: offload, "host-sycl (x86_64-pc-windows-msvc)" {1}, "device-sycl (spir64-unknown-unknown)" {80}, image +// CHECK: 0: input, "[[INPUT:.+\.a]]", object, (host-sycl) +// CHECK: 1: input, "[[INPUT]]", archive +// CHECK: 2: clang-offload-unbundler, {1}, tempfilelist +// CHECK: 3: spirv-to-ir-wrapper, {2}, tempfilelist, (device-sycl) +// CHECK: 4: input, "{{.*}}libsycl-crt{{.*}}", object +// CHECK: 5: clang-offload-unbundler, {4}, object +// CHECK: 6: offload, " (spir64-unknown-unknown)" {5}, object +// CHECK: 67: linker, {6, {{.*}}}, ir, (device-sycl) +// CHECK: 68: linker, {3, 67}, ir, (device-sycl) +// CHECK: 69: foreach, {3, 68}, ir, (device-sycl) +// CHECK: 70: file-table-tform, {3, 69}, tempfilelist, (device-sycl) +// CHECK: 71: sycl-post-link, {70}, tempfiletable, (device-sycl) +// CHECK: 72: foreach, {70, 71}, tempfiletable, (device-sycl) +// CHECK: 73: file-table-tform, {72}, tempfilelist, (device-sycl) +// CHECK: 74: file-table-tform, {72}, tempfilelist, (device-sycl) +// CHECK: 75: foreach, {70, 74}, tempfilelist, (device-sycl) +// CHECK: 76: file-table-tform, {75}, tempfilelist, (device-sycl) +// CHECK: 77: llvm-spirv, {76}, tempfilelist, (device-sycl) +// CHECK: 78: file-table-tform, {73, 77}, tempfiletable, (device-sycl) +// CHECK: 79: clang-offload-wrapper, {78}, object, (device-sycl) +// CHECK: 80: offload, "device-sycl (spir64-unknown-unknown)" {79}, object +// CHECK: 81: linker, {0, 80}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-no-rdc-fat-archive.cpp b/clang/test/Driver/sycl-no-rdc-fat-archive.cpp index 028d00d33a24a..642c695ffbc8e 100644 --- a/clang/test/Driver/sycl-no-rdc-fat-archive.cpp +++ b/clang/test/Driver/sycl-no-rdc-fat-archive.cpp @@ -5,27 +5,28 @@ // RUN: echo "void foo(void) {}" > %t1.cpp // RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl %t1.cpp -c -o %t1_bundle.o // RUN: llvm-ar cr %t_lib.a %t1_bundle.o -// RUN: not %clang -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=none --sysroot=%S/Inputs/SYCL %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s +// RUN: %clang -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=off --sysroot=%S/Inputs/SYCL %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s // RUN: %clang -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=auto --sysroot=%S/Inputs/SYCL %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s // RUN: %clang -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=per_kernel --sysroot=%S/Inputs/SYCL %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s // RUN: %clang -### -fsycl -fno-sycl-rdc -fsycl-device-code-split=per_source --sysroot=%S/Inputs/SYCL %t_lib.a 2>&1 -ccc-print-phases | FileCheck %s -// CHECK: 2: input, "{{.*}}_lib.a", archive -// CHECK: 3: clang-offload-unbundler, {2}, tempfilelist -// CHECK: 4: spirv-to-ir-wrapper, {3}, tempfilelist, (device-sycl) -// CHECK: 5: input, "{{.*}}libsycl-crt{{.*}}", object -// CHECK: 6: clang-offload-unbundler, {5}, object -// CHECK: 7: offload, " (spir64-unknown-unknown)" {6}, object -// CHECK: 65: linker, {7, {{.*}}}, ir, (device-sycl) -// CHECK: 66: linker, {4, 65}, ir, (device-sycl) -// CHECK: 67: foreach, {4, 66}, ir, (device-sycl) -// CHECK: 68: file-table-tform, {4, 67}, tempfilelist, (device-sycl) -// CHECK: 69: sycl-post-link, {68}, tempfiletable, (device-sycl) -// CHECK: 70: foreach, {68, 69}, tempfiletable, (device-sycl) -// CHECK: 71: file-table-tform, {70}, tempfilelist, (device-sycl) -// CHECK: 72: file-table-tform, {70}, tempfilelist, (device-sycl) -// CHECK: 73: foreach, {68, 72}, tempfilelist, (device-sycl) -// CHECK: 74: file-table-tform, {73}, tempfilelist, (device-sycl) -// CHECK: 75: llvm-spirv, {74}, tempfilelist, (device-sycl) -// CHECK: 76: file-table-tform, {71, 75}, tempfiletable, (device-sycl) -// CHECK: 77: clang-offload-wrapper, {76}, object, (device-sycl) -// CHECK: 78: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64-unknown-unknown)" {77}, image +// CHECK: 1: input, "{{.*}}_lib.a", archive +// CHECK: 2: clang-offload-unbundler, {1}, tempfilelist +// CHECK: 3: spirv-to-ir-wrapper, {2}, tempfilelist, (device-sycl) +// CHECK: 4: input, "{{.*}}libsycl-crt{{.*}}", object +// CHECK: 5: clang-offload-unbundler, {4}, object +// CHECK: 6: offload, " (spir64-unknown-unknown)" {5}, object +// CHECK: 64: linker, {6, {{.*}}}, ir, (device-sycl) +// CHECK: 65: linker, {3, 64}, ir, (device-sycl) +// CHECK: 66: foreach, {3, 65}, ir, (device-sycl) +// CHECK: 67: file-table-tform, {3, 66}, tempfilelist, (device-sycl) +// CHECK: 68: sycl-post-link, {67}, tempfiletable, (device-sycl) +// CHECK: 69: foreach, {67, 68}, tempfiletable, (device-sycl) +// CHECK: 70: file-table-tform, {69}, tempfilelist, (device-sycl) +// CHECK: 71: file-table-tform, {69}, tempfilelist, (device-sycl) +// CHECK: 72: foreach, {67, 71}, tempfilelist, (device-sycl) +// CHECK: 73: file-table-tform, {72}, tempfilelist, (device-sycl) +// CHECK: 74: llvm-spirv, {73}, tempfilelist, (device-sycl) +// CHECK: 75: file-table-tform, {70, 74}, tempfiletable, (device-sycl) +// CHECK: 76: clang-offload-wrapper, {75}, object, (device-sycl) +// CHECK: 77: offload, "device-sycl (spir64-unknown-unknown)" {76}, object +// CHECK: 78: linker, {0, 77}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-no-rdc-win.cpp b/clang/test/Driver/sycl-no-rdc-win.cpp index b2b517268d489..d2f668f60ad55 100644 --- a/clang/test/Driver/sycl-no-rdc-win.cpp +++ b/clang/test/Driver/sycl-no-rdc-win.cpp @@ -5,30 +5,30 @@ // RUN: touch %t2.cpp // RUN: %clang -### -fsycl -fno-sycl-rdc --sysroot=%S/Inputs/SYCL-windows %t1.cpp %t2.cpp 2>&1 -ccc-print-phases | FileCheck %s // RUN: %clang_cl -### -fsycl -fno-sycl-rdc /clang:--sysroot=%S/Inputs/SYCL-windows %t1.cpp %t2.cpp 2>&1 -ccc-print-phases | FileCheck %s - // CHECK: 3: input, "{{.*}}1.cpp", c++, (device-sycl) // CHECK: 4: preprocessor, {3}, c++-cpp-output, (device-sycl) // CHECK: 5: compiler, {4}, ir, (device-sycl) +// CHECK: 6: offload, "host-sycl (x86_64-pc-windows-msvc)" {2}, "device-sycl (spir64-unknown-unknown)" {5}, c++-cpp-output // CHECK: 13: input, "{{.*}}2.cpp", c++, (device-sycl) // CHECK: 14: preprocessor, {13}, c++-cpp-output, (device-sycl) // CHECK: 15: compiler, {14}, ir, (device-sycl) - -// CHECK: 21: input, {{.*}}libsycl-crt{{.*}}, object -// CHECK: 22: clang-offload-unbundler, {21}, object -// CHECK: 23: offload, " (spir64-unknown-unknown)" {22}, object -// CHECK: 84: linker, {23, {{.*}}}, ir, (device-sycl) -// CHECK: 85: linker, {5, 84}, ir, (device-sycl) -// CHECK: 86: sycl-post-link, {85}, tempfiletable, (device-sycl) -// CHECK: 87: file-table-tform, {86}, tempfilelist, (device-sycl) -// CHECK: 88: llvm-spirv, {87}, tempfilelist, (device-sycl) -// CHECK: 89: file-table-tform, {86, 88}, tempfiletable, (device-sycl) -// CHECK: 90: clang-offload-wrapper, {89}, object, (device-sycl) - -// CHECK: 91: linker, {15, 84}, ir, (device-sycl) +// CHECK: 16: offload, "host-sycl (x86_64-pc-windows-msvc)" {12}, "device-sycl (spir64-unknown-unknown)" {15}, c++-cpp-output +// CHECK: 20: input, "{{.*}}libsycl-crt{{.*}}", object +// CHECK: 21: clang-offload-unbundler, {20}, object +// CHECK: 22: offload, " (spir64-unknown-unknown)" {21}, object +// CHECK: 83: linker, {22, {{.*}}}, ir, (device-sycl) +// CHECK: 84: linker, {5, 83}, ir, (device-sycl) +// CHECK: 85: sycl-post-link, {84}, tempfiletable, (device-sycl) +// CHECK: 86: file-table-tform, {85}, tempfilelist, (device-sycl) +// CHECK: 87: llvm-spirv, {86}, tempfilelist, (device-sycl) +// CHECK: 88: file-table-tform, {85, 87}, tempfiletable, (device-sycl) +// CHECK: 89: clang-offload-wrapper, {88}, object, (device-sycl) +// CHECK: 90: offload, "device-sycl (spir64-unknown-unknown)" {89}, object +// CHECK: 91: linker, {15, 83}, ir, (device-sycl) // CHECK: 92: sycl-post-link, {91}, tempfiletable, (device-sycl) // CHECK: 93: file-table-tform, {92}, tempfilelist, (device-sycl) // CHECK: 94: llvm-spirv, {93}, tempfilelist, (device-sycl) // CHECK: 95: file-table-tform, {92, 94}, tempfiletable, (device-sycl) // CHECK: 96: clang-offload-wrapper, {95}, object, (device-sycl) - -// CHECK: 97: offload, "host-sycl (x86_64-pc-windows-msvc)" {{{.*}}}, "device-sycl (spir64-unknown-unknown)" {90}, "device-sycl (spir64-unknown-unknown)" {96}, image +// CHECK: 97: offload, "device-sycl (spir64-unknown-unknown)" {96}, object +// CHECK: 98: linker, {9, 19, 90, 97}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-no-rdc.cpp b/clang/test/Driver/sycl-no-rdc.cpp index 8a622ef62649c..2700d8886add7 100644 --- a/clang/test/Driver/sycl-no-rdc.cpp +++ b/clang/test/Driver/sycl-no-rdc.cpp @@ -11,23 +11,22 @@ // CHECK: 13: input, "{{.*}}2.cpp", c++, (device-sycl) // CHECK: 14: preprocessor, {13}, c++-cpp-output, (device-sycl) // CHECK: 15: compiler, {14}, ir, (device-sycl) - -// CHECK: 21: input, {{.*}}libsycl-crt{{.*}}, object -// CHECK: 22: clang-offload-unbundler, {21}, object -// CHECK: 23: offload, " (spir64-unknown-unknown)" {22}, object -// CHECK: 81: linker, {23, {{.*}}}, ir, (device-sycl) -// CHECK: 82: linker, {5, 81}, ir, (device-sycl) -// CHECK: 83: sycl-post-link, {82}, tempfiletable, (device-sycl) -// CHECK: 84: file-table-tform, {83}, tempfilelist, (device-sycl) -// CHECK: 85: llvm-spirv, {84}, tempfilelist, (device-sycl) -// CHECK: 86: file-table-tform, {83, 85}, tempfiletable, (device-sycl) -// CHECK: 87: clang-offload-wrapper, {86}, object, (device-sycl) - -// CHECK: 88: linker, {15, 81}, ir, (device-sycl) +// CHECK: 20: input, {{.*}}libsycl-crt{{.*}}, object +// CHECK: 21: clang-offload-unbundler, {20}, object +// CHECK: 22: offload, " (spir64-unknown-unknown)" {21}, object +// CHECK: 80: linker, {22, {{.*}}}, ir, (device-sycl) +// CHECK: 81: linker, {5, 80}, ir, (device-sycl) +// CHECK: 82: sycl-post-link, {81}, tempfiletable, (device-sycl) +// CHECK: 83: file-table-tform, {82}, tempfilelist, (device-sycl) +// CHECK: 84: llvm-spirv, {83}, tempfilelist, (device-sycl) +// CHECK: 85: file-table-tform, {82, 84}, tempfiletable, (device-sycl) +// CHECK: 86: clang-offload-wrapper, {85}, object, (device-sycl) +// CHECK: 87: offload, "device-sycl (spir64-unknown-unknown)" {86}, object +// CHECK: 88: linker, {15, 80}, ir, (device-sycl) // CHECK: 89: sycl-post-link, {88}, tempfiletable, (device-sycl) // CHECK: 90: file-table-tform, {89}, tempfilelist, (device-sycl) // CHECK: 91: llvm-spirv, {90}, tempfilelist, (device-sycl) // CHECK: 92: file-table-tform, {89, 91}, tempfiletable, (device-sycl) // CHECK: 93: clang-offload-wrapper, {92}, object, (device-sycl) - -// CHECK: 94: offload, "host-sycl (x86_64-unknown-linux-gnu)" {{{.*}}}, "device-sycl (spir64-unknown-unknown)" {87}, "device-sycl (spir64-unknown-unknown)" {93}, image +// CHECK: 94: offload, "device-sycl (spir64-unknown-unknown)" {93}, object +// CHECK: 95: linker, {9, 19, 87, 94}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-offload-amdgcn.cpp b/clang/test/Driver/sycl-offload-amdgcn.cpp index 407dfd02c9205..2d25994446e52 100644 --- a/clang/test/Driver/sycl-offload-amdgcn.cpp +++ b/clang/test/Driver/sycl-offload-amdgcn.cpp @@ -32,18 +32,18 @@ // CHK-PHASES-NO-CC: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASES-NO-CC: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASES-NO-CC: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASES-NO-CC: 10: linker, {9}, image, (host-sycl) -// CHK-PHASES-NO-CC: 11: linker, {5}, ir, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 12: sycl-post-link, {11}, ir, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 13: file-table-tform, {12}, ir, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 14: backend, {13}, assembler, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 15: assembler, {14}, object, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 16: linker, {15}, image, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 17: linker, {16}, hip-fatbin, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 18: foreach, {13, 17}, hip-fatbin, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 19: file-table-tform, {12, 18}, tempfiletable, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 20: clang-offload-wrapper, {19}, object, (device-sycl, gfx906) -// CHK-PHASES-NO-CC: 21: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (amdgcn-amd-amdhsa:gfx906)" {20}, image +// CHK-PHASES-NO-CC: 10: linker, {5}, ir, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 11: sycl-post-link, {10}, ir, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 12: file-table-tform, {11}, ir, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 13: backend, {12}, assembler, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 14: assembler, {13}, object, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 15: linker, {14}, image, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 16: linker, {15}, hip-fatbin, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 17: foreach, {12, 16}, hip-fatbin, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 18: file-table-tform, {11, 17}, tempfiletable, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 19: clang-offload-wrapper, {18}, object, (device-sycl, gfx906) +// CHK-PHASES-NO-CC: 20: offload, "device-sycl (amdgcn-amd-amdhsa:gfx906)" {19}, object +// CHK-PHASES-NO-CC: 21: linker, {9, 20}, image, (host-sycl) /// Check that we only unbundle an archive once. // RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fsycl -nogpulib \ diff --git a/clang/test/Driver/sycl-offload-aot.cpp b/clang/test/Driver/sycl-offload-aot.cpp index 068c7e0408481..e6a0ae32ee69a 100644 --- a/clang/test/Driver/sycl-offload-aot.cpp +++ b/clang/test/Driver/sycl-offload-aot.cpp @@ -94,19 +94,19 @@ // CHK-PHASES-AOT: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASES-AOT: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASES-AOT: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASES-AOT: 10: linker, {9}, image, (host-sycl) -// CHK-PHASES-AOT: 11: linker, {5}, ir, (device-sycl) -// CHK-PHASES-AOT: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) -// CHK-PHASES-AOT: 13: file-table-tform, {12}, tempfilelist, (device-sycl) -// CHK-PHASES-AOT: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) -// CHK-PHASES-FPGA: 15: backend-compiler, {14}, fpga_aocx, (device-sycl) -// CHK-PHASES-GEN: 15: backend-compiler, {14}, image, (device-sycl) -// CHK-PHASES-CPU: 15: backend-compiler, {14}, image, (device-sycl) -// CHK-PHASES-AOT: 16: file-table-tform, {12, 15}, tempfiletable, (device-sycl) -// CHK-PHASES-AOT: 17: clang-offload-wrapper, {16}, object, (device-sycl) -// CHK-PHASES-FPGA: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_fpga-unknown-unknown)" {17}, image -// CHK-PHASES-GEN: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_gen-unknown-unknown)" {17}, image -// CHK-PHASES-CPU: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_x86_64-unknown-unknown)" {17}, image +// CHK-PHASES-AOT: 10: linker, {5}, ir, (device-sycl) +// CHK-PHASES-AOT: 11: sycl-post-link, {10}, tempfiletable, (device-sycl) +// CHK-PHASES-AOT: 12: file-table-tform, {11}, tempfilelist, (device-sycl) +// CHK-PHASES-AOT: 13: llvm-spirv, {12}, tempfilelist, (device-sycl) +// CHK-PHASES-FPGA: 14: backend-compiler, {13}, fpga_aocx, (device-sycl) +// CHK-PHASES-CPU: 14: backend-compiler, {13}, image, (device-sycl) +// CHK-PHASES-GEN: 14: backend-compiler, {13}, image, (device-sycl) +// CHK-PHASES-AOT: 15: file-table-tform, {11, 14}, tempfiletable, (device-sycl) +// CHK-PHASES-AOT: 16: clang-offload-wrapper, {15}, object, (device-sycl) +// CHK-PHASES-FPGA: 17: offload, "device-sycl (spir64_fpga-unknown-unknown)" {16}, object +// CHK-PHASES-GEN: 17: offload, "device-sycl (spir64_gen-unknown-unknown)" {16}, object +// CHK-PHASES-CPU: 17: offload, "device-sycl (spir64_x86_64-unknown-unknown)" {16}, object +// CHK-PHASES-AOT: 18: linker, {9, 17}, image, (host-sycl) /// ########################################################################### @@ -139,7 +139,7 @@ // CHK-TOOLS-GEN: clang{{.*}} "-triple" "spir64_gen-unknown-unknown" // CHK-TOOLS-CPU: clang{{.*}} "-triple" "spir64_x86_64-unknown-unknown" // CHK-TOOLS-AOT: "-fsycl-is-device"{{.*}} "-fsycl-int-header=[[INPUT1:.+\-header.+\.h]]" "-fsycl-int-footer={{.*}}"{{.*}} "-o" "[[OUTPUT1:.+\.bc]]" -// CHK-TOOLS-AOTx: "-o" "[[OUTPUT1:.+\.bc]]" +// CHK-TOOLS-AOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-include" "[[INPUT1]]" {{.*}} "-o" "[[OUTPUT7:.+\.o]] // CHK-TOOLS-AOT: llvm-link{{.*}} "[[OUTPUT1]]" "-o" "[[OUTPUT2:.+\.bc]]" // CHK-TOOLS-AOT: sycl-post-link{{.*}} "-o" "[[OUTPUT2_T:.+\.table]]" "[[OUTPUT2]]" // CHK-TOOLS-AOT: file-table-tform{{.*}} "-extract=Code" "-drop_titles" "-o" "[[OUTPUT2_1:.+\.txt]]" "[[OUTPUT2_T]]" @@ -155,7 +155,6 @@ // CHK-TOOLS-GEN: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_gen{{.*}}" "-kind=sycl" "-batch" "[[OUTPUT4]]" // CHK-TOOLS-CPU: clang-offload-wrapper{{.*}} "-o=[[OUTPUT5:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_x86_64{{.*}}" "-kind=sycl" "-batch" "[[OUTPUT4]]" // CHK-TOOLS-AOT: llc{{.*}} "-filetype=obj" "-o" "[[OUTPUT6:.+\.o]]" "[[OUTPUT5]]" -// CHK-TOOLS-AOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-include" "[[INPUT1]]" {{.*}} "-o" "[[OUTPUT7:.+\.o]] // CHK-TOOLS-AOT: ld{{.*}} "[[OUTPUT7]]" "[[OUTPUT6]]" {{.*}} "-lsycl" // Check to be sure that for windows, the 'exe' tools are called @@ -263,16 +262,16 @@ // CHK-PHASE-MULTI-TARG: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASE-MULTI-TARG: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASE-MULTI-TARG: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASE-MULTI-TARG: 10: linker, {9}, image, (host-sycl) -// CHK-PHASE-MULTI-TARG: 11: input, "[[INPUT]]", c++, (device-sycl) -// CHK-PHASE-MULTI-TARG: 12: preprocessor, {11}, c++-cpp-output, (device-sycl) -// CHK-PHASE-MULTI-TARG: 13: compiler, {12}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG: 14: linker, {13}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 16: file-table-tform, {15}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 17: llvm-spirv, {16}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 18: file-table-tform, {15, 17}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 19: clang-offload-wrapper, {18}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG: 10: input, "[[INPUT]]", c++, (device-sycl) +// CHK-PHASE-MULTI-TARG: 11: preprocessor, {10}, c++-cpp-output, (device-sycl) +// CHK-PHASE-MULTI-TARG: 12: compiler, {11}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG: 13: linker, {12}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG: 14: sycl-post-link, {13}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 15: file-table-tform, {14}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 16: llvm-spirv, {15}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 17: file-table-tform, {14, 16}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 18: clang-offload-wrapper, {17}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG: 19: offload, "device-sycl (spir64-unknown-unknown)" {18}, object // CHK-PHASE-MULTI-TARG: 20: input, "[[INPUT]]", c++, (device-sycl) // CHK-PHASE-MULTI-TARG: 21: preprocessor, {20}, c++-cpp-output, (device-sycl) // CHK-PHASE-MULTI-TARG: 22: compiler, {21}, ir, (device-sycl) @@ -283,14 +282,16 @@ // CHK-PHASE-MULTI-TARG: 27: backend-compiler, {26}, fpga_aocx, (device-sycl) // CHK-PHASE-MULTI-TARG: 28: file-table-tform, {24, 27}, tempfiletable, (device-sycl) // CHK-PHASE-MULTI-TARG: 29: clang-offload-wrapper, {28}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG: 30: linker, {5}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG: 31: sycl-post-link, {30}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 32: file-table-tform, {31}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 33: llvm-spirv, {32}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 34: backend-compiler, {33}, image, (device-sycl) -// CHK-PHASE-MULTI-TARG: 35: file-table-tform, {31, 34}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 36: clang-offload-wrapper, {35}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG: 37: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {19}, "device-sycl (spir64_fpga-unknown-unknown)" {29}, "device-sycl (spir64_gen-unknown-unknown)" {36}, image +// CHK-PHASE-MULTI-TARG: 30: offload, "device-sycl (spir64_fpga-unknown-unknown)" {29}, object +// CHK-PHASE-MULTI-TARG: 31: linker, {5}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG: 32: sycl-post-link, {31}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 33: file-table-tform, {32}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 34: llvm-spirv, {33}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 35: backend-compiler, {34}, image, (device-sycl) +// CHK-PHASE-MULTI-TARG: 36: file-table-tform, {32, 35}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 37: clang-offload-wrapper, {36}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG: 38: offload, "device-sycl (spir64_gen-unknown-unknown)" {37}, object +// CHK-PHASE-MULTI-TARG: 39: linker, {9, 19, 30, 38}, image, (host-sycl) /// Options should not be duplicated in AOT calls // RUN: %clang -fsycl -### -fsycl-targets=spir64_fpga -Xshardware -Xsycl-target-backend "-DBLAH" %s 2>&1 \ diff --git a/clang/test/Driver/sycl-offload-intelfpga-emu.cpp b/clang/test/Driver/sycl-offload-intelfpga-emu.cpp index e3f175d9d296b..a5095b35fd255 100644 --- a/clang/test/Driver/sycl-offload-intelfpga-emu.cpp +++ b/clang/test/Driver/sycl-offload-intelfpga-emu.cpp @@ -10,8 +10,9 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK,CHK-FPGA-EARLY %s // RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga -fsycl-link=image %t.o -o libfoo.a 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK,CHK-FPGA-IMAGE %s -// RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64_fpga-unknown-unknown -g -fsycl-link=image %t.o -o libfoo.a 2>&1 \ -// RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK,CHK-FPGA-IMAGE %s +// CHK-FPGA-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" +// CHK-FPGA-EARLY-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-O2" +// CHK-FPGA-EARLY: "-o" "[[OBJOUT:.+\.o]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-LINK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_fpga-unknown-unknown" "-input=[[INPUT:.+\.o]]" "-output=[[OUTPUT1:.+\.o]]" "-unbundle" // CHK-FPGA-LINK: spirv-to-ir-wrapper{{.*}} "[[OUTPUT1]]" "-o" "[[IROUTPUT1:.+\.bc]]" // CHK-FPGA-LINK: llvm-link{{.*}} "[[IROUTPUT1]]" "-o" "[[OUTPUT2_1:.+\.bc]]" @@ -26,9 +27,6 @@ // CHK-FPGA-IMAGE: clang-offload-wrapper{{.*}} "-o=[[WRAPPEROUT_O:.+\.o]]" "-host=x86_64-unknown-linux-gnu" "--emit-reg-funcs=0" "-target=fpga_aocx-intel-unknown" "-kind=sycl" "-batch" "[[TABLEOUT2]]" // CHK-FPGA-IMAGE: clang-offload-wrapper{{.*}} "-host=x86_64-unknown-linux-gnu"{{.*}} "-target=fpga_aocx-intel-unknown" "-kind=host" "[[WRAPPEROUT_O]]" // CHK-FPGA-IMAGE: llc{{.*}} "-filetype=obj" "-o" "[[WRAPWRAPOUT:.+\.o]]" -// CHK-FPGA-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" -// CHK-FPGA-EARLY-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-O2" -// CHK-FPGA-EARLY: "-o" "[[OBJOUT:.+\.o]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-EARLY: llvm-ar{{.*}} "cqL" "libfoo.a" "[[OBJOUT]]" "[[OBJOUTDEV]]" // CHK-FPGA-IMAGE: llvm-ar{{.*}} "cqL" "libfoo.a" "[[INPUT]]"{{.*}} "[[WRAPWRAPOUT]]" @@ -38,6 +36,8 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK-WIN %s // RUN: %clang_cl -### -fintelfpga -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-link %t.obj -o libfoo.lib 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK-WIN %s +// CHK-FPGA-LINK-WIN: clang-offload-wrapper{{.*}} "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" +// CHK-FPGA-LINK-WIN: clang{{.*}} "-o" "[[OBJOUT:.+\.obj]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-LINK-WIN: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_fpga-unknown-unknown{{.*}}" "-input=[[INPUT:.+\.obj]]" "-output=[[OUTPUT1:.+\.obj]]" "-unbundle" // CHK-FPGA-LINK-WIN: spirv-to-ir-wrapper{{.*}} "[[OUTPUT1]]" "-o" "[[IROUTPUT1:.+\.bc]]" // CHK-FPGA-LINK-WIN: llvm-link{{.*}} "[[IROUTPUT1]]" "-o" "[[OUTPUT2_1:.+\.bc]]" @@ -48,8 +48,6 @@ // CHK-FPGA-LINK-WIN: file-table-tform{{.*}} "-replace=Code,Code" "-o" "[[TABLEOUT2:.+\.table]]" "[[OUTPUT2]]" "[[OUTPUT4]]" // CHK-FPGA-LINK-WIN: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" {{.*}} "-kind=sycl" "-batch" "[[TABLEOUT2]]" // CHK-FPGA-LINK-WIN: llc{{.*}} "-o" "[[OBJOUTDEV:.+\.obj]]" "[[WRAPOUT]]" -// CHK-FPGA-LINK-WIN: clang-offload-wrapper{{.*}} "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" -// CHK-FPGA-LINK-WIN: clang{{.*}} "-o" "[[OBJOUT:.+\.obj]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-LINK-WIN: lib.exe{{.*}} "[[OBJOUT]]" "[[OBJOUTDEV]]" {{.*}} "-OUT:libfoo.lib" /// Check -fintelfpga -fsycl-link with an FPGA archive @@ -66,7 +64,10 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK-LIB,CHK-FPGA-LINK-LIB-EARLY %s // CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=ao" "-targets=sycl-fpga_aocr_emu-intel-unknown" "-input={{.*}}" "-check-section" -// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aocr" "-targets=sycl-fpga_aocr_emu-intel-unknown" "-input=[[INPUT:.+\.a]]" "-output=[[OUTPUT2:.+\.aocr]]" "-unbundle" +// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-x86_64-unknown-linux-gnu" "-input=[[INPUT:.+\.a]]" "-output=[[OUTPUT1:.+\.txt]]" "-unbundle" +// CHK-FPGA-LINK-LIB-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPPED_AOCR_LIST_BC:.+\.bc]]" "-kind=host" "-target=x86_64-unknown-linux-gnu" "[[OUTPUT1]]" +// CHK-FPGA-LINK-LIB-EARLY: clang{{.*}} "-o" "[[OUTPUT_O:.+\.o]]" "-x" "ir" "[[WRAPPED_AOCR_LIST_BC]]" +// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aocr" "-targets=sycl-fpga_aocr_emu-intel-unknown" "-input=[[INPUT]]" "-output=[[OUTPUT2:.+\.aocr]]" "-unbundle" // CHK-FPGA-LINK-LIB-IMAGE: llvm-foreach{{.*}} "--out-ext=aocx" "--in-file-list=[[OUTPUT2]]" "--in-replace=[[OUTPUT2]]" "--out-file-list=[[OUTPUT3:.+\.aocx]]" "--out-replace=[[OUTPUT3]]" "--" "{{.*}}opencl-aot{{.*}} "-device=fpga_fast_emu" "-spv=[[OUTPUT2]]" "-ir=[[OUTPUT3]]" "--bo=-g" // CHK-FPGA-LINK-LIB-IMAGE: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[OUTPUT4:.+\.txt]]" "[[OUTPUT3]]" // CHK-FPGA-LINK-LIB-IMAGE: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-fpga_aocr_emu-intel-unknown" "-input=[[INPUT]]" "-output=[[OUTPUT_BUNDLE_BC:.+\.txt]]" "-unbundle" @@ -87,9 +88,6 @@ // CHK-FPGA-LINK-LIB-EARLYx: clang-offload-bundler{{.*}} "-type=o" "-targets=host-fpga_aocr_emu-intel-unknown"{{.*}} "-input=[[WRAPPED_SYM_PROP2]]" // CHK-FPGA-LINK-LIB-EARLY: clang-offload-wrapper{{.*}} "-o=[[WRAPWRAP_SYM_PROP:.+\.bc]]" "-host=x86_64-unknown-linux-gnu"{{.*}} "-target=fpga_aocr_emu-intel-unknown" "-kind=host" "[[WRAPPED_SYM_PROP2]]" // CHK-FPGA-LINK-LIB-EARLY: llc{{.*}} "-filetype=obj"{{.*}} "[[WRAPWRAP_SYM_PROP]]" -// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-x86_64-unknown-linux-gnu" "-input=[[INPUT]]" "-output=[[OUTPUT1:.+\.txt]]" "-unbundle" -// CHK-FPGA-LINK-LIB-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPPED_AOCR_LIST_BC:.+\.bc]]" "-kind=host" "-target=x86_64-unknown-linux-gnu" "[[OUTPUT1]]" -// CHK-FPGA-LINK-LIB-EARLY: clang{{.*}} "-o" "[[OUTPUT_O:.+\.o]]" "-x" "ir" "[[WRAPPED_AOCR_LIST_BC]]" // CHK-FPGA-LINK-LIB-EARLY: llvm-ar{{.*}} "cqL" {{.*}} "[[OUTPUT_O]]" // CHK-FPGA-LINK-LIB-IMAGE: llvm-ar{{.*}} "cqL" {{.*}} "@[[OUTPUT1]]" @@ -106,6 +104,7 @@ // RUN: touch %t2.o // RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga %t-aocr.a %t2.o 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA %s +// CHK-FPGA: clang-offload-bundler{{.*}} "-type=o" "-targets=host-x86_64-unknown-linux-gnu,sycl-spir64_fpga-unknown-unknown" {{.*}} "-output=[[FINALLINK2:.+\.o]]" "-output=[[OUTPUTx:.+\.o]]" "-unbundle" // CHK-FPGA: clang-offload-bundler{{.*}} "-type=aocr" "-targets=sycl-fpga_aocr_emu-intel-unknown" "-input=[[INPUT:.+\.a]]" "-output=[[OUTPUT2:.+\.aocr]]" "-unbundle" // CHK-FPGA: llvm-foreach{{.*}} "--out-ext=aocx" "--in-file-list=[[OUTPUT2]]" "--in-replace=[[OUTPUT2]]" "--out-file-list=[[OUTPUT3:.+\.aocx]]" "--out-replace=[[OUTPUT3]]" "--" "{{.*}}opencl-aot{{.*}} "-device=fpga_fast_emu" "-spv=[[OUTPUT2]]" "-ir=[[OUTPUT3]]" "--bo=-g" // CHK-FPGA: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[OUTPUT4:.+\.txt]]" "[[OUTPUT3]]" @@ -113,7 +112,7 @@ // CHK-FPGA: file-table-tform{{.*}} "-rename=0,SymAndProps" "-o" "[[OUTPUT_BC2:.+\.txt]]" "[[OUTPUT_BUNDLE_BC]]" // CHK-FPGA: clang-offload-wrapper{{.*}} "-o=[[WRAPPED_SYM_PROP:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_fpga" "-kind=sycl" "--sym-prop-bc-files=[[OUTPUT_BC2]]" "-batch" "[[OUTPUT4]]" // CHK-FPGA: llc{{.*}} "-filetype=obj" "-o" "[[FINALLINK:.+\.o]]" "[[WRAPPED_SYM_PROP]]" -// CHK-FPGA: clang-offload-bundler{{.*}} "-type=o" "-targets=host-x86_64-unknown-linux-gnu,sycl-spir64_fpga-unknown-unknown" {{.*}} "-output=[[FINALLINK2:.+\.o]]" "-output=[[OUTPUT1:.+\.o]]" "-unbundle" +// CHK-FPGA: clang-offload-bundler{{.*}} "-type=o" "-targets=host-x86_64-unknown-linux-gnu,sycl-spir64_fpga-unknown-unknown" {{.*}} "-output=[[FINALLINKx:.+\.o]]" "-output=[[OUTPUT1:.+\.o]]" "-unbundle" // CHK-FPGA: spirv-to-ir-wrapper{{.*}} "[[OUTPUT1]]" "-o" "[[IROUTPUT1:.+\.bc]]" // CHK-FPGA: llvm-link{{.*}} "[[IROUTPUT1]]"{{.*}} "-o" "[[OUTPUT2_BC:.+\.bc]]" // CHK-FPGA: sycl-post-link{{.*}} "-O2" "-spec-const=emulation"{{.*}} "-o" "[[OUTPUT3_TABLE:.+\.table]]" "[[OUTPUT2_BC]]" @@ -141,14 +140,14 @@ // RUN: %clang_cl -fintelfpga %t_aocx.a -ccc-print-phases 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-PHASES %s // CHK-FPGA-AOCX-PHASES: 0: input, "[[INPUT:.+\.a]]", fpga_aocx, (host-sycl) -// CHK-FPGA-AOCX-PHASES: 1: linker, {0}, image, (host-sycl) -// CHK-FPGA-AOCX-PHASES: 2: clang-offload-unbundler, {0}, fpga_aocx -// CHK-FPGA-AOCX-PHASES: 3: file-table-tform, {2}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCX-PHASES: 4: input, "[[INPUT]]", fpga_aocx -// CHK-FPGA-AOCX-PHASES: 5: clang-offload-unbundler, {4}, tempfilelist -// CHK-FPGA-AOCX-PHASES: 6: file-table-tform, {5}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCX-PHASES: 7: clang-offload-wrapper, {3, 6}, object, (device-sycl) -// CHK-FPGA-AOCX-PHASES: 8: offload, "host-sycl ({{x86_64.*}})" {1}, "device-sycl (spir64_fpga-unknown-unknown)" {7}, image +// CHK-FPGA-AOCX-PHASES: 1: clang-offload-unbundler, {0}, fpga_aocx +// CHK-FPGA-AOCX-PHASES: 2: file-table-tform, {1}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCX-PHASES: 3: input, "[[INPUT]]", fpga_aocx +// CHK-FPGA-AOCX-PHASES: 4: clang-offload-unbundler, {3}, tempfilelist +// CHK-FPGA-AOCX-PHASES: 5: file-table-tform, {4}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCX-PHASES: 6: clang-offload-wrapper, {2, 5}, object, (device-sycl) +// CHK-FPGA-AOCX-PHASES: 7: offload, "device-sycl (spir64_fpga-unknown-unknown)" {6}, object +// CHK-FPGA-AOCX-PHASES: 8: linker, {0, 7}, image, (host-sycl) // RUN: %clangxx -target x86_64-unknown-linux-gnu -fintelfpga %t_aocx.a -### 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX,CHK-FPGA-AOCX-LIN %s @@ -170,13 +169,14 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-SRC,CHK-FPGA-AOCX-SRC-LIN %s // RUN: %clang_cl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga %s %t_aocx.a -### 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-SRC,CHK-FPGA-AOCX-SRC-WIN %s +// CHK-FPGA-AOCX-SRC: clang{{.*}} "-cc1" {{.*}} "-fsycl-is-device" {{.*}} "-o" "[[DEVICEBC:.+\.bc]]" +// CHK-FPGA-AOCX-SRC: clang{{.*}} "-fsycl-is-host" {{.*}} "-o" "[[HOSTOBJ:.+\.(o|obj)]]" // CHK-FPGA-AOCX-SRC: clang-offload-bundler{{.*}} "-type=aocx" "-targets=sycl-fpga_aocx-intel-unknown" "-input=[[LIBINPUT:.+\.a]]" "-output=[[BUNDLEOUT:.+\.aocx]]" "-unbundle" // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[TABLEOUT:.+\.txt]]" "[[BUNDLEOUT]]" // CHK-FPGA-AOCX-SRC: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-fpga_aocx-intel-unknown" "-input=[[LIBINPUT]]" "-output=[[BUNDLEBCOUT:.+\.txt]]" "-unbundle" // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-rename=0,SymAndProps" "-o" "[[SYM_AND_PROP:.+\.txt]]" "[[BUNDLEBCOUT]]" // CHK-FPGA-AOCX-SRC: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" {{.*}} "-target=spir64_fpga" "-kind=sycl" "--sym-prop-bc-files=[[SYM_AND_PROP]]" "-batch" "[[TABLEOUT]]" // CHK-FPGA-AOCX-SRC: llc{{.*}} "-filetype=obj" "-o" "[[LLCOUT:.+\.(o|obj)]]" "[[WRAPOUT]]" -// CHK-FPGA-AOCX-SRC: clang{{.*}} "-cc1" {{.*}} "-fsycl-is-device" {{.*}} "-o" "[[DEVICEBC:.+\.bc]]" // CHK-FPGA-AOCX-SRC: llvm-link{{.*}} "[[DEVICEBC]]" "-o" "[[LLVMLINKOUT:.+\.bc]]" "--suppress-warnings" // CHK-FPGA-AOCX-SRC: sycl-post-link{{.*}} "-O2" "-spec-const=emulation" "-device-globals" "-o" "[[POSTLINKOUT:.+\.table]]" "[[LLVMLINKOUT]] // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-o" "[[TABLEOUT:.+\.txt]]" "[[POSTLINKOUT]]" @@ -185,7 +185,6 @@ // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-replace=Code,Code" "-o" "[[TABLEOUT2:.+\.table]]" "[[POSTLINKOUT]]" "[[OUTPUT4]]" // CHK-FPGA-AOCX-SRC: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" {{.*}} "-kind=sycl" "-batch" "[[TABLEOUT2]]" // CHK-FPGA-AOCX-SRC: llc{{.*}} "-filetype=obj" "-o" "[[LLCOUTSRC:.+\.(o|obj)]]" "[[WRAPOUT]]" -// CHK-FPGA-AOCX-SRC: clang{{.*}} "-fsycl-is-host" {{.*}} "-o" "[[HOSTOBJ:.+\.(o|obj)]]" // CHK-FPGA-AOCX-SRC-LIN: ld{{.*}} "[[HOSTOBJ]]" "[[LIBINPUT]]" "[[LLCOUT]]" "[[LLCOUTSRC]]" // CHK-FPGA-AOCX-SRC-WIN: link{{.*}} "[[HOSTOBJ]]" "[[LIBINPUT]]" "[[LLCOUT]]" "[[LLCOUTSRC]]" @@ -195,13 +194,14 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-OBJ,CHK-FPGA-AOCX-OBJ-LIN %s // RUN: %clang_cl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga %t.o %t_aocx.a -### 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-OBJ,CHK-FPGA-AOCX-OBJ-WIN %s +// CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJx:.+\.(o|obj)]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=aocx" "-targets=sycl-fpga_aocx-intel-unknown" "-input=[[LIBINPUT:.+\.a]]" "-output=[[BUNDLEOUT:.+\.aocx]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[TABLEOUT:.+\.txt]]" "[[BUNDLEOUT]]" // CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-fpga_aocx-intel-unknown" "-input=[[LIBINPUT]]" "-output=[[BUNDLEBCOUT:.+\.txt]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: file-table-tform{{.*}} "-rename=0,SymAndProps" "-o" "[[SYM_AND_PROP:.+\.txt]]" "[[BUNDLEBCOUT]]" // CHK-FPGA-AOCX-OBJ: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" {{.*}} "-target=spir64_fpga" "-kind=sycl" "--sym-prop-bc-files=[[SYM_AND_PROP]]" "-batch" "[[TABLEOUT]]" // CHK-FPGA-AOCX-OBJ: llc{{.*}} "-filetype=obj" "-o" "[[LLCOUT:.+\.(o|obj)]]" "[[WRAPOUT]]" -// CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJ:.+\.(o|obj)]]" "-unbundle" +// CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJx:.+\.(o|obj)]]" "-output=[[DEVICEOBJ:.+\.(o|obj)]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: spirv-to-ir-wrapper{{.*}} "[[DEVICEOBJ]]" "-o" "[[IROUTPUT:.+\.bc]]" // CHK-FPGA-AOCX-OBJ: llvm-link{{.*}} "[[IROUTPUT]]" "-o" "[[LLVMLINKOUT:.+\.bc]]" "--suppress-warnings" // CHK-FPGA-AOCX-OBJ: sycl-post-link{{.*}} "-O2" "-spec-const=emulation"{{.*}} "-o" "[[POSTLINKOUT:.+\.table]]" "[[LLVMLINKOUT]] @@ -233,7 +233,7 @@ // CHK-FPGA-LINK-SRC: 10: clang-offload-wrapper, {9}, ir, (host-sycl) // CHK-FPGA-LINK-SRC: 11: backend, {10}, assembler, (host-sycl) // CHK-FPGA-LINK-SRC: 12: assembler, {11}, object, (host-sycl) -// CHK-FPGA-LINK-SRC: 13: linker, {12}, archive, (host-sycl) +// CHK-FPGA-LINK-SRC: 13: offload, "host-sycl (x86_64-unknown-linux-gnu)" {12}, object // CHK-FPGA-LINK-SRC: 14: linker, {5}, ir, (device-sycl) // CHK-FPGA-LINK-SRC: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) // CHK-FPGA-LINK-SRC: 16: file-table-tform, {15}, tempfilelist, (device-sycl) @@ -241,9 +241,11 @@ // CHK-FPGA-LINK-SRC: 18: backend-compiler, {17}, fpga_aocr_emu, (device-sycl) // CHK-FPGA-LINK-SRC: 19: file-table-tform, {15, 18}, tempfiletable, (device-sycl) // CHK-FPGA-LINK-SRC: 20: clang-offload-wrapper, {19}, object, (device-sycl) -// CHK-FPGA-LINK-SRC: 21: clang-offload-wrapper, {19}, object, (device-sycl) -// CHK-FPGA-LINK-SRC: 22: clang-offload-wrapper, {21}, object, (device-sycl) -// CHK-FPGA-LINK-SRC: 23: offload, "host-sycl (x86_64-unknown-linux-gnu)" {13}, "device-sycl (spir64_fpga-unknown-unknown)" {20}, "device-sycl (spir64_fpga-unknown-unknown)" {22}, archive +// CHK-FPGA-LINK-SRC: 21: offload, "device-sycl (spir64_fpga-unknown-unknown)" {20}, object +// CHK-FPGA-LINK-SRC: 22: clang-offload-wrapper, {19}, object, (device-sycl) +// CHK-FPGA-LINK-SRC: 23: clang-offload-wrapper, {22}, object, (device-sycl) +// CHK-FPGA-LINK-SRC: 24: offload, "device-sycl (spir64_fpga-unknown-unknown)" {23}, object +// CHK-FPGA-LINK-SRC: 25: linker, {13, 21, 24}, archive, (host-sycl) /// Check for implied options with emulation (-g -O0) // RUN: %clang -### -target x86_64-unknown-linux-gnu -fintelfpga -g -O0 -Xs "-DFOO1 -DFOO2" %s 2>&1 \ diff --git a/clang/test/Driver/sycl-offload-intelfpga-link.cpp b/clang/test/Driver/sycl-offload-intelfpga-link.cpp index 35f9bd549b341..1cefb50b654e6 100644 --- a/clang/test/Driver/sycl-offload-intelfpga-link.cpp +++ b/clang/test/Driver/sycl-offload-intelfpga-link.cpp @@ -6,8 +6,9 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK,CHK-FPGA-EARLY %s // RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga -fsycl-link=image -Xshardware %t.o -o libfoo.a 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK,CHK-FPGA-IMAGE %s -// RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64_fpga-unknown-unknown -fsycl-link=image -Xshardware %t.o -o libfoo.a 2>&1 \ -// RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK,CHK-FPGA-IMAGE %s +// CHK-FPGA-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" +// CHK-FPGA-EARLY-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-O2" +// CHK-FPGA-EARLY: "-o" "[[OBJOUT:.+\.o]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-LINK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_fpga-unknown-unknown" "-input=[[INPUT:.+\.o]]" "-output=[[OUTPUT1:.+\.o]]" "-unbundle" // CHK-FPGA-LINK-NOT: clang-offload-bundler{{.*}} // CHK-FPGA-LINK: spirv-to-ir-wrapper{{.*}} "[[OUTPUT1]]" "-o" "[[IROUTPUT1:.+\.bc]]" @@ -19,9 +20,6 @@ // CHK-FPGA-IMAGE: aoc{{.*}} "-o" "[[OUTPUT5:.+\.aocx]]" "[[OUTPUT3]]" "-sycl" // CHK-FPGA-LINK: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" {{.*}} "-kind=sycl" // CHK-FPGA-LINK: llc{{.*}} "-o" "[[OBJOUTDEV:.+\.o]]" "[[WRAPOUT]]" -// CHK-FPGA-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" -// CHK-FPGA-EARLY-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-O2" -// CHK-FPGA-EARLY: "-o" "[[OBJOUT:.+\.o]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-EARLY: llvm-ar{{.*}} "cqL" "libfoo.a" "[[OBJOUT]]" "[[OBJOUTDEV]]" // CHK-FPGA-IMAGE: llvm-ar{{.*}} "cqL" "libfoo.a" "[[INPUT]]" "[[OBJOUTDEV]]" @@ -42,6 +40,8 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK-WIN %s // RUN: %clang_cl -### -fintelfpga -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-link -Xshardware %t.obj -o libfoo.lib 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK-WIN %s +// CHK-FPGA-LINK-WIN: clang-offload-wrapper{{.*}} "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" +// CHK-FPGA-LINK-WIN: clang{{.*}} "-o" "[[OBJOUT:.+\.obj]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-LINK-WIN: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_fpga-unknown-unknown{{.*}}" "-input=[[INPUT:.+\.obj]]" "-output=[[OUTPUT1:.+\.obj]]" "-unbundle" // CHK-FPGA-LINK-WIN-NOT: clang-offload-bundler{{.*}} // CHK-FPGA-LINK-WIN: spirv-to-ir-wrapper{{.*}} "[[OUTPUT1]]" "-o" "[[IROUTPUT1:.+\.bc]]" @@ -52,8 +52,6 @@ // CHK-FPGA-LINK-WIN: aoc{{.*}} "-o" "[[OUTPUT5:.+\.aocr]]" "[[OUTPUT3]]" "-sycl" "-rtl" // CHK-FPGA-LINK-WIN: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" {{.*}} "-kind=sycl" // CHK-FPGA-LINK-WIN: llc{{.*}} "-o" "[[OBJOUTDEV:.+\.obj]]" "[[WRAPOUT]]" -// CHK-FPGA-LINK-WIN: clang-offload-wrapper{{.*}} "-o" "[[WRAPOUTHOST:.+\.bc]]" "-kind=host" -// CHK-FPGA-LINK-WIN: clang{{.*}} "-o" "[[OBJOUT:.+\.obj]]" {{.*}} "[[WRAPOUTHOST]]" // CHK-FPGA-LINK-WIN: lib.exe{{.*}} "[[OBJOUT]]" "[[OBJOUTDEV]]" {{.*}} "-OUT:libfoo.lib" /// Check -fintelfpga -fsycl-link with an FPGA archive @@ -70,7 +68,10 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-LINK-LIB,CHK-FPGA-LINK-LIB-EARLY %s // CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=ao" "-targets=sycl-fpga_aocx-intel-unknown" "-input={{.*}}" "-check-section" // CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=ao" "-targets=sycl-fpga_aocr-intel-unknown" "-input={{.*}}" "-check-section" -// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aocr" "-targets=sycl-fpga_aocr-intel-unknown" "-input=[[INPUT:.+\.a]]" "-output=[[OUTPUT2:.+\.aocr]]" "-unbundle" +// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-x86_64-unknown-linux-gnu" "-input=[[INPUT:.+\.a]]" "-output=[[OUTPUT1:.+\.txt]]" "-unbundle" +// CHK-FPGA-LINK-LIB-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPPED_AOCR_LIST_BC:.+\.bc]]" "-kind=host" "-target=x86_64-unknown-linux-gnu" "[[OUTPUT1]]" +// CHK-FPGA-LINK-LIB-EARLY: clang{{.*}} "-o" "[[OUTPUT_O:.+\.o]]" "-x" "ir" "[[WRAPPED_AOCR_LIST_BC]]" +// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aocr" "-targets=sycl-fpga_aocr-intel-unknown" "-input=[[INPUT]]" "-output=[[OUTPUT2:.+\.aocr]]" "-unbundle" // CHK-FPGA-LINK-LIB-IMAGE: llvm-foreach{{.*}} "--out-ext=aocx" "--in-file-list=[[OUTPUT2]]" "--in-replace=[[OUTPUT2]]" "--out-file-list=[[OUTPUT3:.+\.aocx]]" "--out-replace=[[OUTPUT3]]" "--out-increment=a.prj" "--" "{{.*}}aoc{{.*}}" "-o" "[[OUTPUT3]]" "[[OUTPUT2]]" "-sycl" "-output-report-folder=a.prj" "-g" // CHK-FPGA-LINK-LIB-IMAGE: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[OUTPUT4:.+\.txt]]" "[[OUTPUT3]]" // CHK-FPGA-LINK-LIB-IMAGE: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-fpga_aocr-intel-unknown" "-input=[[INPUT]]" "-output=[[OUTPUT_BUNDLE_BC:.+\.txt]]" "-unbundle" @@ -89,9 +90,6 @@ // CHK-FPGA-LINK-LIB-EARLY: clang-offload-wrapper{{.*}} "-o=[[WRAPPED_SYM_PROP2:.+\.o]]" "-host=x86_64-unknown-linux-gnu" "-target=fpga_aocr-intel-unknown" "-kind=sycl" "--sym-prop-bc-files=[[OUTPUT_BC2]]" "-batch" "[[OUTPUT4]]" // CHK-FPGA-LINK-LIB-EARLY: clang-offload-wrapper{{.*}} "-o=[[WRAPWRAP_SYM_PROP:.+\.bc]]" "-host=x86_64-unknown-linux-gnu"{{.*}} "-target=fpga_aocr-intel-unknown" "-kind=host" "[[WRAPPED_SYM_PROP2]]" // CHK-FPGA-LINK-LIB-EARLY: llc{{.*}} "-filetype=obj"{{.*}} "[[WRAPWRAP_SYM_PROP]]" -// CHK-FPGA-LINK-LIB: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-x86_64-unknown-linux-gnu" "-input=[[INPUT]]" "-output=[[OUTPUT1:.+\.txt]]" "-unbundle" -// CHK-FPGA-LINK-LIB-EARLY: clang-offload-wrapper{{.*}} "-host" "x86_64-unknown-linux-gnu" "-o" "[[WRAPPED_AOCR_LIST_BC:.+\.bc]]" "-kind=host" "-target=x86_64-unknown-linux-gnu" "[[OUTPUT1]]" -// CHK-FPGA-LINK-LIB-EARLY: clang{{.*}} "-o" "[[OUTPUT_O:.+\.o]]" "-x" "ir" "[[WRAPPED_AOCR_LIST_BC]]" // CHK-FPGA-LINK-LIB-EARLY: llvm-ar{{.*}} "cqL" {{.*}} "[[OUTPUT_O]]" // CHK-FPGA-LINK-LIB-IMAGE: llvm-ar{{.*}} "cqL" {{.*}} "@[[OUTPUT1]]" @@ -146,7 +144,7 @@ // CHK-FPGA-LINK-SRC: 10: clang-offload-wrapper, {9}, ir, (host-sycl) // CHK-FPGA-LINK-SRC: 11: backend, {10}, assembler, (host-sycl) // CHK-FPGA-LINK-SRC: 12: assembler, {11}, object, (host-sycl) -// CHK-FPGA-LINK-SRC: 13: linker, {12}, archive, (host-sycl) +// CHK-FPGA-LINK-SRC: 13: offload, "host-sycl (x86_64-unknown-linux-gnu)" {12}, object // CHK-FPGA-LINK-SRC: 14: linker, {5}, ir, (device-sycl) // CHK-FPGA-LINK-SRC: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) // CHK-FPGA-LINK-SRC: 16: file-table-tform, {15}, tempfilelist, (device-sycl) @@ -154,15 +152,19 @@ // CHK-FPGA-LINK-SRC: 18: backend-compiler, {17}, fpga_aocr_emu, (device-sycl) // CHK-FPGA-LINK-SRC: 19: file-table-tform, {15, 18}, tempfiletable, (device-sycl) // CHK-FPGA-LINK-SRC: 20: clang-offload-wrapper, {19}, object, (device-sycl) -// CHK-FPGA-LINK-SRC: 21: clang-offload-wrapper, {19}, object, (device-sycl) -// CHK-FPGA-LINK-SRC: 22: clang-offload-wrapper, {21}, object, (device-sycl) -// CHK-FPGA-LINK-SRC: 23: offload, "host-sycl (x86_64-unknown-linux-gnu)" {13}, "device-sycl (spir64_fpga-unknown-unknown)" {20}, "device-sycl (spir64_fpga-unknown-unknown)" {22}, archive +// CHK-FPGA-LINK-SRC: 21: offload, "device-sycl (spir64_fpga-unknown-unknown)" {20}, object +// CHK-FPGA-LINK-SRC: 22: clang-offload-wrapper, {19}, object, (device-sycl) +// CHK-FPGA-LINK-SRC: 23: clang-offload-wrapper, {22}, object, (device-sycl) +// CHK-FPGA-LINK-SRC: 24: offload, "device-sycl (spir64_fpga-unknown-unknown)" {23}, object +// CHK-FPGA-LINK-SRC: 25: linker, {13, 21, 24}, archive, (host-sycl) /// -fintelfpga with AOCR library and additional object // RUN: touch %t2.o // RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga -Xshardware %t-aocr.a %t2.o 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA %s +// CHK-FPGA: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-x86_64-unknown-linux-gnu" {{.*}} "-output=[[FINALLINK4:.+\.txt]]" "-unbundle" +// CHK-FPGA: clang-offload-bundler{{.*}} "-type=o" "-targets=host-x86_64-unknown-linux-gnu,sycl-spir64_fpga-unknown-unknown" {{.*}} "-output=[[FINALLINK2:.+\.o]]" "-output=[[OUTPUT1x:.+\.o]]" "-unbundle" // CHK-FPGA: clang-offload-bundler{{.*}} "-type=aocr" "-targets=sycl-fpga_aocr-intel-unknown" "-input=[[INPUT:.+\.a]]" "-output=[[OUTPUT2:.+\.aocr]]" "-unbundle" // CHK-FPGA: llvm-foreach{{.*}} "--out-ext=aocx" "--in-file-list=[[OUTPUT2]]" "--in-replace=[[OUTPUT2]]" "--out-file-list=[[OUTPUT3:.+\.aocx]]" "--out-replace=[[OUTPUT3]]" "--out-increment=a.prj" "--" "{{.*}}aoc{{.*}}" "-o" "[[OUTPUT3]]" "[[OUTPUT2]]" "-sycl" "-output-report-folder=a.prj" "-g" // CHK-FPGA: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[OUTPUT4:.+\.txt]]" "[[OUTPUT3]]" @@ -170,7 +172,7 @@ // CHK-FPGA: file-table-tform{{.*}} "-rename=0,SymAndProps" "-o" "[[OUTPUT_BC2:.+\.txt]]" "[[OUTPUT_BUNDLE_BC]]" // CHK-FPGA: clang-offload-wrapper{{.*}} "-o=[[WRAPPED_SYM_PROP:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_fpga" "-kind=sycl" "--sym-prop-bc-files=[[OUTPUT_BC2]]" "-batch" "[[OUTPUT4]]" // CHK-FPGA: llc{{.*}} "-filetype=obj" "-o" "[[FINALLINK:.+\.o]]" "[[WRAPPED_SYM_PROP]]" -// CHK-FPGA: clang-offload-bundler{{.*}} "-type=o" "-targets=host-x86_64-unknown-linux-gnu,sycl-spir64_fpga-unknown-unknown" {{.*}} "-output=[[FINALLINK2:.+\.o]]" "-output=[[OUTPUT1:.+\.o]]" "-unbundle" +// CHK-FPGA: clang-offload-bundler{{.*}} "-type=o" "-targets=host-x86_64-unknown-linux-gnu,sycl-spir64_fpga-unknown-unknown" {{.*}} "-output=[[FINALLINK2x:.+\.o]]" "-output=[[OUTPUT1:.+\.o]]" "-unbundle" // CHK-FPGA: spirv-to-ir-wrapper{{.*}} "[[OUTPUT1]]" "-o" "[[IROUTPUT1:.+\.bc]]" // CHK-FPGA: llvm-link{{.*}} "[[IROUTPUT1]]" "-o" "[[OUTPUT2_BC:.+\.bc]]" // CHK-FPGA: sycl-post-link{{.*}} "-O2" "-spec-const=emulation" "-device-globals" "-o" "[[OUTPUT3_TABLE:.+\.table]]" "[[OUTPUT2_BC]]" @@ -182,7 +184,6 @@ // CHK-FPGA: file-table-tform{{.*}} "-replace=Code,Code" "-o" "[[TABLEOUT2:.+\.table]]" "[[OUTPUT3_TABLE]]" "[[OUTPUT6]]" // CHK-FPGA: clang-offload-wrapper{{.*}} "-o=[[OUTPUT7:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_fpga" "-kind=sycl" "-batch" "[[TABLEOUT2]]" // CHK-FPGA: llc{{.*}} "-filetype=obj" "-o" "[[FINALLINK3:.+\.o]]" "[[OUTPUT7]]" -// CHK-FPGA: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-x86_64-unknown-linux-gnu" {{.*}} "-output=[[FINALLINK4:.+\.txt]]" "-unbundle" // CHK-FPGA: {{link|ld}}{{.*}} "@[[FINALLINK4]]" "[[FINALLINK2]]" "[[FINALLINK]]" "[[FINALLINK3]]" /// -fintelfpga with AOCX library @@ -198,14 +199,14 @@ // RUN: %clang_cl --target=x86_64-pc-windows-msvc -Xshardware -fintelfpga %t_aocx.a -ccc-print-phases 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-PHASES %s // CHK-FPGA-AOCX-PHASES: 0: input, "{{.*}}", fpga_aocx, (host-sycl) -// CHK-FPGA-AOCX-PHASES: 1: linker, {0}, image, (host-sycl) -// CHK-FPGA-AOCX-PHASES: 2: clang-offload-unbundler, {0}, fpga_aocx -// CHK-FPGA-AOCX-PHASES: 3: file-table-tform, {2}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCX-PHASES: 4: input, "{{.*}}", fpga_aocx -// CHK-FPGA-AOCX-PHASES: 5: clang-offload-unbundler, {4}, tempfilelist -// CHK-FPGA-AOCX-PHASES: 6: file-table-tform, {5}, tempfilelist, (device-sycl) -// CHK-FPGA-AOCX-PHASES: 7: clang-offload-wrapper, {3, 6}, object, (device-sycl) -// CHK-FPGA-AOCX-PHASES: 8: offload, "host-sycl ({{.*}}x86_64{{.*}})" {1}, "device-sycl (spir64_fpga-unknown-unknown)" {7}, image +// CHK-FPGA-AOCX-PHASES: 1: clang-offload-unbundler, {0}, fpga_aocx +// CHK-FPGA-AOCX-PHASES: 2: file-table-tform, {1}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCX-PHASES: 3: input, "{{.*}}", fpga_aocx +// CHK-FPGA-AOCX-PHASES: 4: clang-offload-unbundler, {3}, tempfilelist +// CHK-FPGA-AOCX-PHASES: 5: file-table-tform, {4}, tempfilelist, (device-sycl) +// CHK-FPGA-AOCX-PHASES: 6: clang-offload-wrapper, {2, 5}, object, (device-sycl) +// CHK-FPGA-AOCX-PHASES: 7: offload, "device-sycl (spir64_fpga-unknown-unknown)" {6}, object +// CHK-FPGA-AOCX-PHASES: 8: linker, {0, 7}, image, (host-sycl) // RUN: %clangxx -target x86_64-unknown-linux-gnu -fintelfpga -Xshardware %t_aocx.a -### 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX,CHK-FPGA-AOCX-LIN %s @@ -227,13 +228,14 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-SRC,CHK-FPGA-AOCX-SRC-LIN %s // RUN: %clang_cl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -Xshardware -fintelfpga %s %t_aocx.a -### 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-SRC,CHK-FPGA-AOCX-SRC-WIN %s +// CHK-FPGA-AOCX-SRC: clang{{.*}} "-cc1" {{.*}} "-fsycl-is-device" {{.*}} "-o" "[[DEVICEBC:.+\.bc]]" +// CHK-FPGA-AOCX-SRC: clang{{.*}} "-fsycl-is-host" {{.*}} "-o" "[[HOSTOBJ:.+\.(o|obj)]]" // CHK-FPGA-AOCX-SRC: clang-offload-bundler{{.*}} "-type=aocx" "-targets=sycl-fpga_aocx-intel-unknown" "-input=[[LIBINPUT:.+\.a]]" "-output=[[BUNDLEOUT:.+\.aocx]]" "-unbundle" // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[TABLEOUT:.+\.txt]]" "[[BUNDLEOUT]]" // CHK-FPGA-AOCX-SRC: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-fpga_aocx-intel-unknown" "-input=[[LIBINPUT]]" "-output=[[BUNDLEBCOUT:.+\.txt]]" "-unbundle" // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-rename=0,SymAndProps" "-o" "[[SYM_AND_PROP:.+\.txt]]" "[[BUNDLEBCOUT]]" // CHK-FPGA-AOCX-SRC: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" {{.*}} "-target=spir64_fpga" "-kind=sycl" "--sym-prop-bc-files=[[SYM_AND_PROP]]" "-batch" "[[TABLEOUT]]" // CHK-FPGA-AOCX-SRC: llc{{.*}} "-filetype=obj" "-o" "[[LLCOUT:.+\.(o|obj)]]" "[[WRAPOUT]]" -// CHK-FPGA-AOCX-SRC: clang{{.*}} "-cc1" {{.*}} "-fsycl-is-device" {{.*}} "-o" "[[DEVICEBC:.+\.bc]]" // CHK-FPGA-AOCX-SRC: llvm-link{{.*}} "[[DEVICEBC]]" "-o" "[[LLVMLINKOUT:.+\.bc]]" "--suppress-warnings" // CHK-FPGA-AOCX-SRC: sycl-post-link{{.*}} "-O2" "-spec-const=emulation" "-device-globals" "-o" "[[POSTLINKOUT:.+\.table]]" "[[LLVMLINKOUT]] // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-o" "[[TABLEOUT:.+\.txt]]" "[[POSTLINKOUT]]" @@ -242,7 +244,6 @@ // CHK-FPGA-AOCX-SRC: file-table-tform{{.*}} "-replace=Code,Code" "-o" "[[TABLEOUT2:.+\.table]]" "[[POSTLINKOUT]]" "[[AOCOUT]]" // CHK-FPGA-AOCX-SRC: clang-offload-wrapper{{.*}} "-o=[[WRAPOUTSRC:.+.bc]]" {{.*}} "-target=spir64_fpga" "-kind=sycl" "-batch" "[[TABLEOUT2]]" // CHK-FPGA-AOCX-SRC: llc{{.*}} "-filetype=obj" "-o" "[[LLCOUTSRC:.+\.(o|obj)]]" "[[WRAPOUTSRC]]" -// CHK-FPGA-AOCX-SRC: clang{{.*}} "-fsycl-is-host" {{.*}} "-o" "[[HOSTOBJ:.+\.(o|obj)]]" // CHK-FPGA-AOCX-SRC-LIN: ld{{.*}} "[[HOSTOBJ]]" "[[LIBINPUT]]" "[[LLCOUT]]" "[[LLCOUTSRC]]" // CHK-FPGA-AOCX-SRC-WIN: link{{.*}} "[[HOSTOBJ]]" "[[LIBINPUT]]" "[[LLCOUT]]" "[[LLCOUTSRC]]" @@ -252,13 +253,14 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-OBJ,CHK-FPGA-AOCX-OBJ-LIN %s // RUN: %clang_cl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fintelfpga -Xshardware %t.o %t_aocx.a -### 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-OBJ,CHK-FPGA-AOCX-OBJ-WIN %s +// CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJx:.+\.(o|obj)]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=aocx" "-targets=sycl-fpga_aocx-intel-unknown" "-input=[[LIBINPUT:.+\.a]]" "-output=[[BUNDLEOUT:.+\.aocx]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: file-table-tform{{.*}} "-rename=0,Code" "-o" "[[TABLEOUT:.+\.txt]]" "[[BUNDLEOUT]]" // CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=aoo" "-targets=host-fpga_aocx-intel-unknown" "-input=[[LIBINPUT]]" "-output=[[BUNDLEBCOUT:.+\.txt]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: file-table-tform{{.*}} "-rename=0,SymAndProps" "-o" "[[SYM_AND_PROP:.+\.txt]]" "[[BUNDLEBCOUT]]" // CHK-FPGA-AOCX-OBJ: clang-offload-wrapper{{.*}} "-o=[[WRAPOUT:.+\.bc]]" {{.*}} "-target=spir64_fpga" "-kind=sycl" "--sym-prop-bc-files=[[SYM_AND_PROP]]" "-batch" "[[TABLEOUT]]" // CHK-FPGA-AOCX-OBJ: llc{{.*}} "-filetype=obj" "-o" "[[LLCOUT:.+\.(o|obj)]]" "[[WRAPOUT]]" -// CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJ:.+\.(o|obj)]]" "-unbundle" +// CHK-FPGA-AOCX-OBJ: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJx:.+\.(o|obj)]]" "-output=[[DEVICEOBJ:.+\.(o|obj)]]" "-unbundle" // CHK-FPGA-AOCX-OBJ: spirv-to-ir-wrapper{{.*}} "[[DEVICEOBJ]]" "-o" "[[IROUTPUT:.+\.bc]]" // CHK-FPGA-AOCX-OBJ: llvm-link{{.*}} "[[IROUTPUT]]" "-o" "[[LLVMLINKOUT:.+\.bc]]" "--suppress-warnings" // CHK-FPGA-AOCX-OBJ: sycl-post-link{{.*}} "-O2" "-spec-const=emulation" "-device-globals" "-o" "[[POSTLINKOUT:.+\.table]]" "[[LLVMLINKOUT]] @@ -277,7 +279,8 @@ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-OBJ2 %s // RUN: %clang_cl -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64,spir64_fpga -Xshardware %t.o %t_aocx.a -### 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FPGA-AOCX-OBJ2 %s -// CHK-FPGA-AOCX-OBJ2: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJ2:.+\.(o|obj)]]" "-unbundle" +// CHK-FPGA-AOCX-OBJ2: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJx:.+\.(o|obj)]]" "-output=[[DEVICEOBJ2x:.+\.(o|obj)]]" "-unbundle" +// CHK-FPGA-AOCX-OBJ2: clang-offload-bundler{{.*}} "-type=o" {{.*}} "-output=[[HOSTOBJx:.+\.(o|obj)]]" "-output=[[DEVICEOBJ:.+\.(o|obj)]]" "-output=[[DEVICEOBJ2:.+\.(o|obj)]]" "-unbundle" // CHK-FPGA-AOCX-OBJ2: spirv-to-ir-wrapper{{.*}} "[[DEVICEOBJ]]" "-o" "[[IROUTPUT:.+\.bc]]" // CHK-FPGA-AOCX-OBJ2: llvm-link{{.*}} "[[IROUTPUT]]" "-o" "[[LLVMLINKOUT:.+\.bc]]" "--suppress-warnings" // CHK-FPGA-AOCX-OBJ2: sycl-post-link{{.*}} "-O2" "-spec-const=native" "-device-globals" "-o" "[[POSTLINKOUT:.+\.table]]" "[[LLVMLINKOUT]]" diff --git a/clang/test/Driver/sycl-offload-intelfpga.cpp b/clang/test/Driver/sycl-offload-intelfpga.cpp index 8395394fec93a..92fddf11cc877 100644 --- a/clang/test/Driver/sycl-offload-intelfpga.cpp +++ b/clang/test/Driver/sycl-offload-intelfpga.cpp @@ -44,9 +44,9 @@ /// -fsycl-disable-range-rounding is applied to all compilations if fpga is used // RUN: %clangxx -### -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_fpga-unknown-unknown,spir64_gen-unknown-unknown %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-RANGE-ROUNDING-MULTI %s -// CHK-RANGE-ROUNDING-MULTI: clang{{.*}} "-triple" "spir64_fpga-unknown-unknown"{{.*}} "-fsycl-is-device"{{.*}} "-fsycl-disable-range-rounding" // CHK-RANGE-ROUNDING-MULTI: clang{{.*}} "-triple" "spir64_gen-unknown-unknown"{{.*}} "-fsycl-is-device"{{.*}} "-fsycl-disable-range-rounding" // CHK-RANGE-ROUNDING-MULTI: clang{{.*}} "-fsycl-disable-range-rounding"{{.*}} "-fsycl-is-host" +// CHK-RANGE-ROUNDING-MULTI: clang{{.*}} "-triple" "spir64_fpga-unknown-unknown"{{.*}} "-fsycl-is-device"{{.*}} "-fsycl-disable-range-rounding" /// -fintelfpga with -reuse-exe= // RUN: touch %t.cpp @@ -78,8 +78,6 @@ // CHK-FPGA-DEP-FILES-HOST: clang{{.*}} "-triple" "spir64_fpga-unknown-unknown"{{.*}} "-dependency-file" "[[INPUT1:.+\.d]]" "-MT" "{{.*}}.o" // CHK-FPGA-DEP-FILES-HOST: clang{{.*}} "-triple" "spir64_fpga-unknown-unknown"{{.*}} "-dependency-file" "[[INPUT2:.+\.d]]" "-MT" "{{.*}}.o" // CHK-FPGA-DEP-FILES-HOST: aoc{{.*}} "-dep-files={{.*}}[[INPUT1]],{{.*}}[[INPUT2]]" -// CHK-FPGA-DEP-FILES-HOST: clang{{.*}} "-fsycl-is-host"{{.*}} -// CHK-FPGA-DEP-FILES-HOST: clang{{.*}} "-fsycl-is-host"{{.*}} /// -fintelfpga dependency file generation test to object // RUN: %clangxx -### -fintelfpga -target x86_64-unknown-linux-gnu %t-1.cpp %t-2.cpp -c 2>&1 \ @@ -124,17 +122,17 @@ // RUN: | FileCheck -check-prefix=CHK-FPGA-DEP-FILES-OBJ-PHASES %s // CHK-FPGA-DEP-FILES-OBJ-PHASES: 0: input, "{{.*}}-1.o", object, (host-sycl) // CHK-FPGA-DEP-FILES-OBJ-PHASES: 1: clang-offload-unbundler, {0}, object, (host-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 2: linker, {1}, image, (host-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 3: spirv-to-ir-wrapper, {1}, ir, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 4: linker, {3}, ir, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 5: sycl-post-link, {4}, tempfiletable, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 6: file-table-tform, {5}, tempfilelist, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 7: llvm-spirv, {6}, tempfilelist, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 8: clang-offload-unbundler, {0}, fpga_dep -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 9: backend-compiler, {7, 8}, fpga_aocx, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 10: file-table-tform, {5, 9}, tempfiletable, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 11: clang-offload-wrapper, {10}, object, (device-sycl) -// CHK-FPGA-DEP-FILES-OBJ-PHASES: 12: offload, "host-sycl ({{.*}})" {2}, "device-sycl (spir64_fpga-unknown-unknown)" {11}, image +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 2: spirv-to-ir-wrapper, {1}, ir, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 3: linker, {2}, ir, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 4: sycl-post-link, {3}, tempfiletable, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 5: file-table-tform, {4}, tempfilelist, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 6: llvm-spirv, {5}, tempfilelist, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 7: clang-offload-unbundler, {0}, fpga_dep +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 8: backend-compiler, {6, 7}, fpga_aocx, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 9: file-table-tform, {4, 8}, tempfiletable, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 10: clang-offload-wrapper, {9}, object, (device-sycl) +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 11: offload, "device-sycl (spir64_fpga-unknown-unknown)" {10}, object +// CHK-FPGA-DEP-FILES-OBJ-PHASES: 12: linker, {1, 11}, image, (host-sycl) /// -fintelfpga output report file test // RUN: mkdir -p %t_dir diff --git a/clang/test/Driver/sycl-offload-nvptx.cpp b/clang/test/Driver/sycl-offload-nvptx.cpp index 6744aa81e7afa..e55ff3c9b3d3e 100644 --- a/clang/test/Driver/sycl-offload-nvptx.cpp +++ b/clang/test/Driver/sycl-offload-nvptx.cpp @@ -35,7 +35,7 @@ /// Check phases w/out specifying a compute capability. // RUN: %clangxx -ccc-print-phases --sysroot=%S/Inputs/SYCL -std=c++11 \ -// RUN: -target x86_64-unknown-linux-gnu -fsycl \ +// RUN: -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-device-lib=all \ // RUN: -fsycl-targets=nvptx64-nvidia-cuda %s 2>&1 \ // RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/lib/nvidiacl \ // RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ @@ -53,85 +53,33 @@ // CHK-PHASES-NO-CC: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASES-NO-CC: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASES-NO-CC: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASES-NO-CC: 10: linker, {9}, image, (host-sycl) -// CHK-PHASES-NO-CC: 11: linker, {5}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 12: input, "{{.*}}libsycl-crt.o", object -// CHK-PHASES-NO-CC: 13: clang-offload-unbundler, {12}, object -// CHK-PHASES-NO-CC: 14: offload, " (nvptx64-nvidia-cuda)" {13}, object -// CHK-PHASES-NO-CC: 15: input, "{{.*}}libsycl-complex.o", object -// CHK-PHASES-NO-CC: 16: clang-offload-unbundler, {15}, object -// CHK-PHASES-NO-CC: 17: offload, " (nvptx64-nvidia-cuda)" {16}, object -// CHK-PHASES-NO-CC: 18: input, "{{.*}}libsycl-complex-fp64.o", object -// CHK-PHASES-NO-CC: 19: clang-offload-unbundler, {18}, object -// CHK-PHASES-NO-CC: 20: offload, " (nvptx64-nvidia-cuda)" {19}, object -// CHK-PHASES-NO-CC: 21: input, "{{.*}}libsycl-cmath.o", object -// CHK-PHASES-NO-CC: 22: clang-offload-unbundler, {21}, object -// CHK-PHASES-NO-CC: 23: offload, " (nvptx64-nvidia-cuda)" {22}, object -// CHK-PHASES-NO-CC: 24: input, "{{.*}}libsycl-cmath-fp64.o", object -// CHK-PHASES-NO-CC: 25: clang-offload-unbundler, {24}, object -// CHK-PHASES-NO-CC: 26: offload, " (nvptx64-nvidia-cuda)" {25}, object -// CHK-PHASES-NO-CC: 27: input, "{{.*}}libsycl-imf.o", object -// CHK-PHASES-NO-CC: 28: clang-offload-unbundler, {27}, object -// CHK-PHASES-NO-CC: 29: offload, " (nvptx64-nvidia-cuda)" {28}, object -// CHK-PHASES-NO-CC: 30: input, "{{.*}}libsycl-imf-fp64.o", object -// CHK-PHASES-NO-CC: 31: clang-offload-unbundler, {30}, object -// CHK-PHASES-NO-CC: 32: offload, " (nvptx64-nvidia-cuda)" {31}, object -// CHK-PHASES-NO-CC: 33: input, "{{.*}}libsycl-imf-bf16.o", object -// CHK-PHASES-NO-CC: 34: clang-offload-unbundler, {33}, object -// CHK-PHASES-NO-CC: 35: offload, " (nvptx64-nvidia-cuda)" {34}, object -// CHK-PHASES-NO-CC: 36: input, "{{.*}}libsycl-fallback-cassert.o", object -// CHK-PHASES-NO-CC: 37: clang-offload-unbundler, {36}, object -// CHK-PHASES-NO-CC: 38: offload, " (nvptx64-nvidia-cuda)" {37}, object -// CHK-PHASES-NO-CC: 39: input, "{{.*}}libsycl-fallback-cstring.o", object -// CHK-PHASES-NO-CC: 40: clang-offload-unbundler, {39}, object -// CHK-PHASES-NO-CC: 41: offload, " (nvptx64-nvidia-cuda)" {40}, object -// CHK-PHASES-NO-CC: 42: input, "{{.*}}libsycl-fallback-complex.o", object -// CHK-PHASES-NO-CC: 43: clang-offload-unbundler, {42}, object -// CHK-PHASES-NO-CC: 44: offload, " (nvptx64-nvidia-cuda)" {43}, object -// CHK-PHASES-NO-CC: 45: input, "{{.*}}libsycl-fallback-complex-fp64.o", object -// CHK-PHASES-NO-CC: 46: clang-offload-unbundler, {45}, object -// CHK-PHASES-NO-CC: 47: offload, " (nvptx64-nvidia-cuda)" {46}, object -// CHK-PHASES-NO-CC: 48: input, "{{.*}}libsycl-fallback-cmath.o", object -// CHK-PHASES-NO-CC: 49: clang-offload-unbundler, {48}, object -// CHK-PHASES-NO-CC: 50: offload, " (nvptx64-nvidia-cuda)" {49}, object -// CHK-PHASES-NO-CC: 51: input, "{{.*}}libsycl-fallback-cmath-fp64.o", object -// CHK-PHASES-NO-CC: 52: clang-offload-unbundler, {51}, object -// CHK-PHASES-NO-CC: 53: offload, " (nvptx64-nvidia-cuda)" {52}, object -// CHK-PHASES-NO-CC: 54: input, "{{.*}}libsycl-fallback-imf.o", object -// CHK-PHASES-NO-CC: 55: clang-offload-unbundler, {54}, object -// CHK-PHASES-NO-CC: 56: offload, " (nvptx64-nvidia-cuda)" {55}, object -// CHK-PHASES-NO-CC: 57: input, "{{.*}}libsycl-fallback-imf-fp64.o", object -// CHK-PHASES-NO-CC: 58: clang-offload-unbundler, {57}, object -// CHK-PHASES-NO-CC: 59: offload, " (nvptx64-nvidia-cuda)" {58}, object -// CHK-PHASES-NO-CC: 60: input, "{{.*}}libsycl-fallback-imf-bf16.o", object -// CHK-PHASES-NO-CC: 61: clang-offload-unbundler, {60}, object -// CHK-PHASES-NO-CC: 62: offload, " (nvptx64-nvidia-cuda)" {61}, object -// CHK-PHASES-NO-CC: 63: input, "{{.*}}libsycl-itt-user-wrappers.o", object -// CHK-PHASES-NO-CC: 64: clang-offload-unbundler, {63}, object -// CHK-PHASES-NO-CC: 65: offload, " (nvptx64-nvidia-cuda)" {64}, object -// CHK-PHASES-NO-CC: 66: input, "{{.*}}libsycl-itt-compiler-wrappers.o", object -// CHK-PHASES-NO-CC: 67: clang-offload-unbundler, {66}, object -// CHK-PHASES-NO-CC: 68: offload, " (nvptx64-nvidia-cuda)" {67}, object -// CHK-PHASES-NO-CC: 69: input, "{{.*}}libsycl-itt-stubs.o", object -// CHK-PHASES-NO-CC: 70: clang-offload-unbundler, {69}, object -// CHK-PHASES-NO-CC: 71: offload, " (nvptx64-nvidia-cuda)" {70}, object -// CHK-PHASES-NO-CC: 72: input, "{{.*}}nvidiacl{{.*}}", ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 73: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 74: linker, {11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 72, 73}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 75: sycl-post-link, {74}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 76: file-table-tform, {75}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 77: backend, {76}, assembler, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 78: assembler, {77}, object, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 79: linker, {77, 78}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 80: foreach, {76, 79}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 81: file-table-tform, {75, 80}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 82: clang-offload-wrapper, {81}, object, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 83: offload, "host-sycl (x86_64-{{.*}})" {10}, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {82}, image -// +// CHK-PHASES-NO-CC: 10: linker, {5}, ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 11: input, "{{.*}}libsycl-itt-user-wrappers.o", object +// CHK-PHASES-NO-CC: 12: clang-offload-unbundler, {11}, object +// CHK-PHASES-NO-CC: 13: offload, " (nvptx64-nvidia-cuda)" {12}, object +// CHK-PHASES-NO-CC: 14: input, "{{.*}}libsycl-itt-compiler-wrappers.o", object +// CHK-PHASES-NO-CC: 15: clang-offload-unbundler, {14}, object +// CHK-PHASES-NO-CC: 16: offload, " (nvptx64-nvidia-cuda)" {15}, object +// CHK-PHASES-NO-CC: 17: input, "{{.*}}libsycl-itt-stubs.o", object +// CHK-PHASES-NO-CC: 18: clang-offload-unbundler, {17}, object +// CHK-PHASES-NO-CC: 19: offload, " (nvptx64-nvidia-cuda)" {18}, object +// CHK-PHASES-NO-CC: 20: input, "{{.*}}nvidiacl{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 21: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 22: linker, {10, 13, 16, 19, 20, 21}, ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 23: sycl-post-link, {22}, ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 24: file-table-tform, {23}, ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 25: backend, {24}, assembler, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 26: assembler, {25}, object, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 27: linker, {25, 26}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 28: foreach, {24, 27}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 29: file-table-tform, {23, 28}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 30: clang-offload-wrapper, {29}, object, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 31: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {30}, object +// CHK-PHASES-NO-CC: 32: linker, {9, 31}, image, (host-sycl) // /// Check phases specifying a compute capability. // RUN: %clangxx -ccc-print-phases --sysroot=%S/Inputs/SYCL -std=c++11 \ -// RUN: -target x86_64-unknown-linux-gnu -fsycl \ +// RUN: -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-device-lib=all \ // RUN: -fsycl-targets=nvptx64-nvidia-cuda \ // RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/lib/nvidiacl \ // RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ @@ -150,80 +98,29 @@ // CHK-PHASES: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASES: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASES: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASES: 10: linker, {9}, image, (host-sycl) -// CHK-PHASES: 11: linker, {5}, ir, (device-sycl, sm_35) -// CHK-PHASES: 12: input, "{{.*}}libsycl-crt.o", object -// CHK-PHASES: 13: clang-offload-unbundler, {12}, object -// CHK-PHASES: 14: offload, " (nvptx64-nvidia-cuda)" {13}, object -// CHK-PHASES: 15: input, "{{.*}}libsycl-complex.o", object -// CHK-PHASES: 16: clang-offload-unbundler, {15}, object -// CHK-PHASES: 17: offload, " (nvptx64-nvidia-cuda)" {16}, object -// CHK-PHASES: 18: input, "{{.*}}libsycl-complex-fp64.o", object -// CHK-PHASES: 19: clang-offload-unbundler, {18}, object -// CHK-PHASES: 20: offload, " (nvptx64-nvidia-cuda)" {19}, object -// CHK-PHASES: 21: input, "{{.*}}libsycl-cmath.o", object -// CHK-PHASES: 22: clang-offload-unbundler, {21}, object -// CHK-PHASES: 23: offload, " (nvptx64-nvidia-cuda)" {22}, object -// CHK-PHASES: 24: input, "{{.*}}libsycl-cmath-fp64.o", object -// CHK-PHASES: 25: clang-offload-unbundler, {24}, object -// CHK-PHASES: 26: offload, " (nvptx64-nvidia-cuda)" {25}, object -// CHK-PHASES: 27: input, "{{.*}}libsycl-imf.o", object -// CHK-PHASES: 28: clang-offload-unbundler, {27}, object -// CHK-PHASES: 29: offload, " (nvptx64-nvidia-cuda)" {28}, object -// CHK-PHASES: 30: input, "{{.*}}libsycl-imf-fp64.o", object -// CHK-PHASES: 31: clang-offload-unbundler, {30}, object -// CHK-PHASES: 32: offload, " (nvptx64-nvidia-cuda)" {31}, object -// CHK-PHASES: 33: input, "{{.*}}libsycl-imf-bf16.o", object -// CHK-PHASES: 34: clang-offload-unbundler, {33}, object -// CHK-PHASES: 35: offload, " (nvptx64-nvidia-cuda)" {34}, object -// CHK-PHASES: 36: input, "{{.*}}libsycl-fallback-cassert.o", object -// CHK-PHASES: 37: clang-offload-unbundler, {36}, object -// CHK-PHASES: 38: offload, " (nvptx64-nvidia-cuda)" {37}, object -// CHK-PHASES: 39: input, "{{.*}}libsycl-fallback-cstring.o", object -// CHK-PHASES: 40: clang-offload-unbundler, {39}, object -// CHK-PHASES: 41: offload, " (nvptx64-nvidia-cuda)" {40}, object -// CHK-PHASES: 42: input, "{{.*}}libsycl-fallback-complex.o", object -// CHK-PHASES: 43: clang-offload-unbundler, {42}, object -// CHK-PHASES: 44: offload, " (nvptx64-nvidia-cuda)" {43}, object -// CHK-PHASES: 45: input, "{{.*}}libsycl-fallback-complex-fp64.o", object -// CHK-PHASES: 46: clang-offload-unbundler, {45}, object -// CHK-PHASES: 47: offload, " (nvptx64-nvidia-cuda)" {46}, object -// CHK-PHASES: 48: input, "{{.*}}libsycl-fallback-cmath.o", object -// CHK-PHASES: 49: clang-offload-unbundler, {48}, object -// CHK-PHASES: 50: offload, " (nvptx64-nvidia-cuda)" {49}, object -// CHK-PHASES: 51: input, "{{.*}}libsycl-fallback-cmath-fp64.o", object -// CHK-PHASES: 52: clang-offload-unbundler, {51}, object -// CHK-PHASES: 53: offload, " (nvptx64-nvidia-cuda)" {52}, object -// CHK-PHASES: 54: input, "{{.*}}libsycl-fallback-imf.o", object -// CHK-PHASES: 55: clang-offload-unbundler, {54}, object -// CHK-PHASES: 56: offload, " (nvptx64-nvidia-cuda)" {55}, object -// CHK-PHASES: 57: input, "{{.*}}libsycl-fallback-imf-fp64.o", object -// CHK-PHASES: 58: clang-offload-unbundler, {57}, object -// CHK-PHASES: 59: offload, " (nvptx64-nvidia-cuda)" {58}, object -// CHK-PHASES: 60: input, "{{.*}}libsycl-fallback-imf-bf16.o", object -// CHK-PHASES: 61: clang-offload-unbundler, {60}, object -// CHK-PHASES: 62: offload, " (nvptx64-nvidia-cuda)" {61}, object -// CHK-PHASES: 63: input, "{{.*}}libsycl-itt-user-wrappers.o", object -// CHK-PHASES: 64: clang-offload-unbundler, {63}, object -// CHK-PHASES: 65: offload, " (nvptx64-nvidia-cuda)" {64}, object -// CHK-PHASES: 66: input, "{{.*}}libsycl-itt-compiler-wrappers.o", object -// CHK-PHASES: 67: clang-offload-unbundler, {66}, object -// CHK-PHASES: 68: offload, " (nvptx64-nvidia-cuda)" {67}, object -// CHK-PHASES: 69: input, "{{.*}}libsycl-itt-stubs.o", object -// CHK-PHASES: 70: clang-offload-unbundler, {69}, object -// CHK-PHASES: 71: offload, " (nvptx64-nvidia-cuda)" {70}, object -// CHK-PHASES: 72: input, "{{.*}}nvidiacl{{.*}}", ir, (device-sycl, sm_35) -// CHK-PHASES: 73: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_35) -// CHK-PHASES: 74: linker, {11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 72, 73}, ir, (device-sycl, sm_35) -// CHK-PHASES: 75: sycl-post-link, {74}, ir, (device-sycl, sm_35) -// CHK-PHASES: 76: file-table-tform, {75}, ir, (device-sycl, sm_35) -// CHK-PHASES: 77: backend, {76}, assembler, (device-sycl, sm_35) -// CHK-PHASES: 78: assembler, {77}, object, (device-sycl, sm_35) -// CHK-PHASES: 79: linker, {77, 78}, cuda-fatbin, (device-sycl, sm_35) -// CHK-PHASES: 80: foreach, {76, 79}, cuda-fatbin, (device-sycl, sm_35) -// CHK-PHASES: 81: file-table-tform, {75, 80}, tempfiletable, (device-sycl, sm_35) -// CHK-PHASES: 82: clang-offload-wrapper, {81}, object, (device-sycl, sm_35) -// CHK-PHASES: 83: offload, "host-sycl (x86_64-{{.*}})" {10}, "device-sycl (nvptx64-nvidia-cuda:sm_35)" {82}, image +// CHK-PHASES: 10: linker, {5}, ir, (device-sycl, sm_35) +// CHK-PHASES: 11: input, "{{.*}}libsycl-itt-user-wrappers.o", object +// CHK-PHASES: 12: clang-offload-unbundler, {11}, object +// CHK-PHASES: 13: offload, " (nvptx64-nvidia-cuda)" {12}, object +// CHK-PHASES: 14: input, "{{.*}}libsycl-itt-compiler-wrappers.o", object +// CHK-PHASES: 15: clang-offload-unbundler, {14}, object +// CHK-PHASES: 16: offload, " (nvptx64-nvidia-cuda)" {15}, object +// CHK-PHASES: 17: input, "{{.*}}libsycl-itt-stubs.o", object +// CHK-PHASES: 18: clang-offload-unbundler, {17}, object +// CHK-PHASES: 19: offload, " (nvptx64-nvidia-cuda)" {18}, object +// CHK-PHASES: 20: input, "{{.*}}nvidiacl{{.*}}", ir, (device-sycl, sm_35) +// CHK-PHASES: 21: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_35) +// CHK-PHASES: 22: linker, {10, 13, 16, 19, 20, 21}, ir, (device-sycl, sm_35) +// CHK-PHASES: 23: sycl-post-link, {22}, ir, (device-sycl, sm_35) +// CHK-PHASES: 24: file-table-tform, {23}, ir, (device-sycl, sm_35) +// CHK-PHASES: 25: backend, {24}, assembler, (device-sycl, sm_35) +// CHK-PHASES: 26: assembler, {25}, object, (device-sycl, sm_35) +// CHK-PHASES: 27: linker, {25, 26}, cuda-fatbin, (device-sycl, sm_35) +// CHK-PHASES: 28: foreach, {24, 27}, cuda-fatbin, (device-sycl, sm_35) +// CHK-PHASES: 29: file-table-tform, {23, 28}, tempfiletable, (device-sycl, sm_35) +// CHK-PHASES: 30: clang-offload-wrapper, {29}, object, (device-sycl, sm_35) +// CHK-PHASES: 31: offload, "device-sycl (nvptx64-nvidia-cuda:sm_35)" {30}, object +// CHK-PHASES: 32: linker, {9, 31}, image, (host-sycl) /// Check calling preprocessor only // RUN: %clangxx -E -fsycl -fsycl-targets=nvptx64-nvidia-cuda -ccc-print-phases %s 2>&1 \ diff --git a/clang/test/Driver/sycl-offload-save-temps.cpp b/clang/test/Driver/sycl-offload-save-temps.cpp index 0101b7fab52a5..17722df8d2c90 100644 --- a/clang/test/Driver/sycl-offload-save-temps.cpp +++ b/clang/test/Driver/sycl-offload-save-temps.cpp @@ -9,6 +9,10 @@ // RUN: | FileCheck %s --check-prefixes=CHK-FSYCL-SAVE-TEMPS,CHK-FSYCL-SAVE-TEMPS-CONFL // CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-fsycl-is-device"{{.*}} "-o" "[[DEVICE_BASE_NAME:[a-z0-9-]+]].ii" // CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-fsycl-is-device"{{.*}} "-fsycl-int-header=[[HEADER_NAME:.+\-header.+\.h]]" "-fsycl-int-footer={{.*}}"{{.*}} "-o" "[[DEVICE_BASE_NAME]].bc"{{.*}} "[[DEVICE_BASE_NAME]].ii" +// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-include" "[[HEADER_NAME]]"{{.*}} "-fsycl-is-host"{{.*}} "-o" "[[HOST_BASE_NAME:[a-z0-9_-]+]].ii" +// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-o" "[[HOST_BASE_NAME:.*]].bc"{{.*}} "[[HOST_BASE_NAME:[a-z0-9_-]+]].ii" +// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-o" "[[HOST_BASE_NAME:.*]].s"{{.*}} "[[HOST_BASE_NAME]].bc" +// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-o" "[[HOST_BASE_NAME:.*]].o"{{.*}} "[[HOST_BASE_NAME]].s" // CHK-FSYCL-SAVE-TEMPS: llvm-link{{.*}} "[[DEVICE_BASE_NAME]].bc"{{.*}} "-o" "[[LINKED_DEVICE_BC:.*\.bc]]" // CHK-FSYCL-SAVE-TEMPS-CONFL-NOT: "[[DEVICE_BASE_NAME]].bc"{{.*}} "[[DEVICE_BASE_NAME]].bc" // CHK-FSYCL-SAVE-TEMPS: sycl-post-link{{.*}} "-o" "[[DEVICE_BASE_NAME]].table" "[[LINKED_DEVICE_BC]]" @@ -19,10 +23,6 @@ // CHK-FSYCL-SAVE-TEMPS-CONFL-NOT: "-o" "[[DEVICE_BASE_NAME]].table"{{.*}} "[[DEVICE_BASE_NAME]].table" // CHK-FSYCL-SAVE-TEMPS: clang-offload-wrapper{{.*}} "-o=[[WRAPPER_TEMPFILE_NAME:.+]].bc"{{.*}} "-batch" "[[PRE_WRAPPER_TABLE]]" // CHK-FSYCL-SAVE-TEMPS: llc{{.*}} "-o" "[[DEVICE_OBJ_NAME:.*\.o]]"{{.*}} "[[WRAPPER_TEMPFILE_NAME]].bc" -// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-include" "[[HEADER_NAME]]"{{.*}} "-fsycl-is-host"{{.*}} "-o" "[[HOST_BASE_NAME:[a-z0-9_-]+]].ii" -// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-o" "[[HOST_BASE_NAME:.*]].bc"{{.*}} "[[HOST_BASE_NAME:[a-z0-9_-]+]].ii" -// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-o" "[[HOST_BASE_NAME:.*]].s"{{.*}} "[[HOST_BASE_NAME]].bc" -// CHK-FSYCL-SAVE-TEMPS: clang{{.*}} "-o" "[[HOST_BASE_NAME:.*]].o"{{.*}} "[[HOST_BASE_NAME]].s" // CHK-FSYCL-SAVE-TEMPS: ld{{.*}} "[[HOST_BASE_NAME]].o"{{.*}} "[[DEVICE_OBJ_NAME]]" /// Verify that -save-temps puts header/footer in a correct place diff --git a/clang/test/Driver/sycl-offload-static-lib-2.cpp b/clang/test/Driver/sycl-offload-static-lib-2.cpp index d1994b6b1168f..23a37a22ac549 100644 --- a/clang/test/Driver/sycl-offload-static-lib-2.cpp +++ b/clang/test/Driver/sycl-offload-static-lib-2.cpp @@ -101,19 +101,19 @@ // STATIC_LIB_SRC: 8: compiler, {7}, ir, (host-sycl) // STATIC_LIB_SRC: 9: backend, {8}, assembler, (host-sycl) // STATIC_LIB_SRC: 10: assembler, {9}, object, (host-sycl) -// STATIC_LIB_SRC: 11: linker, {0, 10}, image, (host-sycl) -// STATIC_LIB_SRC: 12: linker, {0, 10}, host_dep_image, (host-sycl) -// STATIC_LIB_SRC: 13: clang-offload-deps, {12}, ir, (host-sycl) -// STATIC_LIB_SRC: 14: input, "[[INPUTA]]", archive -// STATIC_LIB_SRC: 15: clang-offload-unbundler, {14}, tempfilelist -// STATIC_LIB_SRC: 16: spirv-to-ir-wrapper, {15}, tempfilelist, (device-sycl) -// STATIC_LIB_SRC: 17: linker, {6, 13, 16}, ir, (device-sycl) -// STATIC_LIB_SRC: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) -// STATIC_LIB_SRC: 19: file-table-tform, {18}, tempfilelist, (device-sycl) -// STATIC_LIB_SRC: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) -// STATIC_LIB_SRC: 21: file-table-tform, {18, 20}, tempfiletable, (device-sycl) -// STATIC_LIB_SRC: 22: clang-offload-wrapper, {21}, object, (device-sycl) -// STATIC_LIB_SRC: 23: offload, "host-sycl (x86_64-unknown-linux-gnu)" {11}, "device-sycl (spir64-unknown-unknown)" {22}, image +// STATIC_LIB_SRC: 11: linker, {0, 10}, host_dep_image, (host-sycl) +// STATIC_LIB_SRC: 12: clang-offload-deps, {11}, ir, (host-sycl) +// STATIC_LIB_SRC: 13: input, "[[INPUTA]]", archive +// STATIC_LIB_SRC: 14: clang-offload-unbundler, {13}, tempfilelist +// STATIC_LIB_SRC: 15: spirv-to-ir-wrapper, {14}, tempfilelist, (device-sycl) +// STATIC_LIB_SRC: 16: linker, {6, 12, 15}, ir, (device-sycl) +// STATIC_LIB_SRC: 17: sycl-post-link, {16}, tempfiletable, (device-sycl) +// STATIC_LIB_SRC: 18: file-table-tform, {17}, tempfilelist, (device-sycl) +// STATIC_LIB_SRC: 19: llvm-spirv, {18}, tempfilelist, (device-sycl) +// STATIC_LIB_SRC: 20: file-table-tform, {17, 19}, tempfiletable, (device-sycl) +// STATIC_LIB_SRC: 21: clang-offload-wrapper, {20}, object, (device-sycl) +// STATIC_LIB_SRC: 22: offload, "device-sycl (spir64-unknown-unknown)" {21}, object +// STATIC_LIB_SRC: 23: linker, {0, 10, 22}, image, (host-sycl) // STATIC_LIB_SRC-CUDA: 0: input, "[[INPUTA:.+\.a]]", object, (host-sycl) // STATIC_LIB_SRC-CUDA: 1: input, "[[INPUTC:.+\.cpp]]", c++, (host-sycl) @@ -126,21 +126,21 @@ // STATIC_LIB_SRC-CUDA: 8: compiler, {7}, ir, (host-sycl) // STATIC_LIB_SRC-CUDA: 9: backend, {8}, assembler, (host-sycl) // STATIC_LIB_SRC-CUDA: 10: assembler, {9}, object, (host-sycl) -// STATIC_LIB_SRC-CUDA: 11: linker, {0, 10}, image, (host-sycl) -// STATIC_LIB_SRC-CUDA: 12: linker, {0, 10}, host_dep_image, (host-sycl) -// STATIC_LIB_SRC-CUDA: 13: clang-offload-deps, {12}, ir, (host-sycl) -// STATIC_LIB_SRC-CUDA: 14: input, "[[INPUTA]]", archive -// STATIC_LIB_SRC-CUDA: 15: clang-offload-unbundler, {14}, archive -// STATIC_LIB_SRC-CUDA: 16: linker, {6, 13, 15}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 17: sycl-post-link, {16}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 18: file-table-tform, {17}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 19: backend, {18}, assembler, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 20: assembler, {19}, object, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 21: linker, {19, 20}, cuda-fatbin, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 22: foreach, {18, 21}, cuda-fatbin, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 23: file-table-tform, {17, 22}, tempfiletable, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 24: clang-offload-wrapper, {23}, object, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 25: offload, "host-sycl (x86_64-unknown-linux-gnu)" {11}, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {24}, image +// STATIC_LIB_SRC-CUDA: 11: linker, {0, 10}, host_dep_image, (host-sycl) +// STATIC_LIB_SRC-CUDA: 12: clang-offload-deps, {11}, ir, (host-sycl) +// STATIC_LIB_SRC-CUDA: 13: input, "[[INPUTA]]", archive +// STATIC_LIB_SRC-CUDA: 14: clang-offload-unbundler, {13}, archive +// STATIC_LIB_SRC-CUDA: 15: linker, {6, 12, 14}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 16: sycl-post-link, {15}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 17: file-table-tform, {16}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 18: backend, {17}, assembler, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 19: assembler, {18}, object, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 20: linker, {18, 19}, cuda-fatbin, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 21: foreach, {17, 20}, cuda-fatbin, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 22: file-table-tform, {16, 21}, tempfiletable, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 23: clang-offload-wrapper, {22}, object, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 24: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {23}, object +// STATIC_LIB_SRC-CUDA: 25: linker, {0, 10, 24}, image, (host-sycl) /// ########################################################################### diff --git a/clang/test/Driver/sycl-offload-static-lib.cpp b/clang/test/Driver/sycl-offload-static-lib.cpp index 4a0681308056d..04d7e1982b912 100644 --- a/clang/test/Driver/sycl-offload-static-lib.cpp +++ b/clang/test/Driver/sycl-offload-static-lib.cpp @@ -63,19 +63,19 @@ // FOFFLOAD_STATIC_LIB_SRC: 8: compiler, {7}, ir, (host-sycl) // FOFFLOAD_STATIC_LIB_SRC: 9: backend, {8}, assembler, (host-sycl) // FOFFLOAD_STATIC_LIB_SRC: 10: assembler, {9}, object, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 11: linker, {0, 10}, image, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 12: linker, {0, 10}, host_dep_image, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 13: clang-offload-deps, {12}, ir, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 14: input, "[[INPUTA]]", archive -// FOFFLOAD_STATIC_LIB_SRC: 15: clang-offload-unbundler, {14}, tempfilelist -// FOFFLOAD_STATIC_LIB_SRC: 16: spirv-to-ir-wrapper, {15}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 17: linker, {6, 13, 16}, ir, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 19: file-table-tform, {18}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 21: file-table-tform, {18, 20}, tempfiletable, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 22: clang-offload-wrapper, {21}, object, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 23: offload, "host-sycl (x86_64-unknown-linux-gnu)" {11}, "device-sycl (spir64-unknown-unknown)" {22}, image +// FOFFLOAD_STATIC_LIB_SRC: 11: linker, {0, 10}, host_dep_image, (host-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 12: clang-offload-deps, {11}, ir, (host-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 13: input, "[[INPUTA]]", archive +// FOFFLOAD_STATIC_LIB_SRC: 14: clang-offload-unbundler, {13}, tempfilelist +// FOFFLOAD_STATIC_LIB_SRC: 15: spirv-to-ir-wrapper, {14}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 16: linker, {6, 12, 15}, ir, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 17: sycl-post-link, {16}, tempfiletable, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 18: file-table-tform, {17}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 19: llvm-spirv, {18}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 20: file-table-tform, {17, 19}, tempfiletable, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 21: clang-offload-wrapper, {20}, object, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 22: offload, "device-sycl (spir64-unknown-unknown)" {21}, object +// FOFFLOAD_STATIC_LIB_SRC: 23: linker, {0, 10, 22}, image, (host-sycl) /// ########################################################################### @@ -138,19 +138,19 @@ // RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -L/dummy/dir -foffload-whole-static-lib=%t.a -### -ccc-print-phases 2>&1 \ // RUN: | FileCheck %s -check-prefix=FOFFLOAD_STATIC_LIB_NOSRC_PHASES // FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 0: input, "[[INPUTA:.+\.a]]", object, (host-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 1: linker, {0}, image, (host-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 2: linker, {0}, host_dep_image, (host-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 3: clang-offload-deps, {2}, ir, (host-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 4: input, "[[INPUTA]]", archive -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 5: clang-offload-unbundler, {4}, tempfilelist -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 6: spirv-to-ir-wrapper, {5}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 7: linker, {3, 6}, ir, (device-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 8: sycl-post-link, {7}, tempfiletable, (device-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 9: file-table-tform, {8}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 10: llvm-spirv, {9}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 11: file-table-tform, {8, 10}, tempfiletable, (device-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 12: clang-offload-wrapper, {11}, object, (device-sycl) -// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 13: offload, "host-sycl (x86_64-unknown-linux-gnu)" {1}, "device-sycl (spir64-unknown-unknown)" {12}, image +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 1: linker, {0}, host_dep_image, (host-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 2: clang-offload-deps, {1}, ir, (host-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 3: input, "[[INPUTA]]", archive +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 4: clang-offload-unbundler, {3}, tempfilelist +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 5: spirv-to-ir-wrapper, {4}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 6: linker, {2, 5}, ir, (device-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 7: sycl-post-link, {6}, tempfiletable, (device-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 8: file-table-tform, {7}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 9: llvm-spirv, {8}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 10: file-table-tform, {7, 9}, tempfiletable, (device-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 11: clang-offload-wrapper, {10}, object, (device-sycl) +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 12: offload, "device-sycl (spir64-unknown-unknown)" {11}, object +// FOFFLOAD_STATIC_LIB_NOSRC_PHASES: 13: linker, {0, 12}, image, (host-sycl) /// ########################################################################### diff --git a/clang/test/Driver/sycl-offload-win.c b/clang/test/Driver/sycl-offload-win.c index fdda62d6dbdeb..40b72ddd823f9 100644 --- a/clang/test/Driver/sycl-offload-win.c +++ b/clang/test/Driver/sycl-offload-win.c @@ -95,19 +95,19 @@ // FOFFLOAD_STATIC_LIB_SRC: 8: compiler, {7}, ir, (host-sycl) // FOFFLOAD_STATIC_LIB_SRC: 9: backend, {8}, assembler, (host-sycl) // FOFFLOAD_STATIC_LIB_SRC: 10: assembler, {9}, object, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 11: linker, {0, 10}, image, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 12: linker, {0, 10}, host_dep_image, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 13: clang-offload-deps, {12}, ir, (host-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 14: input, "[[INPUTLIB]]", archive -// FOFFLOAD_STATIC_LIB_SRC: 15: clang-offload-unbundler, {14}, tempfilelist -// FOFFLOAD_STATIC_LIB_SRC: 16: spirv-to-ir-wrapper, {15}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 17: linker, {6, 13, 16}, ir, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 18: sycl-post-link, {17}, tempfiletable, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 19: file-table-tform, {18}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 20: llvm-spirv, {19}, tempfilelist, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 21: file-table-tform, {18, 20}, tempfiletable, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 22: clang-offload-wrapper, {21}, object, (device-sycl) -// FOFFLOAD_STATIC_LIB_SRC: 23: offload, "host-sycl (x86_64-pc-windows-msvc)" {11}, "device-sycl (spir64-unknown-unknown)" {22}, image +// FOFFLOAD_STATIC_LIB_SRC: 11: linker, {0, 10}, host_dep_image, (host-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 12: clang-offload-deps, {11}, ir, (host-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 13: input, "[[INPUTLIB]]", archive +// FOFFLOAD_STATIC_LIB_SRC: 14: clang-offload-unbundler, {13}, tempfilelist +// FOFFLOAD_STATIC_LIB_SRC: 15: spirv-to-ir-wrapper, {14}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 16: linker, {6, 12, 15}, ir, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 17: sycl-post-link, {16}, tempfiletable, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 18: file-table-tform, {17}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 19: llvm-spirv, {18}, tempfilelist, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 20: file-table-tform, {17, 19}, tempfiletable, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 21: clang-offload-wrapper, {20}, object, (device-sycl) +// FOFFLOAD_STATIC_LIB_SRC: 22: offload, "device-sycl (spir64-unknown-unknown)" {21}, object +// FOFFLOAD_STATIC_LIB_SRC: 23: linker, {0, 10, 22}, image, (host-sycl) /// ########################################################################### diff --git a/clang/test/Driver/sycl-offload-with-split.c b/clang/test/Driver/sycl-offload-with-split.c index e9c84481d564c..d081d083c3a91 100644 --- a/clang/test/Driver/sycl-offload-with-split.c +++ b/clang/test/Driver/sycl-offload-with-split.c @@ -34,15 +34,14 @@ // CHK-PHASES: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASES: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASES: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASES: 10: linker, {9}, image, (host-sycl) -// CHK-PHASES: 11: linker, {5}, ir, (device-sycl) -// CHK-PHASES: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) -// CHK-PHASES: 13: file-table-tform, {12}, tempfilelist, (device-sycl) -// CHK-PHASES: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) -// CHK-PHASES: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) -// CHK-PHASES: 16: clang-offload-wrapper, {15}, object, (device-sycl) -// CHK-PHASES-DEFAULT-MODE: 17: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, image -// CHK-PHASES-CL-MODE: 17: offload, "host-sycl (x86_64-pc-windows-msvc)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, image +// CHK-PHASES: 10: linker, {5}, ir, (device-sycl) +// CHK-PHASES: 11: sycl-post-link, {10}, tempfiletable, (device-sycl) +// CHK-PHASES: 12: file-table-tform, {11}, tempfilelist, (device-sycl) +// CHK-PHASES: 13: llvm-spirv, {12}, tempfilelist, (device-sycl) +// CHK-PHASES: 14: file-table-tform, {11, 13}, tempfiletable, (device-sycl) +// CHK-PHASES: 15: clang-offload-wrapper, {14}, object, (device-sycl) +// CHK-PHASES: 16: offload, "device-sycl (spir64-unknown-unknown)" {15}, object +// CHK-PHASES: 17: linker, {9, 16}, image, (host-sycl) /// ########################################################################### @@ -61,14 +60,14 @@ // CHK-PHASES-LIB: 8: compiler, {7}, ir, (host-sycl) // CHK-PHASES-LIB: 9: backend, {8}, assembler, (host-sycl) // CHK-PHASES-LIB: 10: assembler, {9}, object, (host-sycl) -// CHK-PHASES-LIB: 11: linker, {0, 10}, image, (host-sycl) -// CHK-PHASES-LIB: 12: linker, {6}, ir, (device-sycl) -// CHK-PHASES-LIB: 13: sycl-post-link, {12}, tempfiletable, (device-sycl) -// CHK-PHASES-LIB: 14: file-table-tform, {13}, tempfilelist, (device-sycl) -// CHK-PHASES-LIB: 15: llvm-spirv, {14}, tempfilelist, (device-sycl) -// CHK-PHASES-LIB: 16: file-table-tform, {13, 15}, tempfiletable, (device-sycl) -// CHK-PHASES-LIB: 17: clang-offload-wrapper, {16}, object, (device-sycl) -// CHK-PHASES-LIB: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {11}, "device-sycl (spir64-unknown-unknown)" {17}, image +// CHK-PHASES-LIB: 11: linker, {6}, ir, (device-sycl) +// CHK-PHASES-LIB: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) +// CHK-PHASES-LIB: 13: file-table-tform, {12}, tempfilelist, (device-sycl) +// CHK-PHASES-LIB: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) +// CHK-PHASES-LIB: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) +// CHK-PHASES-LIB: 16: clang-offload-wrapper, {15}, object, (device-sycl) +// CHK-PHASES-LIB: 17: offload, "device-sycl (spir64-unknown-unknown)" {16}, object +// CHK-PHASES-LIB: 18: linker, {0, 10, 17}, image, (host-sycl) /// ########################################################################### @@ -98,14 +97,14 @@ // CHK-PHASES-FILES: 18: compiler, {17}, ir, (host-sycl) // CHK-PHASES-FILES: 19: backend, {18}, assembler, (host-sycl) // CHK-PHASES-FILES: 20: assembler, {19}, object, (host-sycl) -// CHK-PHASES-FILES: 21: linker, {0, 10, 20}, image, (host-sycl) -// CHK-PHASES-FILES: 22: linker, {6, 16}, ir, (device-sycl) -// CHK-PHASES-FILES: 23: sycl-post-link, {22}, tempfiletable, (device-sycl) -// CHK-PHASES-FILES: 24: file-table-tform, {23}, tempfilelist, (device-sycl) -// CHK-PHASES-FILES: 25: llvm-spirv, {24}, tempfilelist, (device-sycl) -// CHK-PHASES-FILES: 26: file-table-tform, {23, 25}, tempfiletable, (device-sycl) -// CHK-PHASES-FILES: 27: clang-offload-wrapper, {26}, object, (device-sycl) -// CHK-PHASES-FILES: 28: offload, "host-sycl (x86_64-unknown-linux-gnu)" {21}, "device-sycl (spir64-unknown-unknown)" {27}, image +// CHK-PHASES-FILES: 21: linker, {6, 16}, ir, (device-sycl) +// CHK-PHASES-FILES: 22: sycl-post-link, {21}, tempfiletable, (device-sycl) +// CHK-PHASES-FILES: 23: file-table-tform, {22}, tempfilelist, (device-sycl) +// CHK-PHASES-FILES: 24: llvm-spirv, {23}, tempfilelist, (device-sycl) +// CHK-PHASES-FILES: 25: file-table-tform, {22, 24}, tempfiletable, (device-sycl) +// CHK-PHASES-FILES: 26: clang-offload-wrapper, {25}, object, (device-sycl) +// CHK-PHASES-FILES: 27: offload, "device-sycl (spir64-unknown-unknown)" {26}, object +// CHK-PHASES-FILES: 28: linker, {0, 10, 20, 27}, image, (host-sycl) /// ########################################################################### @@ -120,15 +119,15 @@ // CHK-UBACTIONS: 0: input, "somelib", object, (host-sycl) // CHK-UBACTIONS: 1: input, "[[INPUT]]", object, (host-sycl) // CHK-UBACTIONS: 2: clang-offload-unbundler, {1}, object, (host-sycl) -// CHK-UBACTIONS: 3: linker, {0, 2}, image, (host-sycl) -// CHK-UBACTIONS: 4: spirv-to-ir-wrapper, {2}, ir, (device-sycl) -// CHK-UBACTIONS: 5: linker, {4}, ir, (device-sycl) -// CHK-UBACTIONS: 6: sycl-post-link, {5}, tempfiletable, (device-sycl) -// CHK-UBACTIONS: 7: file-table-tform, {6}, tempfilelist, (device-sycl) -// CHK-UBACTIONS: 8: llvm-spirv, {7}, tempfilelist, (device-sycl) -// CHK-UBACTIONS: 9: file-table-tform, {6, 8}, tempfiletable, (device-sycl) -// CHK-UBACTIONS: 10: clang-offload-wrapper, {9}, object, (device-sycl) -// CHK-UBACTIONS: 11: offload, "host-sycl (x86_64-unknown-linux-gnu)" {3}, "device-sycl (spir64-unknown-unknown)" {10}, image +// CHK-UBACTIONS: 3: spirv-to-ir-wrapper, {2}, ir, (device-sycl) +// CHK-UBACTIONS: 4: linker, {3}, ir, (device-sycl) +// CHK-UBACTIONS: 5: sycl-post-link, {4}, tempfiletable, (device-sycl) +// CHK-UBACTIONS: 6: file-table-tform, {5}, tempfilelist, (device-sycl) +// CHK-UBACTIONS: 7: llvm-spirv, {6}, tempfilelist, (device-sycl) +// CHK-UBACTIONS: 8: file-table-tform, {5, 7}, tempfiletable, (device-sycl) +// CHK-UBACTIONS: 9: clang-offload-wrapper, {8}, object, (device-sycl) +// CHK-UBACTIONS: 10: offload, "device-sycl (spir64-unknown-unknown)" {9}, object +// CHK-UBACTIONS: 11: linker, {0, 2, 10}, image, (host-sycl) /// ########################################################################### @@ -149,15 +148,15 @@ // CHK-UBUACTIONS: 10: compiler, {9}, ir, (host-sycl) // CHK-UBUACTIONS: 11: backend, {10}, assembler, (host-sycl) // CHK-UBUACTIONS: 12: assembler, {11}, object, (host-sycl) -// CHK-UBUACTIONS: 13: linker, {0, 2, 12}, image, (host-sycl) -// CHK-UBUACTIONS: 14: spirv-to-ir-wrapper, {2}, ir, (device-sycl) -// CHK-UBUACTIONS: 15: linker, {14, 8}, ir, (device-sycl) -// CHK-UBUACTIONS: 16: sycl-post-link, {15}, tempfiletable, (device-sycl) -// CHK-UBUACTIONS: 17: file-table-tform, {16}, tempfilelist, (device-sycl) -// CHK-UBUACTIONS: 18: llvm-spirv, {17}, tempfilelist, (device-sycl) -// CHK-UBUACTIONS: 19: file-table-tform, {16, 18}, tempfiletable, (device-sycl) -// CHK-UBUACTIONS: 20: clang-offload-wrapper, {19}, object, (device-sycl) -// CHK-UBUACTIONS: 21: offload, "host-sycl (x86_64-unknown-linux-gnu)" {13}, "device-sycl (spir64-unknown-unknown)" {20}, image +// CHK-UBUACTIONS: 13: spirv-to-ir-wrapper, {2}, ir, (device-sycl) +// CHK-UBUACTIONS: 14: linker, {13, 8}, ir, (device-sycl) +// CHK-UBUACTIONS: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) +// CHK-UBUACTIONS: 16: file-table-tform, {15}, tempfilelist, (device-sycl) +// CHK-UBUACTIONS: 17: llvm-spirv, {16}, tempfilelist, (device-sycl) +// CHK-UBUACTIONS: 18: file-table-tform, {15, 17}, tempfiletable, (device-sycl) +// CHK-UBUACTIONS: 19: clang-offload-wrapper, {18}, object, (device-sycl) +// CHK-UBUACTIONS: 20: offload, "device-sycl (spir64-unknown-unknown)" {19}, object +// CHK-UBUACTIONS: 21: linker, {0, 2, 12, 20}, image, (host-sycl) /// ########################################################################### @@ -180,17 +179,17 @@ // CHK-PHASES-AOT: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASES-AOT: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASES-AOT: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASES-AOT: 10: linker, {9}, image, (host-sycl) -// CHK-PHASES-AOT: 11: linker, {5}, ir, (device-sycl) -// CHK-PHASES-AOT: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) -// CHK-PHASES-AOT: 13: file-table-tform, {12}, tempfilelist, (device-sycl) -// CHK-PHASES-AOT: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) -// CHK-PHASES-AOT: 15: backend-compiler, {14}, tempfilelist, (device-sycl) -// CHK-PHASES-AOT: 16: file-table-tform, {12, 15}, tempfiletable, (device-sycl) -// CHK-PHASES-AOT: 17: clang-offload-wrapper, {16}, object, (device-sycl) -// CHK-PHASES-FPGA: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_fpga-unknown-unknown)" {17}, image -// CHK-PHASES-GEN: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_gen-unknown-unknown)" {17}, image -// CHK-PHASES-CPU: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_x86_64-unknown-unknown)" {17}, image +// CHK-PHASES-AOT: 10: linker, {5}, ir, (device-sycl) +// CHK-PHASES-AOT: 11: sycl-post-link, {10}, tempfiletable, (device-sycl) +// CHK-PHASES-AOT: 12: file-table-tform, {11}, tempfilelist, (device-sycl) +// CHK-PHASES-AOT: 13: llvm-spirv, {12}, tempfilelist, (device-sycl) +// CHK-PHASES-AOT: 14: backend-compiler, {13}, tempfilelist, (device-sycl) +// CHK-PHASES-AOT: 15: file-table-tform, {11, 14}, tempfiletable, (device-sycl) +// CHK-PHASES-AOT: 16: clang-offload-wrapper, {15}, object, (device-sycl) +// CHK-PHASES-FPGA: 17: offload, "device-sycl (spir64_fpga-unknown-unknown)" {16}, object +// CHK-PHASES-GEN: 17: offload, "device-sycl (spir64_gen-unknown-unknown)" {16}, object +// CHK-PHASES-CPU: 17: offload, "device-sycl (spir64_x86_64-unknown-unknown)" {16}, object +// CHK-PHASES-AOT: 18: linker, {9, 17}, image, (host-sycl) /// ########################################################################### @@ -204,6 +203,7 @@ // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-device-code-split -fsycl-targets=spir64_x86_64-unknown-unknown %s -### 2>&1 \ // RUN: | FileCheck %s -check-prefixes=CHK-TOOLS-AOT,CHK-TOOLS-CPU // CHK-TOOLS-AOT: clang{{.*}} "-fsycl-is-device"{{.*}} "-fsycl-int-header=[[INPUT1:.+\-header.+\.h]]" "-fsycl-int-footer={{.*}}"{{.*}} "-o" "[[OUTPUT1:.+\.bc]]" +// CHK-TOOLS-AOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-o" "[[OUTPUT10:.+\.o]]" // CHK-TOOLS-AOT: llvm-link{{.*}} "[[OUTPUT1]]" "-o" "[[OUTPUT2:.+\.bc]]" // CHK-TOOLS-AOT: sycl-post-link{{.*}} "-split=auto" {{.*}} "-spec-const=emulation" {{.*}} "-o" "[[OUTPUT3:.+\.table]]" "[[OUTPUT2]]" // CHK-TOOLS-AOT: file-table-tform{{.*}} "-o" "[[OUTPUT4:.+\.txt]]" "[[OUTPUT3]]" @@ -216,7 +216,6 @@ // CHK-TOOLS-GEN: clang-offload-wrapper{{.*}} "-o=[[OUTPUT8:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_gen" "-kind=sycl" "-batch" "[[OUTPUT7]]" // CHK-TOOLS-CPU: clang-offload-wrapper{{.*}} "-o=[[OUTPUT8:.+\.bc]]" "-host=x86_64-unknown-linux-gnu" "-target=spir64_x86_64" "-kind=sycl" "-batch" "[[OUTPUT7]]" // CHK-TOOLS-AOT: llc{{.*}} "-filetype=obj" "-o" "[[OUTPUT9:.+\.o]]" "[[OUTPUT8]]" -// CHK-TOOLS-AOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-o" "[[OUTPUT10:.+\.o]]" // CHK-TOOLS-AOT: ld{{.*}} "[[OUTPUT10]]" "[[OUTPUT9]]" {{.*}} "-lsycl" /// ########################################################################### @@ -250,16 +249,16 @@ // CHK-PHASE-MULTI-TARG: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASE-MULTI-TARG: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASE-MULTI-TARG: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASE-MULTI-TARG: 10: linker, {9}, image, (host-sycl) -// CHK-PHASE-MULTI-TARG: 11: input, "[[INPUT]]", c++, (device-sycl) -// CHK-PHASE-MULTI-TARG: 12: preprocessor, {11}, c++-cpp-output, (device-sycl) -// CHK-PHASE-MULTI-TARG: 13: compiler, {12}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG: 14: linker, {13}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 16: file-table-tform, {15}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 17: llvm-spirv, {16}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 18: file-table-tform, {15, 17}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 19: clang-offload-wrapper, {18}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG: 10: input, "[[INPUT]]", c++, (device-sycl) +// CHK-PHASE-MULTI-TARG: 11: preprocessor, {10}, c++-cpp-output, (device-sycl) +// CHK-PHASE-MULTI-TARG: 12: compiler, {11}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG: 13: linker, {12}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG: 14: sycl-post-link, {13}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 15: file-table-tform, {14}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 16: llvm-spirv, {15}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 17: file-table-tform, {14, 16}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 18: clang-offload-wrapper, {17}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG: 19: offload, "device-sycl (spir64-unknown-unknown)" {18}, object // CHK-PHASE-MULTI-TARG: 20: input, "[[INPUT]]", c++, (device-sycl) // CHK-PHASE-MULTI-TARG: 21: preprocessor, {20}, c++-cpp-output, (device-sycl) // CHK-PHASE-MULTI-TARG: 22: compiler, {21}, ir, (device-sycl) @@ -270,14 +269,16 @@ // CHK-PHASE-MULTI-TARG: 27: backend-compiler, {26}, tempfilelist, (device-sycl) // CHK-PHASE-MULTI-TARG: 28: file-table-tform, {24, 27}, tempfiletable, (device-sycl) // CHK-PHASE-MULTI-TARG: 29: clang-offload-wrapper, {28}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG: 30: linker, {5}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG: 31: sycl-post-link, {30}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 32: file-table-tform, {31}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 33: llvm-spirv, {32}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 34: backend-compiler, {33}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG: 35: file-table-tform, {31, 34}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG: 36: clang-offload-wrapper, {35}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG: 37: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {19}, "device-sycl (spir64_fpga-unknown-unknown)" {29}, "device-sycl (spir64_gen-unknown-unknown)" {36}, image +// CHK-PHASE-MULTI-TARG: 30: offload, "device-sycl (spir64_fpga-unknown-unknown)" {29}, object +// CHK-PHASE-MULTI-TARG: 31: linker, {5}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG: 32: sycl-post-link, {31}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 33: file-table-tform, {32}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 34: llvm-spirv, {33}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 35: backend-compiler, {34}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG: 36: file-table-tform, {32, 35}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG: 37: clang-offload-wrapper, {36}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG: 38: offload, "device-sycl (spir64_gen-unknown-unknown)" {37}, object +// CHK-PHASE-MULTI-TARG: 39: linker, {9, 19, 30, 38}, image, (host-sycl) // Check -fsycl-device-code-split=per_kernel option passing. // RUN: %clang -### -fsycl -fsycl-device-code-split=per_kernel %s 2>&1 \ diff --git a/clang/test/Driver/sycl-offload.c b/clang/test/Driver/sycl-offload.c index ee2bd1db9ed16..1d71e1bcdab5b 100644 --- a/clang/test/Driver/sycl-offload.c +++ b/clang/test/Driver/sycl-offload.c @@ -124,15 +124,14 @@ // CHK-PHASES: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASES: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASES: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASES: 10: linker, {9}, image, (host-sycl) -// CHK-PHASES: 11: linker, {5}, ir, (device-sycl) -// CHK-PHASES: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) -// CHK-PHASES: 13: file-table-tform, {12}, tempfilelist, (device-sycl) -// CHK-PHASES: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) -// CHK-PHASES: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) -// CHK-PHASES: 16: clang-offload-wrapper, {15}, object, (device-sycl) -// CHK-PHASES-DEFAULT-MODE: 17: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, image -// CHK-PHASES-CL-MODE: 17: offload, "host-sycl (x86_64-pc-windows-msvc)" {10}, "device-sycl (spir64-unknown-unknown)" {16}, image +// CHK-PHASES: 10: linker, {5}, ir, (device-sycl) +// CHK-PHASES: 11: sycl-post-link, {10}, tempfiletable, (device-sycl) +// CHK-PHASES: 12: file-table-tform, {11}, tempfilelist, (device-sycl) +// CHK-PHASES: 13: llvm-spirv, {12}, tempfilelist, (device-sycl) +// CHK-PHASES: 14: file-table-tform, {11, 13}, tempfiletable, (device-sycl) +// CHK-PHASES: 15: clang-offload-wrapper, {14}, object, (device-sycl) +// CHK-PHASES: 16: offload, "device-sycl (spir64-unknown-unknown)" {15}, object +// CHK-PHASES: 17: linker, {9, 16}, image, (host-sycl) /// ########################################################################### @@ -160,14 +159,14 @@ // CHK-PHASES-LIB: 8: compiler, {7}, ir, (host-sycl) // CHK-PHASES-LIB: 9: backend, {8}, assembler, (host-sycl) // CHK-PHASES-LIB: 10: assembler, {9}, object, (host-sycl) -// CHK-PHASES-LIB: 11: linker, {0, 10}, image, (host-sycl) -// CHK-PHASES-LIB: 12: linker, {6}, ir, (device-sycl) -// CHK-PHASES-LIB: 13: sycl-post-link, {12}, tempfiletable, (device-sycl) -// CHK-PHASES-LIB: 14: file-table-tform, {13}, tempfilelist, (device-sycl) -// CHK-PHASES-LIB: 15: llvm-spirv, {14}, tempfilelist, (device-sycl) -// CHK-PHASES-LIB: 16: file-table-tform, {13, 15}, tempfiletable, (device-sycl) -// CHK-PHASES-LIB: 17: clang-offload-wrapper, {16}, object, (device-sycl) -// CHK-PHASES-LIB: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {11}, "device-sycl (spir64-unknown-unknown)" {17}, image +// CHK-PHASES-LIB: 11: linker, {6}, ir, (device-sycl) +// CHK-PHASES-LIB: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) +// CHK-PHASES-LIB: 13: file-table-tform, {12}, tempfilelist, (device-sycl) +// CHK-PHASES-LIB: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) +// CHK-PHASES-LIB: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) +// CHK-PHASES-LIB: 16: clang-offload-wrapper, {15}, object, (device-sycl) +// CHK-PHASES-LIB: 17: offload, "device-sycl (spir64-unknown-unknown)" {16}, object +// CHK-PHASES-LIB: 18: linker, {0, 10, 17}, image, (host-sycl) /// Compilation check with -lstdc++ (treated differently than regular lib) // RUN: %clang -### -target x86_64-unknown-linux-gnu -lstdc++ -fsycl %s 2>&1 \ @@ -203,14 +202,14 @@ // CHK-PHASES-FILES: 18: compiler, {17}, ir, (host-sycl) // CHK-PHASES-FILES: 19: backend, {18}, assembler, (host-sycl) // CHK-PHASES-FILES: 20: assembler, {19}, object, (host-sycl) -// CHK-PHASES-FILES: 21: linker, {0, 10, 20}, image, (host-sycl) -// CHK-PHASES-FILES: 22: linker, {6, 16}, ir, (device-sycl) -// CHK-PHASES-FILES: 23: sycl-post-link, {22}, tempfiletable, (device-sycl) -// CHK-PHASES-FILES: 24: file-table-tform, {23}, tempfilelist, (device-sycl) -// CHK-PHASES-FILES: 25: llvm-spirv, {24}, tempfilelist, (device-sycl) -// CHK-PHASES-FILES: 26: file-table-tform, {23, 25}, tempfiletable, (device-sycl) -// CHK-PHASES-FILES: 27: clang-offload-wrapper, {26}, object, (device-sycl) -// CHK-PHASES-FILES: 28: offload, "host-sycl (x86_64-unknown-linux-gnu)" {21}, "device-sycl (spir64-unknown-unknown)" {27}, image +// CHK-PHASES-FILES: 21: linker, {6, 16}, ir, (device-sycl) +// CHK-PHASES-FILES: 22: sycl-post-link, {21}, tempfiletable, (device-sycl) +// CHK-PHASES-FILES: 23: file-table-tform, {22}, tempfilelist, (device-sycl) +// CHK-PHASES-FILES: 24: llvm-spirv, {23}, tempfilelist, (device-sycl) +// CHK-PHASES-FILES: 25: file-table-tform, {22, 24}, tempfiletable, (device-sycl) +// CHK-PHASES-FILES: 26: clang-offload-wrapper, {25}, object, (device-sycl) +// CHK-PHASES-FILES: 27: offload, "device-sycl (spir64-unknown-unknown)" {26}, object +// CHK-PHASES-FILES: 28: linker, {0, 10, 20, 27}, image, (host-sycl) /// ########################################################################### @@ -245,15 +244,15 @@ // CHK-UBACTIONS: 0: input, "somelib", object, (host-sycl) // CHK-UBACTIONS: 1: input, "[[INPUT]]", object, (host-sycl) // CHK-UBACTIONS: 2: clang-offload-unbundler, {1}, object, (host-sycl) -// CHK-UBACTIONS: 3: linker, {0, 2}, image, (host-sycl) -// CHK-UBACTIONS: 4: spirv-to-ir-wrapper, {2}, ir, (device-sycl) -// CHK-UBACTIONS: 5: linker, {4}, ir, (device-sycl) -// CHK-UBACTIONS: 6: sycl-post-link, {5}, tempfiletable, (device-sycl) -// CHK-UBACTIONS: 7: file-table-tform, {6}, tempfilelist, (device-sycl) -// CHK-UBACTIONS: 8: llvm-spirv, {7}, tempfilelist, (device-sycl) -// CHK-UBACTIONS: 9: file-table-tform, {6, 8}, tempfiletable, (device-sycl) -// CHK-UBACTIONS: 10: clang-offload-wrapper, {9}, object, (device-sycl) -// CHK-UBACTIONS: 11: offload, "host-sycl (x86_64-unknown-linux-gnu)" {3}, "device-sycl (spir64-unknown-unknown)" {10}, image +// CHK-UBACTIONS: 3: spirv-to-ir-wrapper, {2}, ir, (device-sycl) +// CHK-UBACTIONS: 4: linker, {3}, ir, (device-sycl) +// CHK-UBACTIONS: 5: sycl-post-link, {4}, tempfiletable, (device-sycl) +// CHK-UBACTIONS: 6: file-table-tform, {5}, tempfilelist, (device-sycl) +// CHK-UBACTIONS: 7: llvm-spirv, {6}, tempfilelist, (device-sycl) +// CHK-UBACTIONS: 8: file-table-tform, {5, 7}, tempfiletable, (device-sycl) +// CHK-UBACTIONS: 9: clang-offload-wrapper, {8}, object, (device-sycl) +// CHK-UBACTIONS: 10: offload, "device-sycl (spir64-unknown-unknown)" {9}, object +// CHK-UBACTIONS: 11: linker, {0, 2, 10}, image, (host-sycl) /// ########################################################################### @@ -274,15 +273,15 @@ // CHK-UBUACTIONS: 10: compiler, {9}, ir, (host-sycl) // CHK-UBUACTIONS: 11: backend, {10}, assembler, (host-sycl) // CHK-UBUACTIONS: 12: assembler, {11}, object, (host-sycl) -// CHK-UBUACTIONS: 13: linker, {0, 2, 12}, image, (host-sycl) -// CHK-UBUACTIONS: 14: spirv-to-ir-wrapper, {2}, ir, (device-sycl) -// CHK-UBUACTIONS: 15: linker, {14, 8}, ir, (device-sycl) -// CHK-UBUACTIONS: 16: sycl-post-link, {15}, tempfiletable, (device-sycl) -// CHK-UBUACTIONS: 17: file-table-tform, {16}, tempfilelist, (device-sycl) -// CHK-UBUACTIONS: 18: llvm-spirv, {17}, tempfilelist, (device-sycl) -// CHK-UBUACTIONS: 19: file-table-tform, {16, 18}, tempfiletable, (device-sycl) -// CHK-UBUACTIONS: 20: clang-offload-wrapper, {19}, object, (device-sycl) -// CHK-UBUACTIONS: 21: offload, "host-sycl (x86_64-unknown-linux-gnu)" {13}, "device-sycl (spir64-unknown-unknown)" {20}, image +// CHK-UBUACTIONS: 13: spirv-to-ir-wrapper, {2}, ir, (device-sycl) +// CHK-UBUACTIONS: 14: linker, {13, 8}, ir, (device-sycl) +// CHK-UBUACTIONS: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) +// CHK-UBUACTIONS: 16: file-table-tform, {15}, tempfilelist, (device-sycl) +// CHK-UBUACTIONS: 17: llvm-spirv, {16}, tempfilelist, (device-sycl) +// CHK-UBUACTIONS: 18: file-table-tform, {15, 17}, tempfiletable, (device-sycl) +// CHK-UBUACTIONS: 19: clang-offload-wrapper, {18}, object, (device-sycl) +// CHK-UBUACTIONS: 20: offload, "device-sycl (spir64-unknown-unknown)" {19}, object +// CHK-UBUACTIONS: 21: linker, {0, 2, 12, 20}, image, (host-sycl) /// ########################################################################### @@ -316,13 +315,71 @@ // RUN: | FileCheck -check-prefix=CHK-LINK-UB %s // CHK-LINK-UB: 0: input, "[[INPUT:.+\.o]]", object // CHK-LINK-UB: 1: clang-offload-unbundler, {0}, object -// CHK-LINK-UB: 2: linker, {1}, image, (device-sycl) -// CHK-LINK-UB: 3: sycl-post-link, {2}, ir, (device-sycl) -// CHK-LINK-UB: 4: file-table-tform, {3}, tempfilelist, (device-sycl) -// CHK-LINK-UB: 5: llvm-spirv, {4}, tempfilelist, (device-sycl) -// CHK-LINK-UB: 6: file-table-tform, {3, 5}, tempfiletable, (device-sycl) -// CHK-LINK-UB: 7: clang-offload-wrapper, {6}, object, (device-sycl) -// CHK-LINK-UB: 8: offload, "device-sycl (spir64-unknown-unknown)" {7}, object +// CHK-LINK-UB: 2: spirv-to-ir-wrapper, {1}, ir, (device-sycl) +// CHK-LINK-UB: 3: linker, {2}, ir, (device-sycl) +// CHK-LINK-UB: 4: sycl-post-link, {3}, tempfiletable, (device-sycl) +// CHK-LINK-UB: 5: file-table-tform, {4}, tempfilelist, (device-sycl) +// CHK-LINK-UB: 6: llvm-spirv, {5}, tempfilelist, (device-sycl) +// CHK-LINK-UB: 7: file-table-tform, {4, 6}, tempfiletable, (device-sycl) +// CHK-LINK-UB: 8: offload, "device-sycl (spir64-unknown-unknown)" {7}, tempfiletable +// CHK-LINK-UB: 9: clang-offload-wrapper, {8}, ir, (host-sycl) +// CHK-LINK-UB: 10: backend, {9}, assembler, (host-sycl) +// CHK-LINK-UB: 11: assembler, {10}, object, (host-sycl) + +/// Check -fsycl-link AOT unbundle +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu \ +// RUN: -fsycl -o %t.out -fsycl-link -fno-sycl-instrument-device-code \ +// RUN: -fsycl-targets=spir64_gen -fno-sycl-device-lib=all %t.o 2>&1 \ +// RUN: | FileCheck -check-prefix=CHK-LINK-AOT-UB %s +// RUN: %clang_cl -### -ccc-print-phases --target=x86_64-pc-windows-msvc \ +// RUN: -fsycl -o %t.out -fsycl-link -fno-sycl-instrument-device-code \ +// RUN: -fsycl-targets=spir64_gen -fno-sycl-device-lib=all %t.o 2>&1 \ +// RUN: | FileCheck -check-prefix=CHK-LINK-AOT-UB %s +// CHK-LINK-AOT-UB: 0: input, "[[INPUT:.+\.o]]", object +// CHK-LINK-AOT-UB: 1: clang-offload-unbundler, {0}, object +// CHK-LINK-AOT-UB: 2: spirv-to-ir-wrapper, {1}, ir, (device-sycl) +// CHK-LINK-AOT-UB: 3: linker, {2}, ir, (device-sycl) +// CHK-LINK-AOT-UB: 4: sycl-post-link, {3}, tempfiletable, (device-sycl) +// CHK-LINK-AOT-UB: 5: file-table-tform, {4}, tempfilelist, (device-sycl) +// CHK-LINK-AOT-UB: 6: llvm-spirv, {5}, tempfilelist, (device-sycl) +// CHK-LINK-AOT-UB: 7: backend-compiler, {6}, image, (device-sycl) +// CHK-LINK-AOT-UB: 8: file-table-tform, {4, 7}, tempfiletable, (device-sycl) +// CHK-LINK-AOT-UB: 9: offload, "device-sycl (spir64_gen-unknown-unknown)" {8}, tempfiletable +// CHK-LINK-AOT-UB: 10: clang-offload-wrapper, {9}, ir, (host-sycl) +// CHK-LINK-AOT-UB: 11: backend, {10}, assembler, (host-sycl) +// CHK-LINK-AOT-UB: 12: assembler, {11}, object, (host-sycl) + +/// Check -fsycl-link AOT/JIT unbundle +// RUN: %clang -### -ccc-print-phases -target x86_64-unknown-linux-gnu \ +// RUN: -fsycl -o %t.out -fsycl-link -fno-sycl-instrument-device-code \ +// RUN: -fsycl-targets=spir64_gen,spir64 \ +// RUN: -fno-sycl-device-lib=all %t.o 2>&1 \ +// RUN: | FileCheck -check-prefix=CHK-LINK-AOT-JIT-UB %s +// RUN: %clang_cl -### -ccc-print-phases --target=x86_64-pc-windows-msvc \ +// RUN: -fsycl -o %t.out -fsycl-link -fno-sycl-instrument-device-code \ +// RUN: -fsycl-targets=spir64_gen,spir64 \ +// RUN: -fno-sycl-device-lib=all %t.o 2>&1 \ +// RUN: | FileCheck -check-prefix=CHK-LINK-AOT-JIT-UB %s +// CHK-LINK-AOT-JIT-UB: 0: input, "[[INPUT:.+\.o]]", object +// CHK-LINK-AOT-JIT-UB: 1: clang-offload-unbundler, {0}, object +// CHK-LINK-AOT-JIT-UB: 2: spirv-to-ir-wrapper, {1}, ir, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 3: linker, {2}, ir, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 4: sycl-post-link, {3}, tempfiletable, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 5: file-table-tform, {4}, tempfilelist, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 6: llvm-spirv, {5}, tempfilelist, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 7: backend-compiler, {6}, image, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 8: file-table-tform, {4, 7}, tempfiletable, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 9: offload, "device-sycl (spir64_gen-unknown-unknown)" {8}, tempfiletable +// CHK-LINK-AOT-JIT-UB: 10: spirv-to-ir-wrapper, {1}, ir, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 11: linker, {10}, ir, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 12: sycl-post-link, {11}, tempfiletable, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 13: file-table-tform, {12}, tempfilelist, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 14: llvm-spirv, {13}, tempfilelist, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 15: file-table-tform, {12, 14}, tempfiletable, (device-sycl) +// CHK-LINK-AOT-JIT-UB: 16: offload, "device-sycl (spir64-unknown-unknown)" {15}, tempfiletable +// CHK-LINK-AOT-JIT-UB: 17: clang-offload-wrapper, {9, 16}, ir, (host-sycl) +// CHK-LINK-AOT-JIT-UB: 18: backend, {17}, assembler, (host-sycl) +// CHK-LINK-AOT-JIT-UB: 19: assembler, {18}, object, (host-sycl) /// ########################################################################### @@ -334,13 +391,15 @@ // CHK-LINK: 0: input, "[[INPUT:.+\.c]]", c++, (device-sycl) // CHK-LINK: 1: preprocessor, {0}, c++-cpp-output, (device-sycl) // CHK-LINK: 2: compiler, {1}, ir, (device-sycl) -// CHK-LINK: 3: linker, {2}, image, (device-sycl) -// CHK-LINK: 4: sycl-post-link, {3}, ir, (device-sycl) +// CHK-LINK: 3: linker, {2}, ir, (device-sycl) +// CHK-LINK: 4: sycl-post-link, {3}, tempfiletable, (device-sycl) // CHK-LINK: 5: file-table-tform, {4}, tempfilelist, (device-sycl) // CHK-LINK: 6: llvm-spirv, {5}, tempfilelist, (device-sycl) // CHK-LINK: 7: file-table-tform, {4, 6}, tempfiletable, (device-sycl) -// CHK-LINK: 8: clang-offload-wrapper, {7}, object, (device-sycl) -// CHK-LINK: 9: offload, "device-sycl (spir64-unknown-unknown)" {8}, object +// CHK-LINK: 8: offload, "device-sycl (spir64-unknown-unknown)" {7}, tempfiletable +// CHK-LINK: 9: clang-offload-wrapper, {8}, ir, (host-sycl) +// CHK-LINK: 10: backend, {9}, assembler, (host-sycl) +// CHK-LINK: 11: assembler, {10}, object, (host-sycl) /// ########################################################################### @@ -463,26 +522,27 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 10: linker, {9}, image, (host-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 11: input, "[[INPUT]]", c++, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 12: preprocessor, {11}, c++-cpp-output, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 13: compiler, {12}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 14: linker, {13}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 15: sycl-post-link, {14}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 16: file-table-tform, {15}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 17: backend, {16}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 18: assembler, {17}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 19: linker, {17, 18}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 20: foreach, {16, 19}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 21: file-table-tform, {15, 20}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 22: clang-offload-wrapper, {21}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 10: input, "[[INPUT]]", c++, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 11: preprocessor, {10}, c++-cpp-output, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 12: compiler, {11}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 13: linker, {12}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 14: sycl-post-link, {13}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 15: file-table-tform, {14}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 16: backend, {15}, assembler, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 17: assembler, {16}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 18: linker, {16, 17}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 19: foreach, {15, 18}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 20: file-table-tform, {14, 19}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 21: clang-offload-wrapper, {20}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 22: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {21}, object // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 23: linker, {5}, ir, (device-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 24: sycl-post-link, {23}, tempfiletable, (device-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 25: file-table-tform, {24}, tempfilelist, (device-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 26: llvm-spirv, {25}, tempfilelist, (device-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 27: file-table-tform, {24, 26}, tempfiletable, (device-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 28: clang-offload-wrapper, {27}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 29: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {22}, "device-sycl (spir64-unknown-unknown)" {28}, image +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 29: offload, "device-sycl (spir64-unknown-unknown)" {28}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 30: linker, {9, 22, 29}, image, (host-sycl) /// Check the behaviour however with swapped -fsycl-targets // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64,nvptx64-nvidia-cuda -ccc-print-phases %s 2>&1 \ @@ -497,26 +557,27 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 10: linker, {9}, image, (host-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 11: input, "[[INPUT]]", c++, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 12: preprocessor, {11}, c++-cpp-output, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 13: compiler, {12}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 14: linker, {13}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 16: file-table-tform, {15}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 17: llvm-spirv, {16}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 18: file-table-tform, {15, 17}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 19: clang-offload-wrapper, {18}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 20: linker, {5}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 21: sycl-post-link, {20}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 22: file-table-tform, {21}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 23: backend, {22}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 24: assembler, {23}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 25: linker, {23, 24}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 26: foreach, {22, 25}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 27: file-table-tform, {21, 26}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 28: clang-offload-wrapper, {27}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 29: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {19}, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {28}, image +10: input, "[[INPUT]]", c++, (device-sycl) +11: preprocessor, {10}, c++-cpp-output, (device-sycl) +12: compiler, {11}, ir, (device-sycl) +13: linker, {12}, ir, (device-sycl) +14: sycl-post-link, {13}, tempfiletable, (device-sycl) +15: file-table-tform, {14}, tempfilelist, (device-sycl) +16: llvm-spirv, {15}, tempfilelist, (device-sycl) +17: file-table-tform, {14, 16}, tempfiletable, (device-sycl) +18: clang-offload-wrapper, {17}, object, (device-sycl) +19: offload, "device-sycl (spir64-unknown-unknown)" {18}, object +20: linker, {5}, ir, (device-sycl, sm_50) +21: sycl-post-link, {20}, ir, (device-sycl, sm_50) +22: file-table-tform, {21}, ir, (device-sycl, sm_50) +23: backend, {22}, assembler, (device-sycl, sm_50) +24: assembler, {23}, object, (device-sycl, sm_50) +25: linker, {23, 24}, cuda-fatbin, (device-sycl, sm_50) +26: foreach, {22, 25}, cuda-fatbin, (device-sycl, sm_50) +27: file-table-tform, {21, 26}, tempfiletable, (device-sycl, sm_50) +28: clang-offload-wrapper, {27}, object, (device-sycl, sm_50) +29: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {28}, object +30: linker, {9, 19, 29}, image, (host-sycl) /// ########################################################################### @@ -533,16 +594,16 @@ // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 7: compiler, {6}, ir, (host-sycl) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 8: backend, {7}, assembler, (host-sycl) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 9: assembler, {8}, object, (host-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 10: linker, {9}, image, (host-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 11: input, "[[INPUT]]", c++, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 12: preprocessor, {11}, c++-cpp-output, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 13: compiler, {12}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 14: linker, {13}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 15: sycl-post-link, {14}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 16: file-table-tform, {15}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 17: llvm-spirv, {16}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 18: file-table-tform, {15, 17}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 19: clang-offload-wrapper, {18}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 10: input, "[[INPUT]]", c++, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 11: preprocessor, {10}, c++-cpp-output, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 12: compiler, {11}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 13: linker, {12}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 14: sycl-post-link, {13}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 15: file-table-tform, {14}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 16: llvm-spirv, {15}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 17: file-table-tform, {14, 16}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 18: clang-offload-wrapper, {17}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 19: offload, "device-sycl (spir64-unknown-unknown)" {18}, object // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 20: input, "[[INPUT]]", c++, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 21: preprocessor, {20}, c++-cpp-output, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 22: compiler, {21}, ir, (device-sycl, sm_75) @@ -555,17 +616,19 @@ // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 29: foreach, {25, 28}, cuda-fatbin, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 30: file-table-tform, {24, 29}, tempfiletable, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 31: clang-offload-wrapper, {30}, object, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 32: linker, {5}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 33: sycl-post-link, {32}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 34: file-table-tform, {33}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 35: backend, {34}, assembler, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 36: assembler, {35}, object, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 37: linker, {36}, image, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 38: linker, {37}, hip-fatbin, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 39: foreach, {34, 38}, hip-fatbin, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 40: file-table-tform, {33, 39}, tempfiletable, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 41: clang-offload-wrapper, {40}, object, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 42: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64-unknown-unknown)" {19}, "device-sycl (nvptx-nvidia-cuda:sm_75)" {31}, "device-sycl (amdgcn-amd-amdhsa:gfx908)" {41}, image +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 32: offload, "device-sycl (nvptx-nvidia-cuda:sm_75)" {31}, object +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 33: linker, {5}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 34: sycl-post-link, {33}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 35: file-table-tform, {34}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 36: backend, {35}, assembler, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 37: assembler, {36}, object, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 38: linker, {37}, image, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 39: linker, {38}, hip-fatbin, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 40: foreach, {35, 39}, hip-fatbin, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 41: file-table-tform, {34, 40}, tempfiletable, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 42: clang-offload-wrapper, {41}, object, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 43: offload, "device-sycl (amdgcn-amd-amdhsa:gfx908)" {42}, object +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 44: linker, {9, 19, 32, 43}, image, (host-sycl) /// -fsycl with /Fo testing // RUN: %clang_cl -fsycl /Fosomefile.obj -c %s -### 2>&1 \ diff --git a/clang/test/Driver/sycl-oneapi-gpu-amdgpu.cpp b/clang/test/Driver/sycl-oneapi-gpu-amdgpu.cpp index 596b0a6b7e13f..21128cfc2025b 100644 --- a/clang/test/Driver/sycl-oneapi-gpu-amdgpu.cpp +++ b/clang/test/Driver/sycl-oneapi-gpu-amdgpu.cpp @@ -116,9 +116,9 @@ // RUN: FileCheck %s --check-prefixes=DEVICE_AMD,MACRO_AMD -DDEV_STR=gfx1201 -DMAC_STR=GFX1201 // MACRO_AMD: clang{{.*}} "-triple" "amdgcn-amd-amdhsa" // MACRO_AMD: "-D__SYCL_TARGET_AMD_GPU_[[MAC_STR]]__" -// DEVICE_AMD: clang-offload-wrapper{{.*}} "-compile-opts=--offload-arch=[[DEV_STR]]{{.*}}" // MACRO_AMD: clang{{.*}} "-fsycl-is-host" // MACRO_AMD: "-D__SYCL_TARGET_AMD_GPU_[[MAC_STR]]__" +// DEVICE_AMD: clang-offload-wrapper{{.*}} "-compile-opts=--offload-arch=[[DEV_STR]]{{.*}}" /// test for invalid amd arch // RUN: not %clangxx -c -fsycl -fsycl-targets=amd_gpu_bad -### %s 2>&1 | \ @@ -161,16 +161,16 @@ // AMD_CHECK_PHASES: 7: compiler, {6}, ir, (host-sycl) // AMD_CHECK_PHASES: 8: backend, {7}, assembler, (host-sycl) // AMD_CHECK_PHASES: 9: assembler, {8}, object, (host-sycl) -// AMD_CHECK_PHASES: 10: linker, {9}, image, (host-sycl) -// AMD_CHECK_PHASES: 11: linker, {5}, ir, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 12: sycl-post-link, {11}, ir, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 13: file-table-tform, {12}, ir, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 14: backend, {13}, assembler, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 15: assembler, {14}, object, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 16: linker, {15}, image, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 17: linker, {16}, hip-fatbin, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 18: foreach, {13, 17}, hip-fatbin, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 19: file-table-tform, {12, 18}, tempfiletable, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 20: clang-offload-wrapper, {19}, object, (device-sycl, gfx700) -// AMD_CHECK_PHASES: 21: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (amdgcn-amd-amdhsa:gfx700)" {20}, image +// AMD_CHECK_PHASES: 10: linker, {5}, ir, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 11: sycl-post-link, {10}, ir, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 12: file-table-tform, {11}, ir, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 13: backend, {12}, assembler, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 14: assembler, {13}, object, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 15: linker, {14}, image, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 16: linker, {15}, hip-fatbin, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 17: foreach, {12, 16}, hip-fatbin, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 18: file-table-tform, {11, 17}, tempfiletable, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 19: clang-offload-wrapper, {18}, object, (device-sycl, gfx700) +// AMD_CHECK_PHASES: 20: offload, "device-sycl (amdgcn-amd-amdhsa:gfx700)" {19}, object +// AMD_CHECK_PHASES: 21: linker, {9, 20}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-oneapi-gpu-intelgpu.cpp b/clang/test/Driver/sycl-oneapi-gpu-intelgpu.cpp index ae028290b7402..d2955b428b4ac 100644 --- a/clang/test/Driver/sycl-oneapi-gpu-intelgpu.cpp +++ b/clang/test/Driver/sycl-oneapi-gpu-intelgpu.cpp @@ -94,9 +94,9 @@ // RUN: FileCheck %s --check-prefixes=DEVICE,MACRO -DDEV_STR=pvc -DMAC_STR=PVC // MACRO: clang{{.*}} "-triple" "spir64_gen-unknown-unknown" // MACRO: "-D__SYCL_TARGET_INTEL_GPU_[[MAC_STR]]__" -// DEVICE: ocloc{{.*}} "-device" "[[DEV_STR]]" // MACRO: clang{{.*}} "-fsycl-is-host" // MACRO: "-D__SYCL_TARGET_INTEL_GPU_[[MAC_STR]]__" +// DEVICE: ocloc{{.*}} "-device" "[[DEV_STR]]" /// -fsycl-targets=spir64_x86_64 should set a specific macro // RUN: %clangxx -c -fsycl -fsycl-targets=spir64_x86_64 -### %s 2>&1 | \ @@ -147,15 +147,15 @@ // CHECK_PHASES: 7: compiler, {6}, ir, (host-sycl) // CHECK_PHASES: 8: backend, {7}, assembler, (host-sycl) // CHECK_PHASES: 9: assembler, {8}, object, (host-sycl) -// CHECK_PHASES: 10: linker, {9}, image, (host-sycl) -// CHECK_PHASES: 11: linker, {5}, ir, (device-sycl, skl) -// CHECK_PHASES: 12: sycl-post-link, {11}, tempfiletable, (device-sycl, skl) -// CHECK_PHASES: 13: file-table-tform, {12}, tempfilelist, (device-sycl, skl) -// CHECK_PHASES: 14: llvm-spirv, {13}, tempfilelist, (device-sycl, skl) -// CHECK_PHASES: 15: backend-compiler, {14}, image, (device-sycl, skl) -// CHECK_PHASES: 16: file-table-tform, {12, 15}, tempfiletable, (device-sycl, skl) -// CHECK_PHASES: 17: clang-offload-wrapper, {16}, object, (device-sycl, skl) -// CHECK_PHASES: 18: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_gen-unknown-unknown:skl)" {17}, image +// CHECK_PHASES: 10: linker, {5}, ir, (device-sycl, skl) +// CHECK_PHASES: 11: sycl-post-link, {10}, tempfiletable, (device-sycl, skl) +// CHECK_PHASES: 12: file-table-tform, {11}, tempfilelist, (device-sycl, skl) +// CHECK_PHASES: 13: llvm-spirv, {12}, tempfilelist, (device-sycl, skl) +// CHECK_PHASES: 14: backend-compiler, {13}, image, (device-sycl, skl) +// CHECK_PHASES: 15: file-table-tform, {11, 14}, tempfiletable, (device-sycl, skl) +// CHECK_PHASES: 16: clang-offload-wrapper, {15}, object, (device-sycl, skl) +// CHECK_PHASES: 17: offload, "device-sycl (spir64_gen-unknown-unknown:skl)" {16}, object +// CHECK_PHASES: 18: linker, {9, 17}, image, (host-sycl) /// Check that ocloc and macro settings only occur for the expected toolchains /// when mixing spir64_gen and intel_gpu @@ -165,10 +165,10 @@ // RUN: -target x86_64-unknown-linux-gnu -### %s 2>&1 | \ // RUN: FileCheck %s --check-prefix=CHECK_TOOLS_MIX // CHECK_TOOLS_MIX: clang{{.*}} "-triple" "spir64_gen-unknown-unknown" +// CHECK_TOOLS_MIX-NOT: "-D__SYCL_TARGET_INTEL_GPU{{.*}}" +// CHECK_TOOLS_MIX: clang{{.*}} "-triple" "spir64_gen-unknown-unknown" // CHECK_TOOLS_MIX: "-D__SYCL_TARGET_INTEL_GPU_DG1__" // CHECK_TOOLS_MIX: ocloc{{.*}} "-device" "dg1" -// CHECK_TOOLS_MIX: clang{{.*}} "-triple" "spir64_gen-unknown-unknown" -// CHECK_TOOLS_MIX-NOT: "-D__SYCL_TARGET_INTEL_GPU{{.*}}" // CHECK_TOOLS_MIX: ocloc{{.*}} "-device" "skl" /// Test phases when using both spir64_gen and intel_gpu* @@ -186,17 +186,17 @@ // CHECK_PHASES_MIX: 7: compiler, {6}, ir, (host-sycl) // CHECK_PHASES_MIX: 8: backend, {7}, assembler, (host-sycl) // CHECK_PHASES_MIX: 9: assembler, {8}, object, (host-sycl) -// CHECK_PHASES_MIX: 10: linker, {9}, image, (host-sycl) -// CHECK_PHASES_MIX: 11: input, "[[INPUT]]", c++, (device-sycl, skl) -// CHECK_PHASES_MIX: 12: preprocessor, {11}, c++-cpp-output, (device-sycl, skl) -// CHECK_PHASES_MIX: 13: compiler, {12}, ir, (device-sycl, skl) -// CHECK_PHASES_MIX: 14: linker, {13}, ir, (device-sycl, skl) -// CHECK_PHASES_MIX: 15: sycl-post-link, {14}, tempfiletable, (device-sycl, skl) -// CHECK_PHASES_MIX: 16: file-table-tform, {15}, tempfilelist, (device-sycl, skl) -// CHECK_PHASES_MIX: 17: llvm-spirv, {16}, tempfilelist, (device-sycl, skl) -// CHECK_PHASES_MIX: 18: backend-compiler, {17}, image, (device-sycl, skl) -// CHECK_PHASES_MIX: 19: file-table-tform, {15, 18}, tempfiletable, (device-sycl, skl) -// CHECK_PHASES_MIX: 20: clang-offload-wrapper, {19}, object, (device-sycl, skl) +// CHECK_PHASES_MIX: 10: input, "[[INPUT]]", c++, (device-sycl, skl) +// CHECK_PHASES_MIX: 11: preprocessor, {10}, c++-cpp-output, (device-sycl, skl) +// CHECK_PHASES_MIX: 12: compiler, {11}, ir, (device-sycl, skl) +// CHECK_PHASES_MIX: 13: linker, {12}, ir, (device-sycl, skl) +// CHECK_PHASES_MIX: 14: sycl-post-link, {13}, tempfiletable, (device-sycl, skl) +// CHECK_PHASES_MIX: 15: file-table-tform, {14}, tempfilelist, (device-sycl, skl) +// CHECK_PHASES_MIX: 16: llvm-spirv, {15}, tempfilelist, (device-sycl, skl) +// CHECK_PHASES_MIX: 17: backend-compiler, {16}, image, (device-sycl, skl) +// CHECK_PHASES_MIX: 18: file-table-tform, {14, 17}, tempfiletable, (device-sycl, skl) +// CHECK_PHASES_MIX: 19: clang-offload-wrapper, {18}, object, (device-sycl, skl) +// CHECK_PHASES_MIX: 20: offload, "device-sycl (spir64_gen-unknown-unknown:skl)" {19}, object // CHECK_PHASES_MIX: 21: linker, {5}, ir, (device-sycl) // CHECK_PHASES_MIX: 22: sycl-post-link, {21}, tempfiletable, (device-sycl) // CHECK_PHASES_MIX: 23: file-table-tform, {22}, tempfilelist, (device-sycl) @@ -204,7 +204,8 @@ // CHECK_PHASES_MIX: 25: backend-compiler, {24}, image, (device-sycl) // CHECK_PHASES_MIX: 26: file-table-tform, {22, 25}, tempfiletable, (device-sycl) // CHECK_PHASES_MIX: 27: clang-offload-wrapper, {26}, object, (device-sycl) -// CHECK_PHASES_MIX: 28: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (spir64_gen-unknown-unknown:skl)" {20}, "device-sycl (spir64_gen-unknown-unknown)" {27}, image +// CHECK_PHASES_MIX: 28: offload, "device-sycl (spir64_gen-unknown-unknown)" {27}, object +// CHECK_PHASES_MIX: 29: linker, {9, 20, 28}, image, (host-sycl) /// Check that ocloc backend option settings only occur for the expected /// toolchains when mixing spir64_gen and intel_gpu diff --git a/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp b/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp index 056c0db8c1a74..cc5795bad3aca 100644 --- a/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp +++ b/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp @@ -28,10 +28,10 @@ // RUN: FileCheck %s --check-prefixes=DEVICE_NVIDIA,MACRO_NVIDIA -DDEV_STR=sm_89 -DMAC_STR=SM_89 // RUN: %clangxx -fsycl -nocudalib -fsycl-targets=nvidia_gpu_sm_90 -### %s 2>&1 | \ // RUN: FileCheck %s --check-prefixes=DEVICE_NVIDIA,MACRO_NVIDIA -DDEV_STR=sm_90 -DMAC_STR=SM_90 -// MACRO_NVIDIA: clang{{.*}} "-triple" "nvptx64-nvidia-cuda" -// DEVICE_NVIDIA: llvm-foreach{{.*}} "--gpu-name" "[[DEV_STR]]" // MACRO_NVIDIA: clang{{.*}} "-fsycl-is-host" // MACRO_NVIDIA: "-D__SYCL_TARGET_NVIDIA_GPU_[[MAC_STR]]__" +// MACRO_NVIDIA: clang{{.*}} "-triple" "nvptx64-nvidia-cuda" +// DEVICE_NVIDIA: llvm-foreach{{.*}} "--gpu-name" "[[DEV_STR]]" /// test for invalid nvidia arch // RUN: not %clangxx -c -fsycl -fsycl-targets=nvidia_gpu_bad -### %s 2>&1 | \ @@ -73,14 +73,14 @@ // NVIDIA_CHECK_PHASES: 7: compiler, {6}, ir, (host-sycl) // NVIDIA_CHECK_PHASES: 8: backend, {7}, assembler, (host-sycl) // NVIDIA_CHECK_PHASES: 9: assembler, {8}, object, (host-sycl) -// NVIDIA_CHECK_PHASES: 10: linker, {9}, image, (host-sycl) -// NVIDIA_CHECK_PHASES: 11: linker, {5}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 12: sycl-post-link, {11}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 13: file-table-tform, {12}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 14: backend, {13}, assembler, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 15: assembler, {14}, object, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: linker, {14, 15}, cuda-fatbin, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: foreach, {13, 16}, cuda-fatbin, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: file-table-tform, {12, 17}, tempfiletable, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: clang-offload-wrapper, {18}, object, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: offload, "host-sycl (x86_64-unknown-linux-gnu)" {10}, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {19}, image +// NVIDIA_CHECK_PHASES: 10: linker, {5}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 11: sycl-post-link, {10}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 12: file-table-tform, {11}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 13: backend, {12}, assembler, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 14: assembler, {13}, object, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 15: linker, {13, 14}, cuda-fatbin, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 16: foreach, {12, 15}, cuda-fatbin, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 17: file-table-tform, {11, 16}, tempfiletable, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 18: clang-offload-wrapper, {17}, object, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 19: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {18}, object +// NVIDIA_CHECK_PHASES: 20: linker, {9, 19}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-xarch.cpp b/clang/test/Driver/sycl-xarch.cpp index 200a8de643170..35ed7e8b85e31 100644 --- a/clang/test/Driver/sycl-xarch.cpp +++ b/clang/test/Driver/sycl-xarch.cpp @@ -54,7 +54,7 @@ // SYCL_XARCH_HOST_OPTION: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_HOST_OPTION-SAME: -fsanitize=address // SYCL_XARCH_HOST_OPTION-SAME: -fsanitize-address-use-after-scope -// SYCL_XARCH_HOST_OPTION-NEXT: libclang_rt.asan +// SYCL_XARCH_HOST_OPTION: libclang_rt.asan // SYCL_XARCH_HOST_ONLY: clang{{.*}} "-fsycl-is-device" // SYCL_XARCH_HOST_ONLY-NOT: -fsanitize=address // SYCL_XARCH_HOST_ONLY: clang{{.*}} "-fsycl-is-host" @@ -111,7 +111,7 @@ // SYCL_XARCH_COM_NO_DEVICE: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_COM_HOST_OPTIONS1: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_COM_HOST_OPTIONS1-SAME: -fsanitize=memory -// SYCL_XARCH_COM_HOST_OPTIONS1-NEXT: libclang_rt.msan +// SYCL_XARCH_COM_HOST_OPTIONS1: libclang_rt.msan // SYCL_XARCH_COM_HOST_OPTIONS2: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_COM_HOST_OPTIONS2-SAME: USE_XARCH_HOST // SYCL_XARCH_COM_HOST_OPTIONS3: clang{{.*}} "-fsycl-is-host" @@ -144,7 +144,7 @@ // RUN: | FileCheck %s -check-prefix=SYCL_XARCH_NO_DEVICE_MULTIPLE3 // SYCL_XARCH_HOST_MULTIPLE1: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_HOST_MULTIPLE1-SAME: -fsanitize=address -// SYCL_XARCH_HOST_MULTIPLE1-NEXT: libclang_rt.asan +// SYCL_XARCH_HOST_MULTIPLE1: libclang_rt.asan // SYCL_XARCH_HOST_MULTIPLE2: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_HOST_MULTIPLE2-SAME: "-mllvm" "-enable-merge-functions" // SYCL_XARCH_HOST_MULTIPLE3: clang{{.*}} "-fsycl-is-host" @@ -153,10 +153,13 @@ // SYCL_XARCH_HOST_MULTIPLE4-SAME: "FOO1" // SYCL_XARCH_NO_DEVICE_MULTIPLE1: clang{{.*}} "-fsycl-is-device" // SYCL_XARCH_NO_DEVICE_MULTIPLE1-NOT: -fsanitize=address +// SYCL_XARCH_NO_DEVICE_MULTIPLE1: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_NO_DEVICE_MULTIPLE1: llc{{.*}} "-filetype=obj" // SYCL_XARCH_NO_DEVICE_MULTIPLE2: clang{{.*}} "-fsycl-is-device" // SYCL_XARCH_NO_DEVICE_MULTIPLE2-NOT: "-mllvm" "-enable-merge-functions" +// SYCL_XARCH_NO_DEVICE_MULTIPLE2: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_NO_DEVICE_MULTIPLE2: llc{{.*}} "-filetype=obj" // SYCL_XARCH_NO_DEVICE_MULTIPLE3: clang{{.*}} "-fsycl-is-device" // SYCL_XARCH_NO_DEVICE_MULTIPLE3-NOT: "FOO" +// SYCL_XARCH_NO_DEVICE_MULTIPLE3: clang{{.*}} "-fsycl-is-host" // SYCL_XARCH_NO_DEVICE_MULTIPLE3: llc{{.*}} "-filetype=obj"