Skip to content

Commit 64efa21

Browse files
committed
resolve merge conflict
2 parents 06d6a7f + 3276ddd commit 64efa21

File tree

154 files changed

+4547
-929
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+4547
-929
lines changed

.github/CODEOWNERS

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,18 @@ devops/dependencies-igc-dev.json @intel/sycl-matrix-reviewers @intel/dpcpp-esimd
139139
# Benchmarking scripts
140140
devops/scripts/benchmarks/ @intel/llvm-reviewers-benchmarking
141141

142-
# Kernel fusion JIT compiler
143-
sycl-jit/ @intel/dpcpp-kernel-fusion-reviewers
144-
sycl/doc/design/KernelFusionJIT.md @intel/dpcpp-kernel-fusion-reviewers
145-
sycl/doc/extensions/experimental/sycl_ext_codeplay_kernel_fusion.asciidoc @intel/dpcpp-kernel-fusion-reviewers
146-
sycl/include/sycl/ext/codeplay/experimental/fusion_properties.hpp @intel/dpcpp-kernel-fusion-reviewers
147-
sycl/include/sycl/ext/codeplay/experimental/fusion_wrapper.hpp @intel/dpcpp-kernel-fusion-reviewers
148-
sycl/source/detail/fusion/ @intel/dpcpp-kernel-fusion-reviewers
149-
sycl/source/detail/jit_compiler.hpp @intel/dpcpp-kernel-fusion-reviewers
150-
sycl/source/detail/jit_compiler.cpp @intel/dpcpp-kernel-fusion-reviewers
151-
sycl/source/detail/jit_device_binaries.hpp @intel/dpcpp-kernel-fusion-reviewers
152-
sycl/source/detail/jit_device_binaries.cpp @intel/dpcpp-kernel-fusion-reviewers
153-
sycl/test-e2e/KernelFusion @intel/dpcpp-kernel-fusion-reviewers
142+
# JIT compiler
143+
sycl-jit/ @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
144+
sycl/doc/design/KernelFusionJIT.md @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
145+
sycl/doc/extensions/experimental/sycl_ext_codeplay_kernel_fusion.asciidoc @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
146+
sycl/include/sycl/ext/codeplay/experimental/fusion_properties.hpp @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
147+
sycl/include/sycl/ext/codeplay/experimental/fusion_wrapper.hpp @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
148+
sycl/source/detail/fusion/ @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
149+
sycl/source/detail/jit_compiler.hpp @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
150+
sycl/source/detail/jit_compiler.cpp @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
151+
sycl/source/detail/jit_device_binaries.hpp @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
152+
sycl/source/detail/jit_device_binaries.cpp @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
153+
sycl/test-e2e/KernelFusion @intel/llvm-reviewers-runtime @cperkinsintel @aelovikov-intel
154154

155155
# Matrix
156156
sycl/include/sycl/ext/oneapi/matrix/ @intel/sycl-matrix-reviewers

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,8 +1093,9 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
10931093
ThinOrFullLTOPhase) {
10941094
MPM.addPass(createModuleToFunctionPassAdaptor(
10951095
InferAddressSpacesPass(clang::targets::SPIR_GENERIC_AS)));
1096-
MPM.addPass(
1097-
createModuleToFunctionPassAdaptor(SYCLOptimizeBarriersPass()));
1096+
if (Level != OptimizationLevel::O0)
1097+
MPM.addPass(createModuleToFunctionPassAdaptor(
1098+
SYCLOptimizeBarriersPass()));
10981099
});
10991100
}
11001101

clang/lib/Sema/SemaSYCL.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6822,13 +6822,13 @@ class FreeFunctionPrinter {
68226822
continue;
68236823
}
68246824

6825-
TemplateName TN = TST->getTemplateName();
6825+
TemplateName CTN = CTST->getTemplateName();
6826+
CTN.getAsTemplateDecl()->printQualifiedName(ParmListOstream);
6827+
ParmListOstream << "<";
6828+
68266829
auto SpecArgs = TST->template_arguments();
68276830
auto DeclArgs = CTST->template_arguments();
68286831

6829-
TN.getAsTemplateDecl()->printQualifiedName(ParmListOstream);
6830-
ParmListOstream << "<";
6831-
68326832
for (size_t I = 0, E = std::max(DeclArgs.size(), SpecArgs.size()),
68336833
SE = SpecArgs.size();
68346834
I < E; ++I) {
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// RUN: %clang_cc1 -fsycl-is-device -internal-isystem %S/Inputs -triple spir64-unknown-unknown -sycl-std=2020 -fsycl-int-header=%t.h %s
2+
// RUN: FileCheck -input-file=%t.h %s
3+
//
4+
// The purpose of this test is to ensure that forward declarations of free
5+
// function kernels are emitted properly.
6+
// However, this test checks a specific scenario:
7+
// - free function arguments are type aliases (through using or typedef)
8+
9+
namespace ns {
10+
11+
using IntUsing = int;
12+
typedef int IntTypedef;
13+
14+
template <typename T>
15+
struct Foo {};
16+
17+
using FooIntUsing = Foo<int>;
18+
typedef Foo<int> FooIntTypedef;
19+
20+
template <typename T1, typename T2>
21+
struct Bar {};
22+
23+
template<typename T1>
24+
using BarUsing = Bar<T1, float>;
25+
26+
class Baz {
27+
public:
28+
using type = BarUsing<double>;
29+
};
30+
31+
} // namespace ns
32+
33+
[[__sycl_detail__::add_ir_attributes_function("sycl-nd-range-kernel", 2)]]
34+
void int_using(ns::IntUsing Arg) {}
35+
36+
// CHECK: void int_using(int Arg);
37+
38+
[[__sycl_detail__::add_ir_attributes_function("sycl-nd-range-kernel", 2)]]
39+
void int_typedef(ns::IntTypedef Arg) {}
40+
41+
// CHECK: void int_typedef(int Arg);
42+
43+
[[__sycl_detail__::add_ir_attributes_function("sycl-nd-range-kernel", 2)]]
44+
void foo_using(ns::FooIntUsing Arg) {}
45+
46+
// CHECK: void foo_using(ns::Foo<int> Arg);
47+
48+
[[__sycl_detail__::add_ir_attributes_function("sycl-nd-range-kernel", 2)]]
49+
void foo_typedef(ns::FooIntTypedef Arg) {}
50+
51+
// CHECK: void foo_typedef(ns::Foo<int> Arg);
52+
53+
template<typename T>
54+
[[__sycl_detail__::add_ir_attributes_function("sycl-nd-range-kernel", 2)]]
55+
void bar_using(ns::BarUsing<T> Arg) {}
56+
template void bar_using(ns::BarUsing<int>);
57+
58+
// CHECK: template <typename T> void bar_using(ns::Bar<T, float>);
59+
60+
[[__sycl_detail__::add_ir_attributes_function("sycl-nd-range-kernel", 2)]]
61+
void baz_type(ns::Baz::type Arg) {}
62+
63+
// CHECK: void baz_type(ns::Bar<double, float> Arg);

clang/test/CodeGenSYCL/kernel-early-optimization-pipeline.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// CHECK: InferFunctionAttrsPass
1313
// CHECK: AlwaysInlinerPass
1414
// CHECK: ModuleInlinerWrapperPass
15+
// CHECK: SYCLOptimizeBarriersPass
1516
// CHECK: ConstantMergePass
1617
// CHECK: SYCLMutatePrintfAddrspacePass
1718
// CHECK: SYCLPropagateAspectsUsagePass
@@ -22,4 +23,13 @@
2223
//
2324
// RUN: %clang_cc1 -O2 -fsycl-is-device -triple spir64-unknown-unknown %s -mdebug-pass Structure -emit-llvm -fno-sycl-early-optimizations -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK-NOEARLYOPT
2425
// CHECK-NOEARLYOPT-NOT: ConstantMergePass1
26+
// CHECK-NOEARLYOPT-NOT: SYCLOptimizeBarriersPass
2527
// CHECK-NOEARLYOPT: SYCLMutatePrintfAddrspacePass
28+
29+
// RUN: %clang_cc1 -O0 -fsycl-is-device -triple spir64-unknown-unknown %s -mdebug-pass Structure -emit-llvm -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK-O0
30+
// CHECK-O0-NOT: SYCLOptimizeBarriersPass
31+
32+
// Passes registered via registerOptimizerLastEPCallback don't run on empty
33+
// code
34+
__attribute__((sycl_device)) void bar() {
35+
}

devops/dependencies-igc-dev.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"linux": {
33
"igc_dev": {
4-
"github_tag": "igc-dev-4e160b3",
5-
"version": "4e160b3",
6-
"updated_at": "2025-09-11T02:09:40Z",
7-
"url": "https://api.github.com/repos/intel/intel-graphics-compiler/actions/artifacts/3981554499/zip",
4+
"github_tag": "igc-dev-6d3f69e",
5+
"version": "6d3f69e",
6+
"updated_at": "2025-09-20T11:44:56Z",
7+
"url": "https://api.github.com/repos/intel/intel-graphics-compiler/actions/artifacts/4062749149/zip",
88
"root": "{DEPS_ROOT}/opencl/runtime/linux/oclgpu"
99
}
1010
}

devops/scripts/benchmarks/benches/compute.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -218,19 +218,6 @@ def benchmarks(self) -> list[Benchmark]:
218218

219219
# Add GraphApiSubmitGraph benchmarks
220220
for in_order_queue in [0, 1]:
221-
for profiler_type in profiler_types:
222-
benches.append(
223-
GraphApiSubmitGraph(
224-
self,
225-
runtime,
226-
in_order_queue,
227-
self.submit_graph_num_kernels[-1],
228-
0,
229-
profiler_type,
230-
useEvents=0,
231-
useHostTasks=1,
232-
)
233-
)
234221
for num_kernels in self.submit_graph_num_kernels:
235222
for measure_completion_time in [0, 1]:
236223
for use_events in [0, 1]:
@@ -1009,6 +996,9 @@ def __init__(
1009996
profiler_type,
1010997
)
1011998

999+
def supported_runtimes(self) -> list[RUNTIMES]:
1000+
return super().supported_runtimes() + [RUNTIMES.SYCL_PREVIEW]
1001+
10121002
def explicit_group(self):
10131003
return f"SubmitGraph {self.ioq_str}{self.measure_str}{self.use_events_str}{self.host_tasks_str}, {self.numKernels} kernels"
10141004

libclc/utils/libclc-remangler/LibclcRemangler.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,9 @@ class LibCLCRemangler : public ASTConsumer {
883883
}
884884

885885
bool remangleFunction(Function &Func, llvm::Module *M) {
886+
if (Func.hasLocalLinkage())
887+
return true;
888+
886889
if (!Func.getName().starts_with("_Z"))
887890
return true;
888891

libdevice/include/sanitizer_defs.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ extern SYCL_EXTERNAL __attribute__((convergent)) void
6161
__spirv_ControlBarrier(int32_t Execution, int32_t Memory,
6262
int32_t Semantics) noexcept;
6363

64-
template <typename T>
65-
extern SYCL_EXTERNAL T __spirv_SpecConstant(int ID, T default_value) noexcept;
66-
6764
extern "C" SYCL_EXTERNAL void __devicelib_exit();
6865

6966
#endif // __SPIR__ || __SPIRV__

libdevice/include/sanitizer_utils.hpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
//===----------------------------------------------------------------------===//
88
#pragma once
99

10-
#include "sanitizer_common/sanitizer_libdevice.hpp"
1110
#include "sanitizer_defs.hpp"
11+
#include "spirv_vars.h"
1212

1313
#if defined(__SPIR__) || defined(__SPIRV__)
1414

@@ -49,11 +49,6 @@ inline __SYCL_PRIVATE__ void *ToPrivate(void *ptr) {
4949
return __spirv_GenericCastToPtrExplicit_ToPrivate(ptr, 7);
5050
}
5151

52-
inline DeviceType GetDeviceTy() {
53-
return static_cast<DeviceType>(
54-
__spirv_SpecConstant(SPEC_CONSTANT_DEVICE_TYPE_ID, 0));
55-
}
56-
5752
template <typename T> T Memset(T ptr, int value, size_t size) {
5853
for (size_t i = 0; i < size; i++) {
5954
ptr[i] = value;

0 commit comments

Comments
 (0)