From 787606544db8664ff42a31958f554fe7088427b5 Mon Sep 17 00:00:00 2001 From: Tai Ly Date: Fri, 7 Jul 2023 23:36:04 +0000 Subject: [tosa_mlir_translator] Fix Pad const attr type This fixes serialization and deserialization of Pad Operator's constant value attributes that is integer data types other than I32 also fixed serialization of F16 constants to not crash, found in testing Signed-off-by: Tai Ly Change-Id: Ic3987aad0e11b612de591eaeecd308d599d174e1 --- src/TosaSerialize.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/TosaSerialize.cpp') diff --git a/src/TosaSerialize.cpp b/src/TosaSerialize.cpp index a3e21f9..fec9f17 100644 --- a/src/TosaSerialize.cpp +++ b/src/TosaSerialize.cpp @@ -470,8 +470,8 @@ TosaSerializationOperatorBuilder::build( op.getAttr(llvm::StringRef("value")).dyn_cast(); if (dense_attr) { - for (auto val : dense_attr.getValues()) { - data.push_back(val); + for (auto val : dense_attr.getValues()) { + data.push_back(val.convertToFloat()); } } else if (val_attr) { data.push_back((float)val_attr.getValueAsDouble()); @@ -931,9 +931,7 @@ TosaSerializationOperatorBuilder::build( paddings.push_back(val); } - auto quant_info = pad_op.getQuantizationInfoAttr(); - // pad_const includes the zero point if the tensor uses a zero point. - int32_t pad_const_int = quant_info ? quant_info.getInputZp() : 0; + int32_t pad_const_int = 0; float pad_const_fp = 0.f; if (auto tensor = pad_op.getPadConst()) { @@ -946,10 +944,12 @@ TosaSerializationOperatorBuilder::build( auto elementTy = attr.getElementType(); if (elementTy.isa()) { - pad_const_int = quant_info ? *attr.value_begin() - : *attr.value_begin(); + pad_const_int = (attr.getValues()[0]).getSExtValue(); } else if (elementTy.isa()) { - pad_const_fp = *attr.value_begin(); + pad_const_fp = (attr.getValues()[0]).convertToFloat(); + } else { + op.emitOpError("Unknown const attribute"); + return nullptr; } } -- cgit v1.2.1