// // 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. // Check output shape matches the padded input shape ERROR_IF(rank(shape) != rank(shape1)); for (int32_t i = 0; i < rank(shape); i++) { ERROR_IF(padding[i * 2] < 0 || padding[(i * 2) + 1] < 0); ERROR_IF(shape[i] != padding[i * 2] + shape1[i] + padding[(i * 2) + 1]); } for_each(index in shape) { shape_t index1 = index; bool_t is_pad = false; for(int32_t i = 0; i < rank(shape); i++) { index1[i] = index1[i] - padding[i * 2]; if (index1[i] < 0 || index[i] >= length(shape[i])) { is_pad = true; } } in_out_t value = is_pad ? pad_const : tensor_read(input1, shape1, index1); tensor_write(output, shape, index, value); }