| 169 | } |
| 170 | |
| 171 | void ClCol2ImKernel::run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) |
| 172 | { |
| 173 | ARM_COMPUTE_ERROR_ON_UNCONFIGURED_KERNEL(this); |
| 174 | ARM_COMPUTE_ERROR_ON_MISMATCHING_WINDOWS(IClKernel::window(), window); |
| 175 | |
| 176 | bool is_collapsed = false; |
| 177 | bool is_collapsed_out = false; |
| 178 | |
| 179 | auto src = utils::cast::polymorphic_downcast<const ICLTensor *>(tensors.get_const_tensor(TensorType::ACL_SRC)); |
| 180 | auto dst = utils::cast::polymorphic_downcast<ICLTensor *>(tensors.get_tensor(TensorType::ACL_DST)); |
| 181 | |
| 182 | Window out_window; |
| 183 | out_window.use_tensor_dimensions(dst->info()->tensor_shape()); |
| 184 | |
| 185 | Window collapsed = window.collapse_if_possible(ICLKernel::window(), Window::DimZ, &is_collapsed); |
| 186 | Window collapsed_out = out_window.collapse_if_possible(out_window, 3, &is_collapsed_out); |
| 187 | |
| 188 | ARM_COMPUTE_ERROR_ON(is_collapsed != is_collapsed_out); |
| 189 | |
| 190 | Window slice = collapsed.first_slice_window_3D(); |
| 191 | Window slice_out = collapsed_out.first_slice_window_4D(); |
| 192 | do |
| 193 | { |
| 194 | // Set inputs |
| 195 | unsigned int idx = 0; |
| 196 | add_3D_tensor_argument(idx, src, slice); |
| 197 | add_4D_tensor_argument(idx, dst, slice_out); |
| 198 | enqueue(queue, *this, slice, lws_hint()); |
| 199 | } while (collapsed.slide_window_slice_3D(slice) && collapsed_out.slide_window_slice_4D(slice_out)); |
| 200 | } |
| 201 | } // namespace kernels |
| 202 | } // namespace opencl |
| 203 | } // namespace arm_compute |
nothing calls this directly
no test coverage detected