@@ -1293,30 +1293,13 @@ template <typename T, int NElts = 1,
1293
1293
__ESIMD_API std::enable_if_t <__ESIMD_DNS::is_device_accessor_with_v<
1294
1294
AccessorTy, __ESIMD_DNS::accessor_mode_cap::can_read>>
1295
1295
lsc_prefetch (AccessorTy acc,
1296
- #ifdef __ESIMD_FORCE_STATELESS_MEM
1297
- __ESIMD_NS::simd<uint64_t , N> offsets,
1298
- #else
1299
- __ESIMD_NS::simd<uint32_t , N> offsets,
1300
- #endif
1296
+ __ESIMD_NS::simd<__ESIMD_DNS::DeviceAccessorOffsetT, N> offsets,
1301
1297
__ESIMD_NS::simd_mask<N> pred = 1 ) {
1302
1298
#ifdef __ESIMD_FORCE_STATELESS_MEM
1303
- return lsc_prefetch<T, NElts, DS, L1H, L2H>(
1304
- __ESIMD_DNS::accessorToPointer<T>(acc), offsets, pred);
1299
+ lsc_prefetch<T, NElts, DS, L1H, L2H>(__ESIMD_DNS::accessorToPointer<T>(acc),
1300
+ offsets, pred);
1305
1301
#else
1306
- detail::check_lsc_vector_size<NElts>();
1307
- detail::check_lsc_data_size<T, DS>();
1308
- detail::check_lsc_cache_hint<detail::lsc_action::prefetch, L1H, L2H>();
1309
- constexpr uint16_t _AddressScale = 1 ;
1310
- constexpr int _ImmOffset = 0 ;
1311
- constexpr lsc_data_size _DS =
1312
- detail::expand_data_size (detail::finalize_data_size<T, DS>());
1313
- constexpr detail::lsc_vector_size _VS = detail::to_lsc_vector_size<NElts>();
1314
- constexpr detail::lsc_data_order _Transposed =
1315
- detail::lsc_data_order::nontranspose;
1316
- using MsgT = typename detail::lsc_expand_type<T>::type;
1317
- auto si = __ESIMD_NS::get_surface_index (acc);
1318
- __esimd_lsc_prefetch_bti<MsgT, L1H, L2H, _AddressScale, _ImmOffset, _DS, _VS,
1319
- _Transposed, N>(pred.data (), offsets.data (), si);
1302
+ __ESIMD_DNS::prefetch_impl<T, NElts, DS, L1H, L2H>(acc, offsets, pred);
1320
1303
#endif
1321
1304
}
1322
1305
@@ -1362,24 +1345,8 @@ lsc_prefetch(AccessorTy acc, __ESIMD_DNS::DeviceAccessorOffsetT offset) {
1362
1345
lsc_prefetch<T, NElts, DS, L1H, L2H>(
1363
1346
__ESIMD_DNS::accessorToPointer<T>(acc, offset));
1364
1347
#else
1365
- detail::check_lsc_vector_size<NElts>();
1366
- detail::check_lsc_data_size<T, DS>();
1367
- detail::check_lsc_cache_hint<detail::lsc_action::prefetch, L1H, L2H>();
1368
- constexpr uint16_t _AddressScale = 1 ;
1369
- constexpr int _ImmOffset = 0 ;
1370
- constexpr lsc_data_size _DS = detail::finalize_data_size<T, DS>();
1371
- static_assert (
1372
- _DS == lsc_data_size::u32 || _DS == lsc_data_size::u64 ,
1373
- " Transposed prefetch is supported only for data size u32 or u64" );
1374
- constexpr detail::lsc_vector_size _VS = detail::to_lsc_vector_size<NElts>();
1375
- constexpr detail::lsc_data_order _Transposed =
1376
- detail::lsc_data_order::transpose;
1377
- constexpr int N = 1 ;
1378
- __ESIMD_NS::simd_mask<N> pred = 1 ;
1379
- __ESIMD_NS::simd<uint32_t , N> offsets = offset;
1380
- auto si = __ESIMD_NS::get_surface_index (acc);
1381
- __esimd_lsc_prefetch_bti<T, L1H, L2H, _AddressScale, _ImmOffset, _DS, _VS,
1382
- _Transposed, N>(pred.data (), offsets.data (), si);
1348
+ __ESIMD_NS::simd_mask<1 > Mask = 1 ;
1349
+ __ESIMD_DNS::prefetch_impl<T, NElts, DS, L1H, L2H>(acc, offset, Mask);
1383
1350
#endif
1384
1351
}
1385
1352
0 commit comments