Skip to content

Commit 969fb7f

Browse files
authored
[ESIMD] Enable variable slm_init support. (#6030)
* [ESIMD] Enable variable slm_init support.
1 parent e62b5aa commit 969fb7f

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

llvm/lib/SYCLLowerIR/ESIMD/LowerESIMD.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,7 @@ class ESIMDIntrinDescTable {
637637
{"lane_id", {"lane.id", {}}},
638638
{"test_src_tmpl_arg",
639639
{"test.src.tmpl.arg", {t(0), t1(1), t8(2), t16(3), t32(4), c8(17)}}},
640+
{"slm_init", {"slm.init", {a(0)}}},
640641
};
641642
}
642643

@@ -1684,12 +1685,14 @@ size_t SYCLLowerESIMDPass::runOnFunction(Function &F,
16841685
// process ESIMD builtins that go through special handling instead of
16851686
// the translation procedure
16861687
// TODO FIXME slm_init should be made top-level __esimd_slm_init
1687-
if (Name.startswith("__esimd_slm_init")) {
1688+
if (Name.startswith("__esimd_slm_init") &&
1689+
isa<ConstantInt>(CI->getArgOperand(0))) {
16881690
// tag the kernel with meta-data SLMSize, and remove this builtin
16891691
translateSLMInit(*CI);
16901692
ToErase.push_back(CI);
16911693
continue;
16921694
}
1695+
16931696
if (Name.startswith("__esimd_nbarrier_init")) {
16941697
translateNbarrierInit(*CI);
16951698
ToErase.push_back(CI);

llvm/test/SYCLLowerIR/ESIMD/lower_intrins.ll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,13 @@ define dso_local spir_func <32 x half> @FUNC_52() {
282282
ret <32 x half> %d
283283
}
284284

285+
define dso_local spir_func void @FUNC_53(i32 %0) {
286+
; COM: FIXME: to enable this test after VC-intrinsic sync
287+
; COM: call spir_func void @_Z16__esimd_slm_initj(i32 %0)
288+
; COM: CHECK: call void @llvm.genx.slm.init(i32 %0)
289+
ret void
290+
}
291+
285292
declare dso_local i32 @_Z15__esimd_lane_idv()
286293
declare dso_local spir_func <16 x i16> @_Z12__esimd_sminIsLi16EEN2cm3gen13__vector_typeIT_XT0_EE4typeES5_S5_(<16 x i16> %0, <16 x i16> %1)
287294
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)
@@ -320,6 +327,7 @@ declare dso_local spir_func <16 x float> @_Z12__esimd_rndzILi16EEN2cl4sycl3ext5i
320327
declare dso_local spir_func <16 x float> @_Z12__esimd_rndeILi16EEN2cl4sycl3ext5intel12experimental5esimd6detail11vector_typeIfXT_EE4typeES9_(<16 x float>)
321328
declare dso_local spir_func void @_Z25__esimd_test_src_tmpl_argILi3ELi5ELi7ELi11ELi13EEvv()
322329
declare dso_local spir_func <32 x half> @_Z16__esimd_wrregionIDF16_Li32ELi32ELi0ELi32ELi1ELi32EEN2cl4sycl3ext5intel12experimental5esimd6detail11vector_typeIT_XT0_EE4typeESA_NS7_IS8_XT1_EE4typeEtNS7_ItXT1_EE4typeE(<32 x half>, <32 x half>, i16 zeroext, <32 x i16>)
330+
declare dso_local spir_func void @_Z16__esimd_slm_initj(i32 %0)
323331

324332
attributes #0 = { "genx_byte_offset"="192" "genx_volatile" }
325333

sycl/include/sycl/ext/intel/esimd/detail/memory_intrin.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ __esimd_svm_atomic2(__ESIMD_DNS::vector_type_t<uint64_t, N> addrs,
530530
}
531531
#endif // __SYCL_DEVICE_ONLY__
532532

533-
__ESIMD_INTRIN void __esimd_slm_init(size_t size)
533+
__ESIMD_INTRIN void __esimd_slm_init(uint32_t size)
534534
#ifdef __SYCL_DEVICE_ONLY__
535535
;
536536
#else

0 commit comments

Comments
 (0)