blob: b6f70c50f2efc6ff5f755720565eb70b76ce5c06 [file] [log] [blame]
//
// 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<in_out_t>(input1, shape1, tmp_index);
tensor_write<in_out_t>(output, shape, index, value);
}