From 60dc48c4ddf30f2a76d4cfcf1b40ca57b6f3bf95 Mon Sep 17 00:00:00 2001 From: Tai Ly Date: Fri, 8 Mar 2024 22:19:41 +0000 Subject: [ref model] Change Clamp and Pad attribute fields This implements changes due to ClampAttribute and PadAttribute field changes. Signed-off-by: Tai Ly Change-Id: Ide01e2a27fe3c1ea7794e7a4b6780b7eae436caf --- reference_model/src/ops/activation_funcs.cc | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'reference_model/src/ops/activation_funcs.cc') diff --git a/reference_model/src/ops/activation_funcs.cc b/reference_model/src/ops/activation_funcs.cc index 1f4c3b3..de7d8be 100644 --- a/reference_model/src/ops/activation_funcs.cc +++ b/reference_model/src/ops/activation_funcs.cc @@ -17,6 +17,7 @@ #include "arith_util.h" #include "quant_util.h" #include "template_types.h" +#include "tosa_serialization_handler.h" #include using namespace TosaReference; @@ -35,8 +36,11 @@ int OpClamp::register_fcn() case TOSA_REF_TYPE_FP16: case TOSA_REF_TYPE_BF16: case TOSA_REF_TYPE_FP32: { - InEigenType min = (InEigenType)attribute->min_fp(); - InEigenType max = (InEigenType)attribute->max_fp(); + std::vector min_float_data, max_float_data; + TosaSerializationHandler::ConvertU8toF32(attribute->min_val(), /* size = */ 1, min_float_data); + TosaSerializationHandler::ConvertU8toF32(attribute->max_val(), /* size = */ 1, max_float_data); + InEigenType min = (InEigenType)min_float_data[0]; + InEigenType max = (InEigenType)max_float_data[0]; ERROR_IF(max < min, "OpClamp: max smaller than min"); this->fcn = [min, max](InEigenType a) -> OutEigenType { @@ -45,23 +49,32 @@ int OpClamp::register_fcn() } break; case TOSA_REF_TYPE_FP64: { - InEigenType min = (InEigenType)attribute->min_fp(); - InEigenType max = (InEigenType)attribute->max_fp(); + std::vector min_float_data, max_float_data; + TosaSerializationHandler::ConvertU8toF32(attribute->min_val(), /* size = */ 1, min_float_data); + TosaSerializationHandler::ConvertU8toF32(attribute->max_val(), /* size = */ 1, max_float_data); + InEigenType min = (InEigenType)min_float_data[0]; + InEigenType max = (InEigenType)max_float_data[0]; ERROR_IF(max < min, "OpClamp: max smaller than min"); this->fcn = [min, max](InEigenType a) -> OutEigenType { return (a <= min ? min : a >= max ? max : a); }; } break; case TOSA_REF_TYPE_INT8: { - int8_t min = (int8_t)attribute->min_int(); - int8_t max = (int8_t)attribute->max_int(); + std::vector min_int_data, max_int_data; + TosaSerializationHandler::ConvertU8toI32(attribute->min_val(), /* size = */ 1, min_int_data); + TosaSerializationHandler::ConvertU8toI32(attribute->max_val(), /* size = */ 1, max_int_data); + int8_t min = (int8_t)min_int_data[0]; + int8_t max = (int8_t)max_int_data[0]; ERROR_IF(max < min, "OpClamp: max smaller than min"); this->fcn = [min, max](int8_t a) -> int8_t { return a <= min ? min : a >= max ? max : a; }; } case TOSA_REF_TYPE_INT16: { - int16_t min = (int16_t)attribute->min_int(); - int16_t max = (int16_t)attribute->max_int(); + std::vector min_int_data, max_int_data; + TosaSerializationHandler::ConvertU8toI32(attribute->min_val(), /* size = */ 1, min_int_data); + TosaSerializationHandler::ConvertU8toI32(attribute->max_val(), /* size = */ 1, max_int_data); + int16_t min = (int16_t)min_int_data[0]; + int16_t max = (int16_t)max_int_data[0]; ERROR_IF(max < min, "OpClamp: max smaller than min"); this->fcn = [min, max](int16_t a) -> int16_t { return a <= min ? min : a >= max ? max : a; }; -- cgit v1.2.1