| 24 | struct reverse_kernel : public meta_kernel |
| 25 | { |
| 26 | reverse_kernel(Iterator first, Iterator last) |
| 27 | : meta_kernel("reverse") |
| 28 | { |
| 29 | typedef typename std::iterator_traits<Iterator>::value_type value_type; |
| 30 | |
| 31 | // store size of the range |
| 32 | m_size = detail::iterator_range_size(first, last); |
| 33 | add_set_arg<const cl_uint>("size", static_cast<const cl_uint>(m_size)); |
| 34 | |
| 35 | *this << |
| 36 | decl<cl_uint>("i") << " = get_global_id(0);\n" << |
| 37 | decl<cl_uint>("j") << " = size - get_global_id(0) - 1;\n" << |
| 38 | decl<value_type>("tmp") << "=" << first[var<cl_uint>("i")] << ";\n" << |
| 39 | first[var<cl_uint>("i")] << "=" << first[var<cl_uint>("j")] << ";\n" << |
| 40 | first[var<cl_uint>("j")] << "= tmp;\n"; |
| 41 | } |
| 42 | |
| 43 | void exec(command_queue &queue) |
| 44 | { |
nothing calls this directly
no test coverage detected