// // This confidential and proprietary software may be used only as // authorised by a licensing agreement from ARM Limited // (C) COPYRIGHT 2020-2024 ARM Limited // ALL RIGHTS RESERVED // The entire notice above must be reproduced on all authorised // copies and copies may only be made to the extent permitted // by a licensing agreement from ARM Limited. ERROR_IF(rank(shape1) != length(start) || rank(shape1) != length(size)); ERROR_IF(rank(shape1) != rank(shape)); // Sanity check the given coordinates, ensure start and end are // within tensor bounds for_each(index in rank(shape1)) { ERROR_IF(start[index] < 0); ERROR_IF(size[index] <= 0); //Output must be positive size ERROR_IF(start[index] + size[index] > shape1[index]); ERROR_IF(shape[index] != size[index]); } for_each(index in shape) { shape_t tmp_index = index; for(i = 0; i < rank(shape); i++) { tmp_index[i] = index[i] + start[i]; } in_out_t value = tensor_read(input1, shape1, tmp_index); tensor_write(output, shape, index, value); }