From a5ec9006827a5c5c0dc67b759fe82ad771d86ec7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Thu, 6 Sep 2018 19:36:26 +0900 Subject: [PATCH] [enco] Build ANN IR for PadF op (#1392) This commit extends ANN IR builder to support PadF op. Signed-off-by: Jonghyun Park --- contrib/enco/core/src/Transforms/Split.cpp | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/contrib/enco/core/src/Transforms/Split.cpp b/contrib/enco/core/src/Transforms/Split.cpp index 00e1317..706dbe3 100644 --- a/contrib/enco/core/src/Transforms/Split.cpp +++ b/contrib/enco/core/src/Transforms/Split.cpp @@ -83,6 +83,12 @@ Compatibility ANNGroupBuilder::kind(const coco::Instr *ins) const // TODO Check data layout return true; } + + bool visit(const coco::PadF *) override + { + // TODO Check data layout + return true; + } }; return ins->accept(CompatibilityCheck{}) ? COMPATIBLE : INCOMPATIBLE; @@ -329,6 +335,33 @@ public: {ifm, left, right, top, bottom, hstride, vstride, width, height, fuse}, {ofm}); } + else if (auto op = unit->op()->asPadF()) + { + using nncc::core::ADT::tensor::Shape; + + auto ifm = _binder->addOperand(unit->ifm()); + auto pad = _binder->addOperand(Shape{4, 2}); + { + std::vector values; + values.resize(8); + // For 'N' + values.at(0) = values.at(1) = 0; + // For 'H' + values.at(2) = op->pad()->top(); + values.at(3) = op->pad()->bottom(); + // For 'W' + values.at(4) = op->pad()->left(); + values.at(5) = op->pad()->right(); + // For 'C' + values.at(6) = values.at(7) = 0; + + _binder->setOperand(pad, values.begin(), values.end()); + } + + auto ofm = _binder->addOperand(unit->ofm()); + + _binder->addOperation(ann::Operation::Code::PAD, {ifm, pad}, {ofm}); + } else { throw std::runtime_error{"Not supported, yet"}; -- 2.7.4