@@ -750,22 +750,22 @@ lsc_gather(const T *p, __ESIMD_NS::simd<Toffset, N> offsets,
750
750
return detail::lsc_format_ret<T>(Result);
751
751
}
752
752
753
- template <
754
- typename T, int NElts = 1 , lsc_data_size DS = lsc_data_size::default_size,
755
- cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none, int N ,
756
- typename Toffset, typename RegionTy = __ESIMD_NS:: region1d_t <Toffset, N, 1 > >
753
+ template <typename T, int NElts = 1 ,
754
+ lsc_data_size DS = lsc_data_size::default_size,
755
+ cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
756
+ int N, typename OffsetObjT, typename RegionTy >
757
757
__ESIMD_API __ESIMD_NS::simd<T, N * NElts>
758
- lsc_gather (const T *p, __ESIMD_NS::simd_view<Toffset , RegionTy> offsets,
758
+ lsc_gather (const T *p, __ESIMD_NS::simd_view<OffsetObjT , RegionTy> offsets,
759
759
__ESIMD_NS::simd_mask<N> pred = 1 ) {
760
760
return lsc_gather<T, NElts, DS, L1H, L3H, N>(p, offsets.read (), pred);
761
761
}
762
762
763
- template <
764
- typename T, int NElts = 1 , lsc_data_size DS = lsc_data_size::default_size,
765
- cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none, int N ,
766
- typename Toffset, typename RegionTy = __ESIMD_NS:: region1d_t <Toffset, N, 1 > >
763
+ template <typename T, int NElts = 1 ,
764
+ lsc_data_size DS = lsc_data_size::default_size,
765
+ cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
766
+ int N, typename OffsetObjT, typename RegionTy >
767
767
__ESIMD_API __ESIMD_NS::simd<T, N * NElts>
768
- lsc_gather (const T *p, __ESIMD_NS::simd_view<Toffset , RegionTy> offsets,
768
+ lsc_gather (const T *p, __ESIMD_NS::simd_view<OffsetObjT , RegionTy> offsets,
769
769
__ESIMD_NS::simd_mask<N> pred,
770
770
__ESIMD_NS::simd<T, N * NElts> pass_thru) {
771
771
return lsc_gather<T, NElts, DS, L1H, L3H, N>(p, offsets.read (), pred,
@@ -1316,13 +1316,13 @@ __ESIMD_API void lsc_prefetch(const T *p, __ESIMD_NS::simd<Toffset, N> offsets,
1316
1316
addrs.data ());
1317
1317
}
1318
1318
1319
- template <
1320
- typename T, int NElts = 1 , lsc_data_size DS = lsc_data_size::default_size,
1321
- cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none, int N ,
1322
- typename Toffset, typename RegionTy = __ESIMD_NS:: region1d_t <Toffset, N, 1 > >
1323
- __ESIMD_API void lsc_prefetch ( const T *p,
1324
- __ESIMD_NS::simd_view<Toffset , RegionTy> offsets,
1325
- __ESIMD_NS::simd_mask<N> pred = 1 ) {
1319
+ template <typename T, int NElts = 1 ,
1320
+ lsc_data_size DS = lsc_data_size::default_size,
1321
+ cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
1322
+ int N, typename OffsetObjT, typename RegionTy >
1323
+ __ESIMD_API void
1324
+ lsc_prefetch ( const T *p, __ESIMD_NS::simd_view<OffsetObjT , RegionTy> offsets,
1325
+ __ESIMD_NS::simd_mask<N> pred = 1 ) {
1326
1326
lsc_prefetch<T, NElts, DS, L1H, L3H, N>(p, offsets.read (), pred);
1327
1327
}
1328
1328
@@ -1592,14 +1592,14 @@ __ESIMD_API void lsc_scatter(T *p, __ESIMD_NS::simd<Toffset, N> offsets,
1592
1592
Tmp.data ());
1593
1593
}
1594
1594
1595
- template <
1596
- typename T, int NElts = 1 , lsc_data_size DS = lsc_data_size::default_size,
1597
- cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none, int N ,
1598
- typename Toffset, typename RegionTy = __ESIMD_NS:: region1d_t <Toffset, N, 1 > >
1599
- __ESIMD_API void lsc_scatter (T *p,
1600
- __ESIMD_NS::simd_view<Toffset , RegionTy> offsets,
1601
- __ESIMD_NS::simd<T, N * NElts> vals,
1602
- __ESIMD_NS::simd_mask<N> pred = 1 ) {
1595
+ template <typename T, int NElts = 1 ,
1596
+ lsc_data_size DS = lsc_data_size::default_size,
1597
+ cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
1598
+ int N, typename OffsetObjT, typename RegionTy >
1599
+ __ESIMD_API void
1600
+ lsc_scatter (T *p, __ESIMD_NS::simd_view<OffsetObjT , RegionTy> offsets,
1601
+ __ESIMD_NS::simd<T, N * NElts> vals,
1602
+ __ESIMD_NS::simd_mask<N> pred = 1 ) {
1603
1603
lsc_scatter<T, NElts, DS, L1H, L3H, N>(p, offsets.read (), vals, pred);
1604
1604
}
1605
1605
@@ -2707,11 +2707,10 @@ lsc_atomic_update(T *p, __ESIMD_NS::simd<Toffset, N> offsets,
2707
2707
template <__ESIMD_NS::atomic_op Op, typename T, int N,
2708
2708
lsc_data_size DS = lsc_data_size::default_size,
2709
2709
cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
2710
- typename Toffset,
2711
- typename RegionTy = __ESIMD_NS::region1d_t <Toffset, N, 1 >>
2710
+ typename OffsetObjT, typename RegionTy>
2712
2711
__ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 1 ,
2713
2712
__ESIMD_NS::simd<T, N>>
2714
- lsc_atomic_update (T *p, __ESIMD_NS::simd_view<Toffset , RegionTy> offsets,
2713
+ lsc_atomic_update (T *p, __ESIMD_NS::simd_view<OffsetObjT , RegionTy> offsets,
2715
2714
__ESIMD_NS::simd<T, N> src0,
2716
2715
__ESIMD_NS::simd_mask<N> pred = 1 ) {
2717
2716
return lsc_atomic_update<Op, T, N, DS, L1H, L3H>(p, offsets.read (), src0,
@@ -2766,11 +2765,10 @@ lsc_atomic_update(T *p, __ESIMD_NS::simd<Toffset, N> offsets,
2766
2765
template <__ESIMD_NS::atomic_op Op, typename T, int N,
2767
2766
lsc_data_size DS = lsc_data_size::default_size,
2768
2767
cache_hint L1H = cache_hint::none, cache_hint L3H = cache_hint::none,
2769
- typename Toffset,
2770
- typename RegionTy = __ESIMD_NS::region1d_t <Toffset, N, 1 >>
2768
+ typename OffsetObjT, typename RegionTy>
2771
2769
__ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 2 ,
2772
2770
__ESIMD_NS::simd<T, N>>
2773
- lsc_atomic_update (T *p, __ESIMD_NS::simd_view<Toffset , RegionTy> offsets,
2771
+ lsc_atomic_update (T *p, __ESIMD_NS::simd_view<OffsetObjT , RegionTy> offsets,
2774
2772
__ESIMD_NS::simd<T, N> src0, __ESIMD_NS::simd<T, N> src1,
2775
2773
__ESIMD_NS::simd_mask<N> pred = 1 ) {
2776
2774
return lsc_atomic_update<Op, T, N, DS, L1H, L3H>(p, offsets.read (), src0,
@@ -3065,10 +3063,10 @@ atomic_update(T *p, simd<Toffset, N> offset, simd_mask<N> mask) {
3065
3063
p, offset, mask);
3066
3064
}
3067
3065
3068
- template <native::lsc::atomic_op Op, typename T, int N, typename Toffset ,
3069
- typename RegionTy = __ESIMD_NS:: region1d_t <Toffset, N, 1 > >
3066
+ template <native::lsc::atomic_op Op, typename T, int N, typename OffsetObjT ,
3067
+ typename RegionTy>
3070
3068
__ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 0 , simd<T, N>>
3071
- atomic_update (T *p, simd_view<Toffset , RegionTy> offsets,
3069
+ atomic_update (T *p, simd_view<OffsetObjT , RegionTy> offsets,
3072
3070
simd_mask<N> mask = 1 ) {
3073
3071
return __ESIMD_ENS::lsc_atomic_update<detail::to_atomic_op<Op>(), T, N>(
3074
3072
p, offsets, mask);
@@ -3094,11 +3092,12 @@ atomic_update(T *p, simd<Toffset, N> offset, simd<T, N> src0,
3094
3092
p, offset, src0, mask);
3095
3093
}
3096
3094
3097
- template <native::lsc::atomic_op Op, typename T, int N, typename Toffset,
3098
- typename RegionTy = __ESIMD_NS::region1d_t <Toffset, N, 1 >>
3099
- __ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 1 , simd<T, N>>
3100
- atomic_update (T *p, simd_view<Toffset, RegionTy> offsets, simd<T, N> src0,
3101
- simd_mask<N> mask = 1 ) {
3095
+ template <native::lsc::atomic_op Op, typename T, int N, typename OffsetObjT,
3096
+ typename RegionTy>
3097
+ __ESIMD_API __ESIMD_API
3098
+ std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 1 , simd<T, N>>
3099
+ atomic_update (T *p, simd_view<OffsetObjT, RegionTy> offsets,
3100
+ simd<T, N> src0, simd_mask<N> mask = 1 ) {
3102
3101
return __ESIMD_ENS::lsc_atomic_update<detail::to_atomic_op<Op>(), T, N>(
3103
3102
p, offsets, src0, mask);
3104
3103
}
@@ -3126,10 +3125,10 @@ atomic_update(T *p, simd<Toffset, N> offset, simd<T, N> src0, simd<T, N> src1,
3126
3125
p, offset, src1, src0, mask);
3127
3126
}
3128
3127
3129
- template <native::lsc::atomic_op Op, typename T, int N, typename Toffset ,
3130
- typename RegionTy = __ESIMD_NS:: region1d_t <Toffset, N, 1 > >
3128
+ template <native::lsc::atomic_op Op, typename T, int N, typename OffsetObjT ,
3129
+ typename RegionTy>
3131
3130
__ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 2 , simd<T, N>>
3132
- atomic_update (T *p, simd_view<Toffset , RegionTy> offsets, simd<T, N> src0,
3131
+ atomic_update (T *p, simd_view<OffsetObjT , RegionTy> offsets, simd<T, N> src0,
3133
3132
simd<T, N> src1, simd_mask<N> mask = 1 ) {
3134
3133
return __ESIMD_ENS::lsc_atomic_update<detail::to_atomic_op<Op>(), T, N>(
3135
3134
p, offsets, src1, src0, mask);
@@ -3156,13 +3155,12 @@ atomic_update(AccessorTy acc, simd<Toffset, N> offset, simd_mask<N> mask) {
3156
3155
acc, offset, mask);
3157
3156
}
3158
3157
3159
- template <native::lsc::atomic_op Op, typename T, int N, typename Toffset,
3160
- typename RegionTy = __ESIMD_NS::region1d_t <Toffset, N, 1 >,
3161
- typename AccessorTy>
3158
+ template <native::lsc::atomic_op Op, typename T, int N, typename OffsetObjT,
3159
+ typename RegionTy, typename AccessorTy>
3162
3160
__ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 0 &&
3163
3161
!std::is_pointer_v<AccessorTy>,
3164
3162
simd<T, N>>
3165
- atomic_update (AccessorTy acc, simd_view<Toffset , RegionTy> offsets,
3163
+ atomic_update (AccessorTy acc, simd_view<OffsetObjT , RegionTy> offsets,
3166
3164
simd_mask<N> mask) {
3167
3165
return __ESIMD_ENS::lsc_atomic_update<detail::to_atomic_op<Op>(), T, N>(
3168
3166
acc, offsets, mask);
@@ -3192,13 +3190,12 @@ atomic_update(AccessorTy acc, simd<Toffset, N> offset, simd<T, N> src0,
3192
3190
acc, offset, src0, mask);
3193
3191
}
3194
3192
3195
- template <native::lsc::atomic_op Op, typename T, int N, typename Toffset,
3196
- typename RegionTy = __ESIMD_NS::region1d_t <Toffset, N, 1 >,
3197
- typename AccessorTy>
3198
- __ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 1 &&
3199
- !std::is_pointer_v<AccessorTy>,
3200
- simd<T, N>>
3201
- atomic_update (AccessorTy acc, simd_view<Toffset, RegionTy> offsets,
3193
+ template <native::lsc::atomic_op Op, typename T, int N, typename OffsetObjT,
3194
+ typename RegionTy, typename AccessorTy>
3195
+ __ESIMD_API __ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 1 &&
3196
+ !std::is_pointer_v<AccessorTy>,
3197
+ simd<T, N>>
3198
+ atomic_update (AccessorTy acc, simd_view<OffsetObjT, RegionTy> offsets,
3202
3199
simd<T, N> src0, simd_mask<N> mask) {
3203
3200
return __ESIMD_ENS::lsc_atomic_update<detail::to_atomic_op<Op>(), T, N>(
3204
3201
acc, offsets, src0, mask);
@@ -3232,13 +3229,12 @@ atomic_update(AccessorTy acc, simd<Toffset, N> offset, simd<T, N> src0,
3232
3229
acc, offset, src1, src0, mask);
3233
3230
}
3234
3231
3235
- template <native::lsc::atomic_op Op, typename T, int N, typename Toffset,
3236
- typename RegionTy = __ESIMD_NS::region1d_t <Toffset, N, 1 >,
3237
- typename AccessorTy>
3232
+ template <native::lsc::atomic_op Op, typename T, int N, typename OffsetObjT,
3233
+ typename RegionTy, typename AccessorTy>
3238
3234
__ESIMD_API std::enable_if_t <__ESIMD_DNS::get_num_args<Op>() == 2 &&
3239
3235
!std::is_pointer_v<AccessorTy>,
3240
3236
simd<T, N>>
3241
- atomic_update (AccessorTy acc, simd_view<Toffset , RegionTy> offsets,
3237
+ atomic_update (AccessorTy acc, simd_view<OffsetObjT , RegionTy> offsets,
3242
3238
simd<T, N> src0, simd<T, N> src1, simd_mask<N> mask) {
3243
3239
return __ESIMD_ENS::lsc_atomic_update<detail::to_atomic_op<Op>(), T, N>(
3244
3240
acc, offsets, src1, src0, mask);
0 commit comments