@@ -185,6 +185,51 @@ namespace detail {
185185 }
186186 }
187187
188+ TEST_CASE (" kernel_dim built-in range mapper behaves as expected" , " [range-mapper]" ) {
189+ using celerity::access::kernel_dim;
190+ {
191+ range_mapper rm{kernel_dim (0 ), cl::sycl::access::mode::read, range<1 >{128 }};
192+ auto sr = rm.map_1 (chunk<1 >{{1 }, {4 }, {7 }});
193+ CHECK (sr.offset == id<1 >{1 });
194+ CHECK (sr.range == range<1 >{4 });
195+ }
196+ {
197+ range_mapper rm{kernel_dim (1 ), cl::sycl::access::mode::read, range<1 >{128 }};
198+ auto sr = rm.map_1 (chunk<3 >{{1 , 2 , 3 }, {4 , 5 , 6 }, {7 , 8 , 9 }});
199+ CHECK (sr.offset == id<1 >{2 });
200+ CHECK (sr.range == range<1 >{5 });
201+ }
202+ }
203+
204+ TEST_CASE (" components built-in range mapper behaves as expected" , " [range-mapper]" ) {
205+ using celerity::access::components;
206+ using celerity::access::kernel_dim;
207+ {
208+ range_mapper rm{components (all (), all (), all ()), cl::sycl::access::mode::read, range<3 >{128 , 128 , 128 }};
209+ auto sr = rm.map_3 (chunk<3 >{{1 , 2 , 3 }, {40 , 50 , 60 }, {70 , 80 , 90 }});
210+ CHECK (sr.offset == id<3 >{0 , 0 , 0 });
211+ CHECK (sr.range == range<3 >{128 , 128 , 128 });
212+ }
213+ {
214+ range_mapper rm{components (fixed (subrange<1 >(19 , 31 )), fixed (subrange<1 >(15 , 44 ))), cl::sycl::access::mode::read, range<2 >{128 , 128 }};
215+ auto sr = rm.map_2 (chunk<3 >{{1 , 2 , 3 }, {40 , 50 , 60 }, {70 , 80 , 90 }});
216+ CHECK (sr.offset == id<2 >{19 , 15 });
217+ CHECK (sr.range == range<2 >{31 , 44 });
218+ }
219+ {
220+ range_mapper rm{components (kernel_dim (2 ), kernel_dim (0 ), kernel_dim (1 )), cl::sycl::access::mode::read, range<3 >{128 , 128 , 128 }};
221+ auto sr = rm.map_3 (chunk<3 >{{1 , 2 , 3 }, {40 , 50 , 60 }, {70 , 80 , 90 }});
222+ CHECK (sr.offset == id<3 >{3 , 1 , 2 });
223+ CHECK (sr.range == range<3 >{60 , 40 , 50 });
224+ }
225+ {
226+ range_mapper rm{components (kernel_dim (0 ), kernel_dim (0 )), cl::sycl::access::mode::read, range<2 >{128 , 128 }};
227+ auto sr = rm.map_2 (chunk<1 >{{1 }, {40 }, {70 }});
228+ CHECK (sr.offset == id<2 >{1 , 1 });
229+ CHECK (sr.range == range<2 >{40 , 40 });
230+ }
231+ }
232+
188233 TEST_CASE (" even_split built-in range mapper behaves as expected" , " [range-mapper]" ) {
189234 {
190235 range_mapper rm{even_split<3 >(), cl::sycl::access::mode::read, range<3 >{128 , 345 , 678 }};
0 commit comments