diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 8768d20519491..f2a14ed1252d5 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -12100,15 +12100,12 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, }; // --sycl-post-link-options="options" provides a string of options to be // passed along to the sycl-post-link tool during device link. + // -Xdevice-post-link is processed separately later. SmallString<128> PostLinkOptString; ArgStringList PostLinkArgs; getNonTripleBasedSYCLPostLinkOpts(getToolChain(), JA, Args, PostLinkArgs); for (const auto &A : PostLinkArgs) appendOption(PostLinkOptString, A); - if (Args.hasArg(options::OPT_Xdevice_post_link)) { - for (const auto &A : Args.getAllArgValues(options::OPT_Xdevice_post_link)) - appendOption(PostLinkOptString, A); - } if (!PostLinkOptString.empty()) CmdArgs.push_back( Args.MakeArgString("--sycl-post-link-options=" + PostLinkOptString)); @@ -12132,11 +12129,8 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, // --llvm-spirv-options="options" provides a string of options to be passed // along to the llvm-spirv (translation) step during device link. + // -Xspirv-translator is processed separately later. SmallString<128> OptString; - if (Args.hasArg(options::OPT_Xspirv_translator)) { - for (const auto &A : Args.getAllArgValues(options::OPT_Xspirv_translator)) - appendOption(OptString, A); - } ArgStringList TranslatorArgs; getNonTripleBasedSPIRVTransOpts(C, Args, TranslatorArgs); for (const auto &A : TranslatorArgs) @@ -12193,10 +12187,14 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back( Args.MakeArgString("-sycl-allow-device-image-dependencies")); - // Pass backend compiler and linker options specified at link time to - // clang-linker-wrapper. Link-time options passed via -Xsycl-target-backend - // are forwarded using --device-compiler, while options passed via - // -Xsycl-target-linker are forwarded using --device-linker. + // Pass backend compiler, linker, sycl-post-link, + // llvm-spirv, and spirv-to-ir-wrapper options specified at link + // time to clang-linker-wrapper, using the following mapping: + // -Xsycl-target-backend -> --device-compiler + // -Xsycl-target-linker -> --device-linker + // -Xdevice-post-link -> --sycl-post-link-options + // -Xspirv-translator -> --llvm-spirv-options + // -Xspirv-to-ir-wrapper -> --spirv-to-ir-wrapper-options. const toolchains::SYCLToolChain &SYCLTC = static_cast(getToolChain()); for (auto &ToolChainMember : @@ -12218,6 +12216,45 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Args.MakeArgString( "--device-linker=" + Action::GetOffloadKindName(Action::OFK_SYCL) + ":" + TC->getTripleString() + "=" + A)); + + BuildArgs.clear(); + SmallString<128> PerTargetPostLinkOptString; + SYCLTC.TranslateTargetOpt( + TC->getTriple(), Args, BuildArgs, options::OPT_Xdevice_post_link, + options::OPT_Xdevice_post_link_EQ, /*Device=*/StringRef()); + for (const auto &A : BuildArgs) + appendOption(PerTargetPostLinkOptString, A); + if (!PerTargetPostLinkOptString.empty()) + CmdArgs.push_back(Args.MakeArgString( + "--sycl-post-link-options=" + + Action::GetOffloadKindName(Action::OFK_SYCL) + ":" + + TC->getTripleString() + "=" + PerTargetPostLinkOptString)); + + BuildArgs.clear(); + SmallString<128> TransOptString; + SYCLTC.TranslateTargetOpt( + TC->getTriple(), Args, BuildArgs, options::OPT_Xspirv_translator, + options::OPT_Xspirv_translator_EQ, /*Device=*/StringRef()); + for (const auto &A : BuildArgs) + appendOption(TransOptString, A); + if (!TransOptString.empty()) + CmdArgs.push_back(Args.MakeArgString( + "--llvm-spirv-options=" + + Action::GetOffloadKindName(Action::OFK_SYCL) + ":" + + TC->getTripleString() + "=" + TransOptString)); + + BuildArgs.clear(); + SmallString<128> SpirvToIrOptString; + SYCLTC.TranslateTargetOpt( + TC->getTriple(), Args, BuildArgs, options::OPT_Xspirv_to_ir_wrapper, + options::OPT_Xspirv_to_ir_wrapper_EQ, /*Device=*/StringRef()); + for (const auto &A : BuildArgs) + appendOption(SpirvToIrOptString, A); + if (!SpirvToIrOptString.empty()) + CmdArgs.push_back(Args.MakeArgString( + "--spirv-to-ir-wrapper-options=" + + Action::GetOffloadKindName(Action::OFK_SYCL) + ":" + + TC->getTripleString() + "=" + SpirvToIrOptString)); } // Add option to enable creating of the .syclbin file. diff --git a/clang/test/Driver/sycl-device-post-link-opt.cpp b/clang/test/Driver/sycl-device-post-link-opt.cpp index e4a1187ff6333..3d9dab412a40e 100644 --- a/clang/test/Driver/sycl-device-post-link-opt.cpp +++ b/clang/test/Driver/sycl-device-post-link-opt.cpp @@ -8,11 +8,11 @@ // RUN: %clangxx -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL -Xdevice-post-link=spir64_gen "foo" -### %s 2>&1 | \ // RUN: FileCheck %s -check-prefix CHECK-SINGLE-TARGET-UNUSED --implicit-check-not 'sycl-post-link{{.*}} "foo"' -// RUNx: %clangxx -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL -fsycl-targets=spir64,spir64_gen -Xdevice-post-link=spir64_gen "foo" -Xdevice-post-link=spir64 "bar" -### %s 2>&1 | \ -// RUNx: FileCheck %s -check-prefix CHECK-MULTIPLE-TARGET --implicit-check-not 'sycl-post-link{{.*}} "foo" "bar"' +// RUN: %clangxx -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL -fsycl-targets=spir64,spir64_gen -Xdevice-post-link=spir64_gen "foo" -Xdevice-post-link=spir64 "bar" -### %s 2>&1 | \ +// RUN: FileCheck %s -check-prefix CHECK-MULTIPLE-TARGET --implicit-check-not 'sycl-post-link{{.*}} "foo" "bar"' // CHECK-SINGLE-TARGET: clang-linker-wrapper{{.*}} {{.*}}--sycl-post-link-options={{.*}}foo{{.*}} // CHECK-SINGLE-TARGET-UNUSED: argument unused during compilation: '-Xdevice-post-link=spir64_gen foo' -// CHECK-MULTIPLE-TARGET: clang-linker-wrapper{{.*}} {{.*}}--sycl-post-link-options={{.*}}foo{{.*}}bar{{.*}} +// CHECK-MULTIPLE-TARGET: clang-linker-wrapper{{.*}} {{.*}}"--sycl-post-link-options=sycl:spir64-unknown-unknown=bar"{{.*}}"--sycl-post-link-options=sycl:spir64_gen-unknown-unknown=foo" diff --git a/clang/test/Driver/sycl-offload-new-driver.cpp b/clang/test/Driver/sycl-offload-new-driver.cpp index b617653bb2742..518f79530a45f 100644 --- a/clang/test/Driver/sycl-offload-new-driver.cpp +++ b/clang/test/Driver/sycl-offload-new-driver.cpp @@ -47,12 +47,12 @@ // RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL \ // RUN: -Xspirv-translator -translator-opt -### %s 2>&1 \ // RUN: | FileCheck -check-prefix WRAPPER_OPTIONS_TRANSLATOR %s -// WRAPPER_OPTIONS_TRANSLATOR: clang-linker-wrapper{{.*}} "--llvm-spirv-options={{.*}}-translator-opt{{.*}}" +// WRAPPER_OPTIONS_TRANSLATOR: clang-linker-wrapper{{.*}} "--llvm-spirv-options=sycl:spir64-unknown-unknown=-translator-opt" // RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL \ // RUN: -Xdevice-post-link -post-link-opt -### %s 2>&1 \ // RUN: | FileCheck -check-prefix WRAPPER_OPTIONS_POSTLINK %s -// WRAPPER_OPTIONS_POSTLINK: clang-linker-wrapper{{.*}} "--sycl-post-link-options=-O2 -device-globals -post-link-opt" +// WRAPPER_OPTIONS_POSTLINK: clang-linker-wrapper{{.*}} "--sycl-post-link-options=-O2 -device-globals"{{.*}} "--sycl-post-link-options=sycl:spir64-unknown-unknown=-post-link-opt" // -fsycl-device-only behavior // RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL \ diff --git a/clang/test/Driver/sycl-spirv-opt.cpp b/clang/test/Driver/sycl-spirv-opt.cpp index bfdf84ff9b3a9..187d142185c70 100644 --- a/clang/test/Driver/sycl-spirv-opt.cpp +++ b/clang/test/Driver/sycl-spirv-opt.cpp @@ -8,5 +8,9 @@ // RUN: %clangxx -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL -Xspirv-translator=spir64_gen "foo" -### %s 2>&1 | \ // RUN: FileCheck %s -check-prefix CHECK-SINGLE-TARGET-UNUSED --implicit-check-not 'llvm-spirv{{.*}} "foo"' -// CHECK-SINGLE-TARGET: clang-linker-wrapper{{.*}} "--llvm-spirv-options=foo{{.*}} +// RUN: %clangxx -fsycl -fsycl-targets=spir64,spir64_gen --offload-new-driver --sysroot=%S/Inputs/SYCL -Xspirv-translator=spir64_gen "foo" -Xspirv-translator=spir64 "bar" -### %s 2>&1 | \ +// RUN: FileCheck %s -check-prefix CHECK-MULTIPLE-TARGET + +// CHECK-SINGLE-TARGET: clang-linker-wrapper{{.*}} "--llvm-spirv-options=sycl:spir64-unknown-unknown=foo{{.*}} // CHECK-SINGLE-TARGET-UNUSED: argument unused during compilation: '-Xspirv-translator=spir64_gen foo' +// CHECK-MULTIPLE-TARGET: clang-linker-wrapper{{.*}} "--llvm-spirv-options=sycl:spir64-unknown-unknown=bar"{{.*}}"--llvm-spirv-options=sycl:spir64_gen-unknown-unknown=foo" diff --git a/clang/test/Driver/sycl-spirv-to-ir-opt.cpp b/clang/test/Driver/sycl-spirv-to-ir-opt.cpp new file mode 100644 index 0000000000000..e78e1188be6f3 --- /dev/null +++ b/clang/test/Driver/sycl-spirv-to-ir-opt.cpp @@ -0,0 +1,16 @@ +/// +/// Tests for -Xspirv-to-ir-wrapper +/// + +// RUN: %clangxx -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL -Xspirv-to-ir-wrapper "foo" -### %s 2>&1 | \ +// RUN: FileCheck %s -check-prefix CHECK-SINGLE-TARGET + +// RUN: %clangxx -fsycl --offload-new-driver --sysroot=%S/Inputs/SYCL -Xspirv-to-ir-wrapper=spir64_gen "foo" -### %s 2>&1 | \ +// RUN: FileCheck %s -check-prefix CHECK-SINGLE-TARGET-UNUSED --implicit-check-not 'spirv-to-ir-wrapper-options{{.*}}=foo' + +// RUN: %clangxx -fsycl -fsycl-targets=spir64,spir64_gen --offload-new-driver --sysroot=%S/Inputs/SYCL -Xspirv-to-ir-wrapper=spir64_gen "foo" -Xspirv-to-ir-wrapper=spir64 "bar" -### %s 2>&1 | \ +// RUN: FileCheck %s -check-prefix CHECK-MULTIPLE-TARGET + +// CHECK-SINGLE-TARGET: clang-linker-wrapper{{.*}} "--spirv-to-ir-wrapper-options=sycl:spir64-unknown-unknown=foo{{.*}} +// CHECK-SINGLE-TARGET-UNUSED: argument unused during compilation: '-Xspirv-to-ir-wrapper=spir64_gen foo' +// CHECK-MULTIPLE-TARGET: clang-linker-wrapper{{.*}} "--spirv-to-ir-wrapper-options=sycl:spir64-unknown-unknown=bar"{{.*}}"--spirv-to-ir-wrapper-options=sycl:spir64_gen-unknown-unknown=foo" diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp index 1d6bc45f6df4d..8defd8151a9dd 100644 --- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp +++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp @@ -622,6 +622,10 @@ static Expected convertSPIRVToIR(StringRef Filename, CmdArgs.push_back("--llvm-spirv-opts"); CmdArgs.push_back("--spirv-preserve-auxdata --spirv-target-env=SPV-IR " "--spirv-builtin-format=global"); + for (const Arg *A : Args.filtered(OPT_spirv_to_ir_wrapper_arg_EQ)) { + StringRef(A->getValue()) + .split(CmdArgs, " ", /* MaxSplit = */ -1, /* KeepEmpty = */ false); + } if (Error Err = executeCommands(*SPIRVToIRWrapperPath, CmdArgs)) return std::move(Err); return *TempFileOrErr; @@ -802,11 +806,10 @@ runSYCLPostLinkTool(ArrayRef InputFiles, const ArgList &Args, } } getTripleBasedSYCLPostLinkOpts(Args, CmdArgs, Triple); - StringRef SYCLPostLinkOptions; - if (Arg *A = Args.getLastArg(OPT_sycl_post_link_options_EQ)) - SYCLPostLinkOptions = A->getValue(); - SYCLPostLinkOptions.split(CmdArgs, " ", /* MaxSplit = */ -1, - /* KeepEmpty = */ false); + for (const Arg *A : Args.filtered(OPT_sycl_post_link_arg_EQ)) { + StringRef(A->getValue()) + .split(CmdArgs, " ", /* MaxSplit = */ -1, /* KeepEmpty = */ false); + } CmdArgs.push_back("-o"); CmdArgs.push_back(Args.MakeArgString(OutputPathWithArch)); for (auto &File : InputFiles) @@ -972,11 +975,10 @@ static Expected runLLVMToSPIRVTranslation(StringRef File, CmdArgs.push_back(*LLVMToSPIRVPath); const llvm::Triple Triple(Args.getLastArgValue(OPT_triple_EQ)); getTripleBasedSPIRVTransOpts(Args, CmdArgs, Triple); - StringRef LLVMToSPIRVOptions; - if (Arg *A = Args.getLastArg(OPT_llvm_spirv_options_EQ)) - LLVMToSPIRVOptions = A->getValue(); - LLVMToSPIRVOptions.split(CmdArgs, " ", /* MaxSplit = */ -1, - /* KeepEmpty = */ false); + for (const Arg *A : Args.filtered(OPT_llvm_spirv_arg_EQ)) { + StringRef(A->getValue()) + .split(CmdArgs, " ", /* MaxSplit = */ -1, /* KeepEmpty = */ false); + } CmdArgs.push_back("-o"); // Create a new file to write the translated file to. @@ -2400,10 +2402,9 @@ DerivedArgList getLinkerArgs(ArrayRef Input, if (llvm::all_of(Input, ContainsBitcode)) DAL.AddFlagArg(nullptr, Tbl.getOption(OPT_whole_program)); - // This function filters the SYCL device compiler and linker options by target - // triple and offload kind. - // The device_linker_args and device_compiler_args options accept values - // in the form [:][=]. + // This function filters the SYCL device compiler, linker, sycl-post-link, + // llvm-spirv and spirv-to-ir-wrapper options by target triple and offload + // kind. The options accept values in the form [:][=]. // An example of passing such an option to clang-linker-wrapper is: // --device-compiler=sycl:spir64_gen-unknown-unknown=opt_val. const StringRef TripleStr = DAL.getLastArgValue(OPT_triple_EQ); @@ -2437,6 +2438,10 @@ DerivedArgList getLinkerArgs(ArrayRef Input, ProcessDeviceArgs(OPT_device_linker_args_EQ, OPT_linker_arg_EQ); ProcessDeviceArgs(OPT_device_compiler_args_EQ, OPT_compiler_arg_EQ); + ProcessDeviceArgs(OPT_sycl_post_link_options_EQ, OPT_sycl_post_link_arg_EQ); + ProcessDeviceArgs(OPT_llvm_spirv_options_EQ, OPT_llvm_spirv_arg_EQ); + ProcessDeviceArgs(OPT_spirv_to_ir_wrapper_options_EQ, + OPT_spirv_to_ir_wrapper_arg_EQ); return DAL; } diff --git a/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td b/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td index 0e23abf089dbf..419a3086a39f1 100644 --- a/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td +++ b/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td @@ -166,10 +166,12 @@ def sycl_device_library_location_EQ : Joined<["--", "-"], "sycl-device-library-location=">, Flags<[WrapperOnlyOption]>, HelpText<"Location of SYCL device library files">; -// Special option to pass in sycl-post-link options def sycl_post_link_options_EQ : Joined<["--", "-"], "sycl-post-link-options=">, - Flags<[WrapperOnlyOption]>, + Flags<[WrapperOnlyOption]>, MetaVarName<"[:][=]">, HelpText<"Options that will control sycl-post-link step">; +def sycl_post_link_arg_EQ : Joined<["--", "-"], "sycl-post-link-arg=">, + Flags<[DeviceOnlyOption, HelpHidden]>, + HelpText<"An extra argument to be passed to sycl-post-link">; def sycl_module_split_mode_EQ : Joined<["--", "-"], "sycl-module-split-mode=">, @@ -185,10 +187,19 @@ def no_use_sycl_post_link_tool : Flag<["--", "-"], "no-use-sycl-post-link-tool"> Flags<[WrapperOnlyOption]>, HelpText<"Use a SYCL library instead of sycl-post-link tool. (experimental)">; -// Special option to pass in llvm-spirv options def llvm_spirv_options_EQ : Joined<["--", "-"], "llvm-spirv-options=">, - Flags<[WrapperOnlyOption]>, + Flags<[WrapperOnlyOption]>, MetaVarName<"[:][=]">, HelpText<"Options that will control llvm-spirv step">; +def llvm_spirv_arg_EQ : Joined<["--", "-"], "llvm-spirv-arg=">, + Flags<[DeviceOnlyOption, HelpHidden]>, + HelpText<"An extra argument to be passed to llvm-spirv">; + +def spirv_to_ir_wrapper_options_EQ : Joined<["--", "-"], "spirv-to-ir-wrapper-options=">, + Flags<[WrapperOnlyOption]>, MetaVarName<"[:][=]">, + HelpText<"Options that will control spirv-to-ir-wrapper step">; +def spirv_to_ir_wrapper_arg_EQ : Joined<["--", "-"], "spirv-to-ir-wrapper-arg=">, + Flags<[DeviceOnlyOption, HelpHidden]>, + HelpText<"An extra argument to be passed to spirv-to-ir-wrapper">; def sycl_is_windows_msvc_env : Flag<["--", "-"], "sycl-is-windows-msvc-env">, Flags<[WrapperOnlyOption, HelpHidden]>; diff --git a/sycl/test-e2e/Experimental/fp8/e4m3_cri_conversion.cpp b/sycl/test-e2e/Experimental/fp8/e4m3_cri_conversion.cpp index 88c74a4841b1e..8ce29b3a28e52 100644 --- a/sycl/test-e2e/Experimental/fp8/e4m3_cri_conversion.cpp +++ b/sycl/test-e2e/Experimental/fp8/e4m3_cri_conversion.cpp @@ -6,9 +6,6 @@ // UNSUPPORTED-INTENDED: only supported by backends with CRI driver, and the // SPIR-V backend does not support the required SPIR-V extensions -// XFAIL: new-offload-model -// XFAIL-TRACKER: https://github.com/intel/llvm/issues/22372 - #include #include diff --git a/sycl/test-e2e/Experimental/fp8/e4m3_x2_cri_conversion.cpp b/sycl/test-e2e/Experimental/fp8/e4m3_x2_cri_conversion.cpp index a4c1a6ccb9205..74c69f77682db 100644 --- a/sycl/test-e2e/Experimental/fp8/e4m3_x2_cri_conversion.cpp +++ b/sycl/test-e2e/Experimental/fp8/e4m3_x2_cri_conversion.cpp @@ -7,9 +7,6 @@ // UNSUPPORTED-INTENDED: only supported by backends with CRI driver, and the // SPIR-V backend does not support the required SPIR-V extensions -// XFAIL: new-offload-model -// XFAIL-TRACKER: https://github.com/intel/llvm/issues/22372 - #include #include diff --git a/sycl/test-e2e/Experimental/fp8/e5m2_cri_conversion.cpp b/sycl/test-e2e/Experimental/fp8/e5m2_cri_conversion.cpp index 8eec0f41dc5e3..ee5c091e8b44d 100644 --- a/sycl/test-e2e/Experimental/fp8/e5m2_cri_conversion.cpp +++ b/sycl/test-e2e/Experimental/fp8/e5m2_cri_conversion.cpp @@ -6,9 +6,6 @@ // UNSUPPORTED-INTENDED: only supported by backends with CRI driver, and the // SPIR-V backend does not support the required SPIR-V extensions -// XFAIL: new-offload-model -// XFAIL-TRACKER: https://github.com/intel/llvm/issues/22372 - #include #include diff --git a/sycl/test-e2e/Experimental/fp8/e5m2_x2_cri_conversion.cpp b/sycl/test-e2e/Experimental/fp8/e5m2_x2_cri_conversion.cpp index edba7e2c6bfc7..5e0aee81d177e 100644 --- a/sycl/test-e2e/Experimental/fp8/e5m2_x2_cri_conversion.cpp +++ b/sycl/test-e2e/Experimental/fp8/e5m2_x2_cri_conversion.cpp @@ -6,9 +6,6 @@ // UNSUPPORTED-INTENDED: only supported by backends with CRI driver, and the // SPIR-V backend does not support the required SPIR-V extensions -// XFAIL: new-offload-model -// XFAIL-TRACKER: https://github.com/intel/llvm/issues/22372 - #include #include diff --git a/sycl/test-e2e/Experimental/fp8/e8m0_cri_conversion.cpp b/sycl/test-e2e/Experimental/fp8/e8m0_cri_conversion.cpp index aa728a23efe1e..24b31d4ca877e 100644 --- a/sycl/test-e2e/Experimental/fp8/e8m0_cri_conversion.cpp +++ b/sycl/test-e2e/Experimental/fp8/e8m0_cri_conversion.cpp @@ -7,9 +7,6 @@ // UNSUPPORTED-INTENDED: only supported by backends with CRI driver, and the // SPIR-V backend does not support the required SPIR-V extensions -// XFAIL: new-offload-model -// XFAIL-TRACKER: https://github.com/intel/llvm/issues/22372 - #include #include diff --git a/sycl/test-e2e/Experimental/fp8/e8m0_x2_cri_conversion.cpp b/sycl/test-e2e/Experimental/fp8/e8m0_x2_cri_conversion.cpp index 2f2f7bfac4bb3..1fa4e6e85c2f6 100644 --- a/sycl/test-e2e/Experimental/fp8/e8m0_x2_cri_conversion.cpp +++ b/sycl/test-e2e/Experimental/fp8/e8m0_x2_cri_conversion.cpp @@ -7,9 +7,6 @@ // UNSUPPORTED-INTENDED: only supported by backends with CRI driver, and the // SPIR-V backend does not support the required SPIR-V extensions -// XFAIL: new-offload-model -// XFAIL-TRACKER: https://github.com/intel/llvm/issues/22372 - #include #include #include