Skip to content

Commit d7a720c

Browse files
authored
[SYCL][SPIR-V][New offload model] Update SPIR-V extension list for new offloading model and add new SPIR-V extension test (#15748)
Some minor changes to the list of SPIR-V extensions enabled in the new offloading model and add a missing SPIR-V extension test for new offload model. Thanks --------- Signed-off-by: Arvind Sudarsanam <arvind.sudarsanam@intel.com>
1 parent e911717 commit d7a720c

File tree

2 files changed

+107
-3
lines changed

2 files changed

+107
-3
lines changed

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

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -872,9 +872,9 @@ getTripleBasedSPIRVTransOpts(const ArgList &Args,
872872
",+SPV_INTEL_fpga_argument_interfaces"
873873
",+SPV_INTEL_fpga_invocation_pipelining_attributes"
874874
",+SPV_INTEL_fpga_latency_control"
875-
",+SPV_INTEL_task_sequence"
876875
",+SPV_KHR_shader_clock"
877-
",+SPV_INTEL_bindless_images";
876+
",+SPV_INTEL_bindless_images"
877+
",+SPV_INTEL_task_sequence";
878878
ExtArg = ExtArg + DefaultExtArg + INTELExtArg;
879879
ExtArg += ",+SPV_INTEL_token_type"
880880
",+SPV_INTEL_bfloat16_conversion"
@@ -885,7 +885,8 @@ getTripleBasedSPIRVTransOpts(const ArgList &Args,
885885
",+SPV_INTEL_tensor_float32_conversion"
886886
",+SPV_INTEL_optnone"
887887
",+SPV_KHR_non_semantic_info"
888-
",+SPV_KHR_cooperative_matrix";
888+
",+SPV_KHR_cooperative_matrix"
889+
",+SPV_EXT_shader_atomic_float16_add";
889890
if (IsCPU)
890891
ExtArg += ",+SPV_INTEL_fp_max_error";
891892
TranslatorArgs.push_back(Args.MakeArgString(ExtArg));

0 commit comments

Comments
 (0)