diff options
Diffstat (limited to 'src/TosaSerialize.cpp')
-rw-r--r-- | src/TosaSerialize.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
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<mlir::tosa::ConstOp>( op.getAttr(llvm::StringRef("value")).dyn_cast<mlir::FloatAttr>(); if (dense_attr) { - for (auto val : dense_attr.getValues<float>()) { - data.push_back(val); + for (auto val : dense_attr.getValues<mlir::APFloat>()) { + data.push_back(val.convertToFloat()); } } else if (val_attr) { data.push_back((float)val_attr.getValueAsDouble()); @@ -931,9 +931,7 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::PadOp>( 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<mlir::tosa::PadOp>( auto elementTy = attr.getElementType(); if (elementTy.isa<mlir::IntegerType>()) { - pad_const_int = quant_info ? *attr.value_begin<int8_t>() - : *attr.value_begin<int32_t>(); + pad_const_int = (attr.getValues<mlir::APInt>()[0]).getSExtValue(); } else if (elementTy.isa<mlir::FloatType>()) { - pad_const_fp = *attr.value_begin<float>(); + pad_const_fp = (attr.getValues<mlir::APFloat>()[0]).convertToFloat(); + } else { + op.emitOpError("Unknown const attribute"); + return nullptr; } } |