diff options
Diffstat (limited to 'src/TosaSerialize.cpp')
-rw-r--r-- | src/TosaSerialize.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/TosaSerialize.cpp b/src/TosaSerialize.cpp index ea0c32f..51923ea 100644 --- a/src/TosaSerialize.cpp +++ b/src/TosaSerialize.cpp @@ -944,19 +944,15 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::PadOp>( std::string input_name = GetTensorName(op.getOperand(0)); std::string output_name = GetTensorName(op.getResult(0)); - // Match padding tensor as compile-time constant attribute - // TODO: fix when MLIR dialect changes - mlir::ElementsAttr paddings_elems; - if (!matchPattern(op.getOperand(1), m_Constant(&paddings_elems))) - return nullptr; + auto padding = + op.getAttr("padding").dyn_cast<mlir::DenseI32ArrayAttr>().asArrayRef(); + auto pad_const = + op.getAttr("pad_const").dyn_cast<mlir::DenseIntOrFPElementsAttr>(); - std::vector<int> paddings; - for (int32_t val : paddings_elems.getValues<int32_t>()) { - paddings.push_back(val); - } + assert(pad_const.getNumElements() == 1); - TosaPadAttribute attribute(paddings, 0 /* pad_const_int */, - 0.0f /* pad_const_fp */); + TosaPadAttribute attribute(padding, *pad_const.value_begin<int32_t>(), + *pad_const.value_begin<float>()); TosaSerializationOperator *tyop = new TosaSerializationOperator( Op_PAD, Attribute_PadAttribute, &attribute, |