Skip to content

Commit df50bdc

Browse files
authored
Merge branch 'intel:sycl' into pablo/graph_enqueue_functions
2 parents 2e0af79 + 0c7e1cb commit df50bdc

File tree

98 files changed

+1890
-6977
lines changed

Some content is hidden

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

98 files changed

+1890
-6977
lines changed

.github/workflows/sycl-containers.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ jobs:
5151
file: ubuntu2204_intel_drivers
5252
tag: unstable
5353
build_args: "use_latest=true"
54+
- name: Build + Intel Drivers Ubuntu 22.04 Docker image
55+
file: ubuntu2204_intel_drivers
56+
tag: alldeps
57+
build_args: |
58+
base_image=ghcr.io/intel/llvm/ubuntu2204_build
59+
base_tag=latest
60+
use_latest=false
5461
steps:
5562
- name: Checkout
5663
uses: actions/checkout@v4

.github/workflows/sycl-linux-run-tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,8 @@ jobs:
185185
with:
186186
path: khronos_sycl_cts
187187
repository: 'KhronosGroup/SYCL-CTS'
188-
ref: 'SYCL-2020'
189-
default_branch: 'SYCL-2020'
188+
ref: 'main'
189+
default_branch: 'main'
190190
cache_path: "/__w/repo_cache/"
191191
- name: SYCL CTS GIT submodules init
192192
if: inputs.tests_selector == 'cts'

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
/build*
3131
!buildbot
3232

33+
#pulldown temp folder
34+
/spirv-patches-*
35+
3336
#==============================================================================#
3437
# Explicit files to ignore (only matches one).
3538
#==============================================================================#

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5194,7 +5194,10 @@ void Clang::ConstructHostCompilerJob(Compilation &C, const JobAction &JA,
51945194
if (HostCompilerDefArg) {
51955195
ExecPath = HostCompilerDefArg->getValue();
51965196
if (!ExecPath.empty() && ExecPath == llvm::sys::path::stem(ExecPath))
5197-
ExecPath = TC.GetProgramPath(ExecPath.c_str());
5197+
// Use PATH to find executable passed in from -fsycl-host-compiler.
5198+
if (llvm::ErrorOr<std::string> Prog =
5199+
llvm::sys::findProgramByName(ExecPath))
5200+
ExecPath = *Prog;
51985201
}
51995202

52005203
// Add any user-specified arguments.

clang/lib/Driver/ToolChains/SYCL.cpp

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,9 @@ static bool hasPVCDevice(const ArgStringList &CmdArgs, std::string &DevArg) {
10811081
for (int HexVal : PVCDevices[I].HexValues) {
10821082
int Value = 0;
10831083
if (!SingleArg.getAsInteger(0, Value) && Value == HexVal) {
1084-
DevArg = SingleArg.str();
1084+
// TODO: Pass back the hex string to use for -device_options when
1085+
// IGC is updated to allow. Currently -device_options only accepts
1086+
// the device ID (i.e. pvc) or the version (12.60.7).
10851087
return true;
10861088
}
10871089
}
@@ -1502,18 +1504,13 @@ static void parseTargetOpts(StringRef ArgString, const llvm::opt::ArgList &Args,
15021504
void SYCLToolChain::TranslateGPUTargetOpt(const llvm::opt::ArgList &Args,
15031505
llvm::opt::ArgStringList &CmdArgs,
15041506
OptSpecifier Opt_EQ) const {
1505-
for (auto *A : Args) {
1506-
if (A->getOption().matches(Opt_EQ)) {
1507-
if (auto GpuDevice =
1508-
tools::SYCL::gen::isGPUTarget<tools::SYCL::gen::AmdGPU>(
1509-
A->getValue())) {
1510-
StringRef ArgString;
1511-
SmallString<64> OffloadArch("--offload-arch=");
1512-
OffloadArch += GpuDevice->data();
1513-
ArgString = OffloadArch;
1514-
parseTargetOpts(ArgString, Args, CmdArgs);
1515-
A->claim();
1516-
}
1507+
if (const Arg *TargetArg = Args.getLastArg(Opt_EQ)) {
1508+
StringRef Val = TargetArg->getValue();
1509+
if (auto GpuDevice =
1510+
tools::SYCL::gen::isGPUTarget<tools::SYCL::gen::AmdGPU>(Val)) {
1511+
SmallString<64> OffloadArch("--offload-arch=");
1512+
OffloadArch += GpuDevice->data();
1513+
parseTargetOpts(OffloadArch, Args, CmdArgs);
15171514
}
15181515
}
15191516
}

clang/test/Driver/sycl-ftarget-register-alloc-mode-old-model.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
// RUN: %clang -### -fsycl --no-offload-new-driver \
2424
// RUN: -fsycl-targets=spir64_gen -Xs "-device 0x0BD5" %s 2>&1 \
25-
// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=0x0BD5
25+
// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc
2626

2727
// RUN: %clang -### -fsycl --no-offload-new-driver \
2828
// RUN: -fsycl-targets=spir64_gen -Xs "-device 12.60.7" %s 2>&1 \

clang/test/Driver/sycl-ftarget-register-alloc-mode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
// RUN: %clang -### -fsycl --offload-new-driver \
2424
// RUN: -fsycl-targets=spir64_gen -Xs "-device 0x0BD5" %s 2>&1 \
25-
// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=0x0BD5
25+
// RUN: | FileCheck %if system-windows %{ -check-prefix=DEFAULT_AOT %} %else %{ -check-prefix=AUTO_AOT %} %s -DDEVICE=pvc
2626

2727
// RUN: %clang -### -fsycl --offload-new-driver \
2828
// RUN: -fsycl-targets=spir64_gen -Xs "-device 12.60.7" %s 2>&1 \

clang/test/Driver/sycl-host-compiler-old-model.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,13 @@
9090
// CHECK_SAVE_TEMPS-NEXT: g++{{.*}} "[[APPEND_CPP]]" "-c"
9191
// CHECK_SAVE_TEMPS-SAME: "-o" "[[HOST_OBJ:.+\.o]]"
9292
// CHECK_SAVE_TEMPS-NEXT: clang-offload-bundler{{.*}} "-input=[[DEVICE_BC]]" "-input=[[HOST_OBJ]]"
93+
94+
/// Test to verify binary from PATH is used
95+
// RUN: rm -rf %t && mkdir -p %t/test_path
96+
// RUN: touch %t/test_path/clang++ && chmod +x %t/test_path/clang++
97+
// RUN: env "PATH=%t/test_path%{pathsep}%PATH%" \
98+
// RUN: %clangxx -### -fsycl -fsycl-host-compiler=clang++ \
99+
// RUN: -fsycl-host-compiler-options=-DDUMMY_OPT --no-offload-new-driver \
100+
// RUN: %s 2>&1 \
101+
// RUN: | FileCheck -check-prefix=PATH_CHECK %s
102+
// PATH_CHECK: {{(/|\\\\)}}test_path{{(/|\\\\)}}clang++{{.*}} "-DDUMMY_OPT"

clang/test/Driver/sycl-offload.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,9 @@
104104
// CHECK_FSYCL_FP64_CONV_EMU_WIN-NOT: clang{{.*}} "-cc1" "-triple x86_64-unknown-linux-gnu" {{.*}} "-fsycl-fp64-conv-emu"
105105
// CHECK_FSYCL_FP64_CONV_EMU_WIN-DAG: clang{{.*}} "-cc1" "-triple" "spir64_gen{{.*}}" "-fsycl-fp64-conv-emu"
106106
// CHECK_FSYCL_FP64_CONV_EMU_WIN-DAG: clang-offload-packager{{.*}} "--image=file={{.*}}.bc,triple=spir64_gen-unknown-unknown,arch=,kind=sycl,compile-opts={{.*}}-options -ze-fp64-gen-conv-emu{{.*}}"
107+
108+
/// Compilation checks to make sure an early empty -fsycl-targets does not
109+
/// crash.
110+
// RUN: %clangxx -### -fsycl -fsycl-targets= -fsycl-targets=spir64 %s 2>&1 \
111+
// RUN: | FileCheck %s -check-prefix=CHECK_SPIR64
112+
// CHECK_SPIR64: clang{{.*}} "-cc1" "-triple" "spir64-unknown-unknown"{{.*}} "-fsycl-is-device"

clang/test/Driver/sycl-spirv-ext.c

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
// Generate .o file as SYCL device library file.
2+
//
3+
// RUN: touch %t.devicelib.cpp
4+
// RUN: %clang %t.devicelib.cpp -fsycl -fsycl-targets=spir64-unknown-unknown -c --offload-new-driver -o %t_1.devicelib.o
5+
// RUN: %clang %t.devicelib.cpp -fsycl -fsycl-targets=spir64_gen-unknown-unknown -c --offload-new-driver -o %t_2.devicelib.o
6+
// RUN: %clang %t.devicelib.cpp -fsycl -fsycl-targets=spir64_x86_64-unknown-unknown -c --offload-new-driver -o %t_3.devicelib.o
7+
8+
/// Check llvm-spirv extensions that are set
9+
10+
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --offload-new-driver \
11+
// RUN: -fsycl-targets=spir64-unknown-unknown -c %s -o %t_1.o
12+
// RUN: clang-linker-wrapper -sycl-device-libraries=%t_1.devicelib.o \
13+
// RUN: "--host-triple=x86_64-unknown-linux-gnu" "--linker-path=/usr/bin/ld" \
14+
// RUN: "--" "-o" "a.out" %t_1.o --dry-run 2>&1 \
15+
// RUN: | FileCheck -check-prefix=CHECK-DEFAULT %s
16+
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --offload-new-driver \
17+
// RUN: -fsycl-targets=spir64_gen-unknown-unknown -c %s -o %t_2.o
18+
// RUN: clang-linker-wrapper -sycl-device-libraries=%t_2.devicelib.o \
19+
// RUN: "--host-triple=x86_64-unknown-linux-gnu" "--linker-path=/usr/bin/ld" \
20+
// RUN: "--" "-o" "a.out" %t_2.o --dry-run 2>&1 \
21+
// RUN: | FileCheck -check-prefix=CHECK-DEFAULT %s
22+
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --offload-new-driver \
23+
// RUN: -fsycl-targets=spir64_x86_64-unknown-unknown -c %s -o %t_3.o
24+
// RUN: clang-linker-wrapper -sycl-device-libraries=%t_3.devicelib.o \
25+
// RUN: "--host-triple=x86_64-unknown-linux-gnu" "--linker-path=/usr/bin/ld" \
26+
// RUN: "--" "-o" "a.out" %t_3.o --dry-run 2>&1 \
27+
// RUN: | FileCheck -check-prefix=CHECK-CPU %s
28+
29+
// CHECK-DEFAULT: llvm-spirv{{.*}}-spirv-ext=-all
30+
// CHECK-DEFAULT-SAME:,+SPV_EXT_shader_atomic_float_add
31+
// CHECK-DEFAULT-SAME:,+SPV_EXT_shader_atomic_float_min_max
32+
// CHECK-DEFAULT-SAME:,+SPV_KHR_no_integer_wrap_decoration,+SPV_KHR_float_controls
33+
// CHECK-DEFAULT-SAME:,+SPV_KHR_expect_assume,+SPV_KHR_linkonce_odr
34+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_subgroups,+SPV_INTEL_media_block_io
35+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_device_side_avc_motion_estimation
36+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_fpga_loop_controls
37+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_unstructured_loop_controls,+SPV_INTEL_fpga_reg
38+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_blocking_pipes,+SPV_INTEL_function_pointers
39+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_kernel_attributes,+SPV_INTEL_io_pipes
40+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_inline_assembly,+SPV_INTEL_arbitrary_precision_integers
41+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_float_controls2
42+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_vector_compute,+SPV_INTEL_fast_composite
43+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_arbitrary_precision_fixed_point
44+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_arbitrary_precision_floating_point
45+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_variable_length_array,+SPV_INTEL_fp_fast_math_mode
46+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_long_constant_composite
47+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_arithmetic_fence
48+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_cache_controls
49+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_fpga_buffer_location
50+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_fpga_argument_interfaces
51+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_fpga_invocation_pipelining_attributes
52+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_fpga_latency_control
53+
// CHECK-DEFAULT-SAME:,+SPV_KHR_shader_clock
54+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_bindless_images
55+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_task_sequence
56+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_token_type
57+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_bfloat16_conversion
58+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_joint_matrix
59+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_hw_thread_queries
60+
// CHECK-DEFAULT-SAME:,+SPV_KHR_uniform_group_instructions
61+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_masked_gather_scatter
62+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_tensor_float32_conversion
63+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_optnone
64+
// CHECK-DEFAULT-SAME:,+SPV_KHR_non_semantic_info
65+
// CHECK-DEFAULT-SAME:,+SPV_KHR_cooperative_matrix
66+
// CHECK-DEFAULT-SAME:,+SPV_EXT_shader_atomic_float16_add
67+
68+
// CHECK-CPU: llvm-spirv{{.*}}-spirv-ext=-all
69+
// CHECK-CPU-SAME:,+SPV_EXT_shader_atomic_float_add
70+
// CHECK-CPU-SAME:,+SPV_EXT_shader_atomic_float_min_max
71+
// CHECK-CPU-SAME:,+SPV_KHR_no_integer_wrap_decoration,+SPV_KHR_float_controls
72+
// CHECK-CPU-SAME:,+SPV_KHR_expect_assume,+SPV_KHR_linkonce_odr
73+
// CHECK-CPU-SAME:,+SPV_INTEL_subgroups,+SPV_INTEL_media_block_io
74+
// CHECK-CPU-SAME:,+SPV_INTEL_device_side_avc_motion_estimation
75+
// CHECK-CPU-SAME:,+SPV_INTEL_fpga_loop_controls
76+
// CHECK-CPU-SAME:,+SPV_INTEL_unstructured_loop_controls,+SPV_INTEL_fpga_reg
77+
// CHECK-CPU-SAME:,+SPV_INTEL_blocking_pipes,+SPV_INTEL_function_pointers
78+
// CHECK-CPU-SAME:,+SPV_INTEL_kernel_attributes,+SPV_INTEL_io_pipes
79+
// CHECK-CPU-SAME:,+SPV_INTEL_inline_assembly,+SPV_INTEL_arbitrary_precision_integers
80+
// CHECK-CPU-SAME:,+SPV_INTEL_float_controls2
81+
// CHECK-CPU-SAME:,+SPV_INTEL_vector_compute,+SPV_INTEL_fast_composite
82+
// CHECK-CPU-SAME:,+SPV_INTEL_arbitrary_precision_fixed_point
83+
// CHECK-CPU-SAME:,+SPV_INTEL_arbitrary_precision_floating_point
84+
// CHECK-CPU-SAME:,+SPV_INTEL_variable_length_array,+SPV_INTEL_fp_fast_math_mode
85+
// CHECK-CPU-SAME:,+SPV_INTEL_long_constant_composite
86+
// CHECK-CPU-SAME:,+SPV_INTEL_arithmetic_fence
87+
// CHECK-CPU-SAME:,+SPV_INTEL_cache_controls
88+
// CHECK-CPU-SAME:,+SPV_INTEL_fpga_buffer_location
89+
// CHECK-CPU-SAME:,+SPV_INTEL_fpga_argument_interfaces
90+
// CHECK-CPU-SAME:,+SPV_INTEL_fpga_invocation_pipelining_attributes
91+
// CHECK-CPU-SAME:,+SPV_INTEL_fpga_latency_control
92+
// CHECK-CPU-SAME:,+SPV_INTEL_task_sequence
93+
// CHECK-CPU-SAME:,+SPV_INTEL_token_type
94+
// CHECK-CPU-SAME:,+SPV_INTEL_bfloat16_conversion
95+
// CHECK-CPU-SAME:,+SPV_INTEL_joint_matrix
96+
// CHECK-CPU-SAME:,+SPV_INTEL_hw_thread_queries
97+
// CHECK-CPU-SAME:,+SPV_KHR_uniform_group_instructions
98+
// CHECK-CPU-SAME:,+SPV_INTEL_masked_gather_scatter
99+
// CHECK-CPU-SAME:,+SPV_INTEL_tensor_float32_conversion
100+
// CHECK-CPU-SAME:,+SPV_INTEL_optnone
101+
// CHECK-CPU-SAME:,+SPV_KHR_non_semantic_info
102+
// CHECK-CPU-SAME:,+SPV_KHR_cooperative_matrix
103+
// CHECK-CPU-SAME:,+SPV_INTEL_fp_max_error

0 commit comments

Comments
 (0)