aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/TosaSerialize.cpp18
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,