@@ -82,9 +82,11 @@ struct UnaryContigFunctor
8282 sycl::vec<resT, vec_sz> res_vec (const_val);
8383#pragma unroll
8484 for (std::uint8_t it = 0 ; it < n_vecs * vec_sz; it += vec_sz) {
85+ size_t offset = base + static_cast <size_t >(it) *
86+ static_cast <size_t >(sgSize);
8587 auto out_multi_ptr = sycl::address_space_cast<
8688 sycl::access::address_space::global_space,
87- sycl::access::decorated::yes>(&out[base + it * sgSize ]);
89+ sycl::access::decorated::yes>(&out[offset ]);
8890
8991 sg.store <vec_sz>(out_multi_ptr, res_vec);
9092 }
@@ -111,12 +113,14 @@ struct UnaryContigFunctor
111113
112114#pragma unroll
113115 for (std::uint16_t it = 0 ; it < n_vecs * vec_sz; it += vec_sz) {
116+ size_t offset = base + static_cast <size_t >(it) *
117+ static_cast <size_t >(sgSize);
114118 auto in_multi_ptr = sycl::address_space_cast<
115119 sycl::access::address_space::global_space,
116- sycl::access::decorated::yes>(&in[base + it * sgSize ]);
120+ sycl::access::decorated::yes>(&in[offset ]);
117121 auto out_multi_ptr = sycl::address_space_cast<
118122 sycl::access::address_space::global_space,
119- sycl::access::decorated::yes>(&out[base + it * sgSize ]);
123+ sycl::access::decorated::yes>(&out[offset ]);
120124
121125 x = sg.load <vec_sz>(in_multi_ptr);
122126 sycl::vec<resT, vec_sz> res_vec = op (x);
@@ -149,12 +153,14 @@ struct UnaryContigFunctor
149153
150154#pragma unroll
151155 for (std::uint8_t it = 0 ; it < n_vecs * vec_sz; it += vec_sz) {
156+ size_t offset = base + static_cast <size_t >(it) *
157+ static_cast <size_t >(sgSize);
152158 auto in_multi_ptr = sycl::address_space_cast<
153159 sycl::access::address_space::global_space,
154- sycl::access::decorated::yes>(&in[base + it * sgSize ]);
160+ sycl::access::decorated::yes>(&in[offset ]);
155161 auto out_multi_ptr = sycl::address_space_cast<
156162 sycl::access::address_space::global_space,
157- sycl::access::decorated::yes>(&out[base + it * sgSize ]);
163+ sycl::access::decorated::yes>(&out[offset ]);
158164
159165 arg_vec = sg.load <vec_sz>(in_multi_ptr);
160166#pragma unroll
@@ -188,12 +194,14 @@ struct UnaryContigFunctor
188194
189195#pragma unroll
190196 for (std::uint8_t it = 0 ; it < n_vecs * vec_sz; it += vec_sz) {
197+ size_t offset = base + static_cast <size_t >(it) *
198+ static_cast <size_t >(sgSize);
191199 auto in_multi_ptr = sycl::address_space_cast<
192200 sycl::access::address_space::global_space,
193- sycl::access::decorated::yes>(&in[base + it * sgSize ]);
201+ sycl::access::decorated::yes>(&in[offset ]);
194202 auto out_multi_ptr = sycl::address_space_cast<
195203 sycl::access::address_space::global_space,
196- sycl::access::decorated::yes>(&out[base + it * sgSize ]);
204+ sycl::access::decorated::yes>(&out[offset ]);
197205
198206 arg_vec = sg.load <vec_sz>(in_multi_ptr);
199207#pragma unroll
@@ -375,15 +383,17 @@ struct BinaryContigFunctor
375383
376384#pragma unroll
377385 for (std::uint8_t it = 0 ; it < n_vecs * vec_sz; it += vec_sz) {
386+ size_t offset = base + static_cast <size_t >(it) *
387+ static_cast <size_t >(sgSize);
378388 auto in1_multi_ptr = sycl::address_space_cast<
379389 sycl::access::address_space::global_space,
380- sycl::access::decorated::yes>(&in1[base + it * sgSize ]);
390+ sycl::access::decorated::yes>(&in1[offset ]);
381391 auto in2_multi_ptr = sycl::address_space_cast<
382392 sycl::access::address_space::global_space,
383- sycl::access::decorated::yes>(&in2[base + it * sgSize ]);
393+ sycl::access::decorated::yes>(&in2[offset ]);
384394 auto out_multi_ptr = sycl::address_space_cast<
385395 sycl::access::address_space::global_space,
386- sycl::access::decorated::yes>(&out[base + it * sgSize ]);
396+ sycl::access::decorated::yes>(&out[offset ]);
387397
388398 arg1_vec = sg.load <vec_sz>(in1_multi_ptr);
389399 arg2_vec = sg.load <vec_sz>(in2_multi_ptr);
@@ -415,15 +425,17 @@ struct BinaryContigFunctor
415425
416426#pragma unroll
417427 for (std::uint8_t it = 0 ; it < n_vecs * vec_sz; it += vec_sz) {
428+ size_t offset = base + static_cast <size_t >(it) *
429+ static_cast <size_t >(sgSize);
418430 auto in1_multi_ptr = sycl::address_space_cast<
419431 sycl::access::address_space::global_space,
420- sycl::access::decorated::yes>(&in1[base + it * sgSize ]);
432+ sycl::access::decorated::yes>(&in1[offset ]);
421433 auto in2_multi_ptr = sycl::address_space_cast<
422434 sycl::access::address_space::global_space,
423- sycl::access::decorated::yes>(&in2[base + it * sgSize ]);
435+ sycl::access::decorated::yes>(&in2[offset ]);
424436 auto out_multi_ptr = sycl::address_space_cast<
425437 sycl::access::address_space::global_space,
426- sycl::access::decorated::yes>(&out[base + it * sgSize ]);
438+ sycl::access::decorated::yes>(&out[offset ]);
427439
428440 arg1_vec = sg.load <vec_sz>(in1_multi_ptr);
429441 arg2_vec = sg.load <vec_sz>(in2_multi_ptr);
0 commit comments