From cc61be36c3b0f5cd1ea719e129a54fd48a6ee9a2 Mon Sep 17 00:00:00 2001 From: Kevin Cheng Date: Thu, 14 Oct 2021 17:09:57 -0700 Subject: More ERROR_IF supports - Also delay tensor allocation after operator being validated ERROR_IF can be caught first before 0 or negative dimension set the graph_status to UNPREDICTABLE - Rescale, Argmax, FullyConnected, Matmul, Pad, Reshape, Slice, Transpose, Clamp, Concat, Equal, Greater, GreaterEqual, Table Signed-off-by: Kevin Cheng Change-Id: I4e1b3e5794fe195ce1a37e28443ae584645a3b91 --- reference_model/src/ops/activation_funcs.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 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 21677d5..c344bcb 100644 --- a/reference_model/src/ops/activation_funcs.cc +++ b/reference_model/src/ops/activation_funcs.cc @@ -25,14 +25,15 @@ using namespace tosa; template int OpClamp::register_fcn() { - switch (Dtype) { case DType_FLOAT: { InEigenType min = (InEigenType)attribute->min_fp(); InEigenType max = (InEigenType)attribute->max_fp(); - this->fcn = [min, max](InEigenType a) -> OutEigenType { return a <= min ? min : a >= max ? max : a; }; + 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 DType_INT8: @@ -40,7 +41,8 @@ int OpClamp::register_fcn() { InEigenType min = (InEigenType)attribute->min_int(); InEigenType max = (InEigenType)attribute->max_int(); - this->fcn = [min, max](InEigenType a) -> OutEigenType { return a <= min ? min : a >= max ? max : a; }; + 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; default: -- cgit v1.2.1