// // 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(in_out_t != i8_t && input1_zp != 0); // Zero point only for int8_t ERROR_IF(in_out_t != i8_t && output_zp != 0); // Zero point only for int8_t for_each(index in shape) { in_out_t value1 = tensor_read(input1, shape, index); acc_t value = apply_sub_s(sign_extend(value1), sign_extend(input1_zp)); value = apply_sub_s(0, value); value = apply_add_s(value, sign_extend(output_zp)); in_out_t result = truncate(apply_clip_s(value, minimum_s, maximum_s)); tensor_write(output, shape, index, result); }