Skip to content

Commit 11a1f44

Browse files
author
iclsrc
committed
Merge from 'sycl' to 'sycl-web' (2 commits)
2 parents a40deb5 + 6c03694 commit 11a1f44

File tree

20 files changed

+1418
-1392
lines changed

20 files changed

+1418
-1392
lines changed

llvm/lib/SYCLLowerIR/LowerESIMD.cpp

Lines changed: 152 additions & 107 deletions
Large diffs are not rendered by default.

llvm/test/SYCLLowerIR/esimd_lower_debug_info.ll

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,20 @@
66

77
@__spirv_BuiltInGlobalInvocationId = external dso_local local_unnamed_addr addrspace(1) constant <3 x i64>, align 32
88

9-
declare spir_func <16 x float> @_Z18__esimd_block_readIfLi16EPU3AS1fEN2cl4sycl5INTEL3gpu11vector_typeIT_XT0_EE4typeET1_j(float addrspace(1)*, i32)
9+
declare spir_func <16 x float> @_Z26__esimd_oword_ld_unalignedIfLi16EjLi0EEN2cl4sycl3ext5intel12experimental5esimd6detail11vector_typeIT_XT0_EE4typeET1_j(i32, i32)
10+
declare spir_func i32 @_Z25__esimd_get_surface_indexIPU3AS1fEjT_(float addrspace(1)*)
1011

11-
define spir_func void @func1(float addrspace(1)* %arg1, i32 %arg2 ){
12+
13+
define spir_func void @func1(float addrspace(1)* %arg1, i32 %arg2){
1214
; CHECK-LABEL: @func1(
13-
; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint float addrspace(1)* [[ARG1:%.*]] to i32, !dbg [[DBG11:![0-9]+]]
14-
; CHECK-NEXT: [[CALL1_I_I_ESIMD:%.*]] = call <16 x float> @llvm.genx.oword.ld.unaligned.v16f32(i32 0, i32 [[TMP1]], i32 [[ARG2:%.*]]), !dbg [[DBG11]]
15-
; CHECK-NEXT: call void @llvm.dbg.value(metadata <16 x float> [[CALL1_I_I_ESIMD]], metadata [[META9:![0-9]+]], metadata !DIExpression()), !dbg [[DBG11]]
16-
; CHECK-NEXT: ret void, !dbg [[DBG12:![0-9]+]]
17-
;
18-
%call1.i.i = tail call spir_func <16 x float> @_Z18__esimd_block_readIfLi16EPU3AS1fEN2cl4sycl5INTEL3gpu11vector_typeIT_XT0_EE4typeET1_j(float addrspace(1)* %arg1, i32 %arg2)
15+
; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint float addrspace(1)* [[ARG1:%.*]] to i32, !dbg [[DBG1:![0-9]+]]
16+
; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[TMP1]], metadata !{{[0-9]+}}, metadata !DIExpression()), !dbg [[DBG1]]
17+
; CHECK-NEXT: [[CALL1_I_I_ESIMD:%.*]] = call <16 x float> @llvm.genx.oword.ld.unaligned.v16f32(i32 0, i32 [[TMP1]], i32 [[ARG2:%.*]]), !dbg [[DBG2:![0-9]+]]
18+
; CHECK-NEXT: call void @llvm.dbg.value(metadata <16 x float> [[CALL1_I_I_ESIMD]], metadata !{{[0-9]+}}, metadata !DIExpression()), !dbg [[DBG2]]
19+
; CHECK-NEXT: ret void, !dbg !{{[0-9]+}}
20+
21+
%sfi = call spir_func i32 @_Z25__esimd_get_surface_indexIPU3AS1fEjT_(float addrspace(1)* %arg1)
22+
%res = call spir_func <16 x float> @_Z26__esimd_oword_ld_unalignedIfLi16EjLi0EEN2cl4sycl3ext5intel12experimental5esimd6detail11vector_typeIT_XT0_EE4typeET1_j(i32 %sfi, i32 %arg2)
1923
ret void
2024
}
2125

llvm/test/SYCLLowerIR/esimd_lower_intrins.ll

Lines changed: 7 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
; consumable by the CM back-end.
33
;
44
; RUN: opt < %s -LowerESIMD -S | FileCheck %s
5+
;
6+
; TODO refactor all the test cases - make them C++ and move to
7+
; sycl\test\esimd\intrins_trans.cpp for much easier maintenance w/o losing
8+
; testing strength. Formally, each LLVM pass should have .ll tests, but this is
9+
; not practical in this case.
10+
;
11+
; All new test cases should be added to intrins_trans.cpp
512

613
target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
714
target triple = "spir64-unknown-unknown"
@@ -16,77 +23,6 @@ target triple = "spir64-unknown-unknown"
1623

1724
; LowerESIMD pass should process every function,
1825
; !sycl_explicit_simd metadata is not necessary.
19-
define dso_local spir_func <32 x i32> @FUNC_1() {
20-
%a_1 = alloca <32 x i64>
21-
%1 = load <32 x i64>, <32 x i64>* %a_1
22-
%a_2 = alloca <32 x i16>
23-
%2 = load <32 x i16>, <32 x i16>* %a_2
24-
%ret_val = call spir_func <32 x i32> @_Z20__esimd_flat_atomic0ILN2cm3gen14CmAtomicOpTypeE2EjLi32ELNS1_9CacheHintE0ELS3_0EENS1_13__vector_typeIT0_XT1_EE4typeENS4_IyXT1_EE4typeENS4_ItXT1_EE4typeE(<32 x i64> %1, <32 x i16> %2)
25-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.svm.atomic.inc.v32i32.v32i1.v32i64(<32 x i1> %{{[0-9a-zA-Z_.]+}}, <32 x i64> %{{[0-9a-zA-Z_.]+}}, <32 x i32> undef)
26-
ret <32 x i32> %ret_val
27-
}
28-
29-
define dso_local spir_func <32 x i32> @FUNC_2() {
30-
%a_1 = alloca <32 x i64>
31-
%1 = load <32 x i64>, <32 x i64>* %a_1
32-
%a_2 = alloca <32 x i32>
33-
%2 = load <32 x i32>, <32 x i32>* %a_2
34-
%a_3 = alloca <32 x i16>
35-
%3 = load <32 x i16>, <32 x i16>* %a_3
36-
%ret_val = call spir_func <32 x i32> @_Z20__esimd_flat_atomic1ILN2cm3gen14CmAtomicOpTypeE0EjLi32ELNS1_9CacheHintE0ELS3_0EENS1_13__vector_typeIT0_XT1_EE4typeENS4_IyXT1_EE4typeES7_NS4_ItXT1_EE4typeE(<32 x i64> %1, <32 x i32> %2, <32 x i16> %3)
37-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.svm.atomic.add.v32i32.v32i1.v32i64(<32 x i1> %{{[0-9a-zA-Z_.]+}}, <32 x i64> %{{[0-9a-zA-Z_.]+}}, <32 x i32> %{{[0-9a-zA-Z_.]+}}, <32 x i32> undef)
38-
ret <32 x i32> %ret_val
39-
}
40-
41-
define dso_local spir_func <32 x i32> @FUNC_3() {
42-
%a_1 = alloca <32 x i64>
43-
%1 = load <32 x i64>, <32 x i64>* %a_1
44-
%a_2 = alloca <32 x i32>
45-
%2 = load <32 x i32>, <32 x i32>* %a_2
46-
%a_3 = alloca <32 x i32>
47-
%3 = load <32 x i32>, <32 x i32>* %a_3
48-
%a_4 = alloca <32 x i16>
49-
%4 = load <32 x i16>, <32 x i16>* %a_4
50-
%ret_val = call spir_func <32 x i32> @_Z20__esimd_flat_atomic2ILN2cm3gen14CmAtomicOpTypeE7EjLi32ELNS1_9CacheHintE0ELS3_0EENS1_13__vector_typeIT0_XT1_EE4typeENS4_IyXT1_EE4typeES7_S7_NS4_ItXT1_EE4typeE(<32 x i64> %1, <32 x i32> %2, <32 x i32> %3, <32 x i16> %4)
51-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.svm.atomic.cmpxchg.v32i32.v32i1.v32i64(<32 x i1> %{{[0-9a-zA-Z_.]+}}, <32 x i64> %{{[0-9a-zA-Z_.]+}}, <32 x i32> %{{[0-9a-zA-Z_.]+}}, <32 x i32> %{{[0-9a-zA-Z_.]+}}, <32 x i32> undef)
52-
ret <32 x i32> %ret_val
53-
}
54-
55-
define dso_local spir_func <32 x i32> @FUNC_4() {
56-
%ret_val = call spir_func <32 x i32> @_Z33__esimd_flat_block_read_unalignedIjLi32ELN2cm3gen9CacheHintE0ELS2_0EENS1_13__vector_typeIT_XT0_EE4typeEy(i64 0)
57-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.svm.block.ld.unaligned.v32i32.i64(i64 0)
58-
ret <32 x i32> %ret_val
59-
}
60-
61-
define dso_local spir_func void @FUNC_5() {
62-
%a_1 = alloca <32 x i32>
63-
%1 = load <32 x i32>, <32 x i32>* %a_1
64-
call spir_func void @_Z24__esimd_flat_block_writeIjLi32ELN2cm3gen9CacheHintE0ELS2_0EEvyNS1_13__vector_typeIT_XT0_EE4typeE(i64 0, <32 x i32> %1)
65-
; CHECK: call void @llvm.genx.svm.block.st.i64.v32i32(i64 0, <32 x i32> %{{[0-9a-zA-Z_.]+}})
66-
ret void
67-
}
68-
69-
define dso_local spir_func <32 x i32> @FUNC_6() {
70-
%a_1 = alloca <32 x i64>
71-
%1 = load <32 x i64>, <32 x i64>* %a_1
72-
%a_2 = alloca <32 x i16>
73-
%2 = load <32 x i16>, <32 x i16>* %a_2
74-
%ret_val = call spir_func <32 x i32> @_Z17__esimd_flat_readIjLi32ELi0ELN2cm3gen9CacheHintE0ELS2_0EENS1_13__vector_typeIT_XmlT0_clL_ZNS1_20ElemsPerAddrDecodingEjET1_EEE4typeENS3_IyXT0_EE4typeEiNS3_ItXT0_EE4typeE(<32 x i64> %1, i32 0, <32 x i16> %2)
75-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.svm.gather.v32i32.v32i1.v32i64(<32 x i1> %{{[0-9a-zA-Z_.]+}}, i32 0, <32 x i64> %{{[0-9a-zA-Z_.]+}}, <32 x i32> undef)
76-
ret <32 x i32> %ret_val
77-
}
78-
79-
define dso_local spir_func void @FUNC_7() {
80-
%a_1 = alloca <32 x i64>
81-
%1 = load <32 x i64>, <32 x i64>* %a_1
82-
%a_2 = alloca <32 x i32>
83-
%2 = load <32 x i32>, <32 x i32>* %a_2
84-
%a_3 = alloca <32 x i16>
85-
%3 = load <32 x i16>, <32 x i16>* %a_3
86-
call spir_func void @_Z18__esimd_flat_writeIjLi32ELi0ELN2cm3gen9CacheHintE0ELS2_0EEvNS1_13__vector_typeIyXT0_EE4typeENS3_IT_XmlT0_clL_ZNS1_20ElemsPerAddrDecodingEjET1_EEE4typeEiNS3_ItXT0_EE4typeE(<32 x i64> %1, <32 x i32> %2, i32 0, <32 x i16> %3)
87-
; CHECK: call void @llvm.genx.svm.scatter.v32i1.v32i64.v32i32(<32 x i1> %{{[0-9a-zA-Z_.]+}}, i32 0, <32 x i64> %{{[0-9a-zA-Z_.]+}}, <32 x i32> %{{[0-9a-zA-Z_.]+}})
88-
ret void
89-
}
9026

9127
define dso_local spir_func <16 x i16> @FUNC_8() {
9228
%a_1 = alloca <16 x i16>
@@ -98,16 +34,6 @@ define dso_local spir_func <16 x i16> @FUNC_8() {
9834
ret <16 x i16> %ret_val
9935
}
10036

101-
define dso_local spir_func <1 x float> @FUNC_9() {
102-
%a_1 = alloca <1 x float>
103-
%1 = load <1 x float>, <1 x float>* %a_1
104-
%a_2 = alloca <1 x float>
105-
%2 = load <1 x float>, <1 x float>* %a_2
106-
%ret_val = call spir_func <1 x float> @_Z16__esimd_div_ieeeILi1EEN2cm3gen13__vector_typeIfXT_EE4typeES4_S4_(<1 x float> %1, <1 x float> %2)
107-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <1 x float> @llvm.genx.ieee.div.v1f32(<1 x float> %{{[0-9a-zA-Z_.]+}}, <1 x float> %{{[0-9a-zA-Z_.]+}})
108-
ret <1 x float> %ret_val
109-
}
110-
11137
define dso_local spir_func <8 x float> @FUNC_10() {
11238
%a_1 = alloca <16 x float>
11339
%1 = load <16 x float>, <16 x float>* %a_1
@@ -126,20 +52,6 @@ define dso_local spir_func <16 x float> @FUNC_11() {
12652
ret <16 x float> %ret_val
12753
}
12854

129-
define dso_local spir_func <32 x i32> @FUNC_21(%opencl.image2d_ro_t addrspace(1)* %0, i32 %1, i32 %2) {
130-
%ret_val = call spir_func <32 x i32> @_Z24__esimd_media_block_loadIiLi4ELi8E14ocl_image2d_roEN2cm3gen13__vector_typeIT_XmlT0_T1_EE4typeEjT2_jjjj(i32 0, %opencl.image2d_ro_t addrspace(1)* %0, i32 0, i32 32, i32 %1, i32 %2)
131-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <32 x i32> @llvm.genx.media.ld.v32i32(i32 0, i32 %{{[0-9a-zA-Z_.]+}}, i32 0, i32 32, i32 %{{[0-9a-zA-Z_.]+}}, i32 %{{[0-9a-zA-Z_.]+}})
132-
ret <32 x i32> %ret_val
133-
}
134-
135-
define dso_local spir_func void @FUNC_22(%opencl.image2d_wo_t addrspace(1)* %0, i32 %1, i32 %2) {
136-
%a_3 = alloca <32 x i32>
137-
%4 = load <32 x i32>, <32 x i32>* %a_3
138-
call spir_func void @_Z25__esimd_media_block_storeIiLi4ELi8E14ocl_image2d_woEvjT2_jjjjN2cm3gen13__vector_typeIT_XmlT0_T1_EE4typeE(i32 0, %opencl.image2d_wo_t addrspace(1)* %0, i32 0, i32 32, i32 %1, i32 %2, <32 x i32> %4)
139-
; CHECK: call void @llvm.genx.media.st.v32i32(i32 0, i32 %{{[0-9a-zA-Z_.]+}}, i32 0, i32 32, i32 %{{[0-9a-zA-Z_.]+}}, i32 %{{[0-9a-zA-Z_.]+}}, <32 x i32> %{{[0-9a-zA-Z_.]+}})
140-
ret void
141-
}
142-
14355
define dso_local spir_func <16 x i32> @FUNC_23() {
14456
%ret_val = call spir_func <16 x i32> @_Z13__esimd_vloadIiLi16EEN2cm3gen13__vector_typeIT_XT0_EE4typeEPKS5_(<16 x i32> addrspace(4)* addrspacecast (<16 x i32>* getelementptr inbounds (%"cm::gen::simd<int, 16>", %"cm::gen::simd<int, 16>"* @vg, i32 0, i32 0) to <16 x i32> addrspace(4)*))
14557
; CHECK: %ret_val1 = load <16 x i32>, <16 x i32> addrspace(4)* addrspacecast (<16 x i32>* getelementptr inbounds (%"cm::gen::simd<int, 16>", %"cm::gen::simd<int, 16>"* @vg, i32 0, i32 0) to <16 x i32> addrspace(4)*), align 64
@@ -268,12 +180,6 @@ define dso_local spir_func <16 x i32> @FUNC_39() {
268180
ret <16 x i32> %ret_val
269181
}
270182

271-
define dso_local spir_func <8 x i32> @FUNC_40() {
272-
%ret_val = call spir_func <8 x i32> @_Z22__esimd_slm_block_readIiLi8EEN2cl4sycl3ext5intel3gpu11vector_typeIT_XT0_EE4typeEj(i32 0)
273-
; CHECK: %{{[0-9a-zA-Z_.]+}} = call <8 x i32> @llvm.genx.oword.ld.v8i32(i32 0, i32 254, i32 0)
274-
ret <8 x i32> %ret_val
275-
}
276-
277183
define dso_local spir_func void @FUNC_41() {
278184
call spir_func void @_Z16__esimd_sbarrierN2cl4sycl3ext5intel3gpu17EsimdSbarrierTypeE(i8 zeroext 1)
279185
; CHECK: call void @llvm.genx.sbarrier(i8 1)
@@ -378,16 +284,7 @@ define dso_local spir_func <32 x half> @FUNC_52() {
378284
}
379285

380286
declare dso_local i32 @_Z15__esimd_lane_idv()
381-
382-
declare dso_local spir_func <32 x i32> @_Z20__esimd_flat_atomic0ILN2cm3gen14CmAtomicOpTypeE2EjLi32ELNS1_9CacheHintE0ELS3_0EENS1_13__vector_typeIT0_XT1_EE4typeENS4_IyXT1_EE4typeENS4_ItXT1_EE4typeE(<32 x i64> %0, <32 x i16> %1)
383-
declare dso_local spir_func <32 x i32> @_Z20__esimd_flat_atomic1ILN2cm3gen14CmAtomicOpTypeE0EjLi32ELNS1_9CacheHintE0ELS3_0EENS1_13__vector_typeIT0_XT1_EE4typeENS4_IyXT1_EE4typeES7_NS4_ItXT1_EE4typeE(<32 x i64> %0, <32 x i32> %1, <32 x i16> %2)
384-
declare dso_local spir_func <32 x i32> @_Z20__esimd_flat_atomic2ILN2cm3gen14CmAtomicOpTypeE7EjLi32ELNS1_9CacheHintE0ELS3_0EENS1_13__vector_typeIT0_XT1_EE4typeENS4_IyXT1_EE4typeES7_S7_NS4_ItXT1_EE4typeE(<32 x i64> %0, <32 x i32> %1, <32 x i32> %2, <32 x i16> %3)
385-
declare dso_local spir_func <32 x i32> @_Z33__esimd_flat_block_read_unalignedIjLi32ELN2cm3gen9CacheHintE0ELS2_0EENS1_13__vector_typeIT_XT0_EE4typeEy(i64 %0)
386-
declare dso_local spir_func void @_Z24__esimd_flat_block_writeIjLi32ELN2cm3gen9CacheHintE0ELS2_0EEvyNS1_13__vector_typeIT_XT0_EE4typeE(i64 %0, <32 x i32> %1)
387-
declare dso_local spir_func <32 x i32> @_Z17__esimd_flat_readIjLi32ELi0ELN2cm3gen9CacheHintE0ELS2_0EENS1_13__vector_typeIT_XmlT0_clL_ZNS1_20ElemsPerAddrDecodingEjET1_EEE4typeENS3_IyXT0_EE4typeEiNS3_ItXT0_EE4typeE(<32 x i64> %0, i32 %1, <32 x i16> %2)
388-
declare dso_local spir_func void @_Z18__esimd_flat_writeIjLi32ELi0ELN2cm3gen9CacheHintE0ELS2_0EEvNS1_13__vector_typeIyXT0_EE4typeENS3_IT_XmlT0_clL_ZNS1_20ElemsPerAddrDecodingEjET1_EEE4typeEiNS3_ItXT0_EE4typeE(<32 x i64> %0, <32 x i32> %1, i32 %2, <32 x i16> %3)
389287
declare dso_local spir_func <16 x i16> @_Z12__esimd_sminIsLi16EEN2cm3gen13__vector_typeIT_XT0_EE4typeES5_S5_(<16 x i16> %0, <16 x i16> %1)
390-
declare dso_local spir_func <1 x float> @_Z16__esimd_div_ieeeILi1EEN2cm3gen13__vector_typeIfXT_EE4typeES4_S4_(<1 x float> %0, <1 x float> %1)
391288
declare dso_local spir_func <8 x float> @_Z16__esimd_rdregionIfLi16ELi8ELi0ELi8ELi1ELi0EEN2cm3gen13__vector_typeIT_XT1_EE4typeENS2_IS3_XT0_EE4typeEt(<16 x float> %0, i16 zeroext %1)
392289
declare dso_local spir_func <16 x float> @_Z16__esimd_wrregionIfLi16ELi8ELi0ELi8ELi1ELi0EEN2cm3gen13__vector_typeIT_XT0_EE4typeES5_NS2_IS3_XT1_EE4typeEtNS2_ItXT1_EE4typeE(<16 x float> %0, <8 x float> %1, i16 zeroext %2, <8 x i16> %3)
393290
declare dso_local spir_func <16 x i32> @_Z13__esimd_vloadIiLi16EEN2cm3gen13__vector_typeIT_XT0_EE4typeEPKS5_(<16 x i32> addrspace(4)* %0)
@@ -404,8 +301,6 @@ declare dso_local spir_func void @_Z14__esimd_vstoreIfLi1EEvPN2cm3gen13__vector_
404301
declare dso_local spir_func <16 x float> @_Z13__esimd_vloadIfLi16EEN2cm3gen13__vector_typeIT_XT0_EE4typeEPKS5_(<16 x float> addrspace(4)* %0)
405302
declare dso_local spir_func void @_Z14__esimd_vstoreIfLi8EEvPN2cm3gen13__vector_typeIT_XT0_EE4typeES5_(<8 x float> addrspace(4)* %0, <8 x float> %1)
406303
declare dso_local spir_func <8 x float> @_Z13__esimd_vloadIfLi8EEN2cm3gen13__vector_typeIT_XT0_EE4typeEPKS5_(<8 x float> addrspace(4)* %0)
407-
declare dso_local spir_func <32 x i32> @_Z24__esimd_media_block_loadIiLi4ELi8E14ocl_image2d_roEN2cm3gen13__vector_typeIT_XmlT0_T1_EE4typeEjT2_jjjj(i32 %0, %opencl.image2d_ro_t addrspace(1)* %1, i32 %2, i32 %3, i32 %4, i32 %5)
408-
declare dso_local spir_func void @_Z25__esimd_media_block_storeIiLi4ELi8E14ocl_image2d_woEvjT2_jjjjN2cm3gen13__vector_typeIT_XmlT0_T1_EE4typeE(i32 %0, %opencl.image2d_wo_t addrspace(1)* %1, i32 %2, i32 %3, i32 %4, i32 %5, <32 x i32> %6)
409304
declare dso_local spir_func <32 x i32> @_Z13__esimd_vloadIiLi32EEN2cm3gen13__vector_typeIT_XT0_EE4typeEPKS5_(<32 x i32> addrspace(4)* %0)
410305
declare dso_local spir_func void @_Z14__esimd_vstoreIfLi16EEvPN2cm3gen13__vector_typeIT_XT0_EE4typeES5_(<16 x float> addrspace(4)* %0, <16 x float> %1)
411306
declare dso_local spir_func void @_ZN2cl4sycl3ext5intel12experimental5esimd8slm_initEj(i32)
@@ -417,7 +312,6 @@ declare dso_local spir_func <16 x i32> @_Z18__esimd_uudp4a_satIjjjjLi16EEN2cl4sy
417312
declare dso_local spir_func <16 x i32> @_Z18__esimd_usdp4a_satIjiiiLi16EEN2cl4sycl3ext5intel3gpu11vector_typeIT_XT3_EE4typeENS4_IT0_XT3_EE4typeENS4_IT1_XT3_EE4typeENS4_IT2_XT3_EE4typeE(<16 x i32> %0, <16 x i32> %1, <16 x i32> %2)
418313
declare dso_local spir_func <16 x i32> @_Z18__esimd_sudp4a_satIijjjLi16EEN2cl4sycl3ext5intel3gpu11vector_typeIT_XT3_EE4typeENS4_IT0_XT3_EE4typeENS4_IT1_XT3_EE4typeENS4_IT2_XT3_EE4typeE(<16 x i32> %0, <16 x i32> %1, <16 x i32> %2)
419314
declare dso_local spir_func <16 x i32> @_Z18__esimd_ssdp4a_satIiiiiLi16EEN2cl4sycl3ext5intel3gpu11vector_typeIT_XT3_EE4typeENS4_IT0_XT3_EE4typeENS4_IT1_XT3_EE4typeENS4_IT2_XT3_EE4typeE(<16 x i32> %0, <16 x i32> %1, <16 x i32> %2)
420-
declare dso_local spir_func <8 x i32> @_Z22__esimd_slm_block_readIiLi8EEN2cl4sycl3ext5intel3gpu11vector_typeIT_XT0_EE4typeEj(i32 %0)
421315
declare dso_local spir_func void @_Z16__esimd_sbarrierN2cl4sycl3ext5intel3gpu17EsimdSbarrierTypeE(i8 %0)
422316
declare dso_local spir_func <8 x i32> @_Z18__esimd_rdindirectIiLi16ELi8ELi0EEN2cl4sycl3ext5intel3gpu11vector_typeIT_XT1_EE4typeENS4_IS5_XT0_EE4typeENS4_ItXT1_EE4typeE(<16 x i32>, <8 x i16>)
423317
declare dso_local spir_func <16 x i32> @_Z18__esimd_wrindirectIiLi16ELi8ELi0EEN2cl4sycl3ext5intel3gpu11vector_typeIT_XT0_EE4typeES7_NS4_IS5_XT1_EE4typeENS4_ItXT1_EE4typeESB_(<16 x i32>, <8 x i32>, <8 x i16>, <8 x i16>)

sycl/include/CL/sycl/detail/pi.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ typedef enum {
112112
PI_INVALID_IMAGE_FORMAT_DESCRIPTOR = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR,
113113
PI_IMAGE_FORMAT_NOT_SUPPORTED = CL_IMAGE_FORMAT_NOT_SUPPORTED,
114114
PI_MEM_OBJECT_ALLOCATION_FAILURE = CL_MEM_OBJECT_ALLOCATION_FAILURE,
115+
PI_FUNCTION_ADDRESS_IS_NOT_AVAILABLE =
116+
-998, ///< PI_FUNCTION_ADDRESS_IS_NOT_AVAILABLE indicates a fallback
117+
///< method determines the function exists but its address cannot be
118+
///< found.
115119
PI_ERROR_UNKNOWN = -999
116120
} _pi_result;
117121

@@ -987,6 +991,9 @@ __SYCL_EXPORT pi_result piextDeviceSelectBinary(pi_device device,
987991
/// must present in the list of devices returned by \c get_device method for
988992
/// \arg \c program.
989993
///
994+
/// If a fallback method determines the function exists but the address is
995+
/// not available PI_FUNCTION_ADDRESS_IS_NOT_AVAILABLE is returned. If the
996+
/// address does not exist PI_INVALID_KERNEL_NAME is returned.
990997
__SYCL_EXPORT pi_result piextGetDeviceFunctionPointer(
991998
pi_device device, pi_program program, const char *function_name,
992999
pi_uint64 *function_pointer_ret);

sycl/include/sycl/ext/intel/experimental/esimd/common.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,11 @@ using EsimdSbarrierType = split_barrier_action;
244244
#define ESIMD_SBARRIER_WAIT EsimdSbarrierType::WAIT
245245
#define ESIMD_SBARRIER_SIGNAL EsimdSbarrierType::SIGNAL
246246

247+
/// Surface index type. Surface is an internal representation of a memory block
248+
/// addressable by GPU in "stateful" memory model, and each surface is
249+
/// identified by its "binding table index" - surface index.
250+
using SurfaceIndex = unsigned int;
251+
247252
} // namespace esimd
248253
} // namespace experimental
249254
} // namespace intel

0 commit comments

Comments
 (0)