| 26 | namespace kernel { |
| 27 | |
| 28 | static int trimIndex(int idx, const int len) { |
| 29 | int ret_val = idx; |
| 30 | if (ret_val < 0) { |
| 31 | int offset = (abs(ret_val) - 1) % len; |
| 32 | ret_val = offset; |
| 33 | } else if (ret_val >= len) { |
| 34 | int offset = abs(ret_val) % len; |
| 35 | ret_val = len - offset - 1; |
| 36 | } |
| 37 | return ret_val; |
| 38 | } |
| 39 | |
| 40 | template<typename T> |
| 41 | class assignKernel { |