summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtimes/neurun/backend/acl_neon/KernelGenerator.cc17
-rw-r--r--runtimes/neurun/backend/acl_neon/KernelGenerator.h1
-rw-r--r--runtimes/neurun/backend/acl_neon/ShapeFixer.cc2
-rw-r--r--runtimes/neurun/backend/acl_neon/ShapeFixer.h1
4 files changed, 21 insertions, 0 deletions
diff --git a/runtimes/neurun/backend/acl_neon/KernelGenerator.cc b/runtimes/neurun/backend/acl_neon/KernelGenerator.cc
index a05fa8b30..169b884dd 100644
--- a/runtimes/neurun/backend/acl_neon/KernelGenerator.cc
+++ b/runtimes/neurun/backend/acl_neon/KernelGenerator.cc
@@ -314,6 +314,23 @@ void KernelGenerator::visit(const model::operation::DepthwiseConv2DNode &node)
}
}
+void KernelGenerator::visit(const model::operation::DequantizeNode &node)
+{
+ const auto output_index{node.getOutputs().at(0)};
+ const auto input_index{node.getInputs().at(model::operation::DequantizeNode::Input::INPUT)};
+
+ auto output_alloc = _tensor_builder->at(output_index).get();
+ auto input_alloc = _tensor_builder->at(input_index).get();
+
+ auto fn = nnfw::cpp14::make_unique<::arm_compute::NEDequantizationLayer>();
+
+ fn->configure(input_alloc->handle(), output_alloc->handle());
+
+ auto acl_fn = asAclFunction(std::move(fn));
+
+ _execution_builder->append(std::move(acl_fn));
+}
+
void KernelGenerator::visit(const model::operation::MaxPool2DNode &node)
{
const auto ofm_index{node.getOutputs().at(0)};
diff --git a/runtimes/neurun/backend/acl_neon/KernelGenerator.h b/runtimes/neurun/backend/acl_neon/KernelGenerator.h
index 64e8a6df1..ee28061ae 100644
--- a/runtimes/neurun/backend/acl_neon/KernelGenerator.h
+++ b/runtimes/neurun/backend/acl_neon/KernelGenerator.h
@@ -40,6 +40,7 @@ public:
void visit(const model::operation::ArgMaxNode &) override;
void visit(const model::operation::Conv2DNode &) override;
void visit(const model::operation::DepthwiseConv2DNode &) override;
+ void visit(const model::operation::DequantizeNode &) override;
void visit(const model::operation::MaxPool2DNode &) override;
void visit(const model::operation::MeanNode &) override;
void visit(const model::operation::AvgPool2DNode &) override;
diff --git a/runtimes/neurun/backend/acl_neon/ShapeFixer.cc b/runtimes/neurun/backend/acl_neon/ShapeFixer.cc
index da5287648..1ce27ef39 100644
--- a/runtimes/neurun/backend/acl_neon/ShapeFixer.cc
+++ b/runtimes/neurun/backend/acl_neon/ShapeFixer.cc
@@ -67,6 +67,8 @@ void ShapeFixer::visit(const model::operation::Conv2DNode &) { /* DO NOTHING */}
void ShapeFixer::visit(const model::operation::DepthwiseConv2DNode &) { /* DO NOTHING */}
+void ShapeFixer::visit(const model::operation::DequantizeNode &) { /* DO NOTHING */}
+
void ShapeFixer::visit(const model::operation::MaxPool2DNode &) { /* DO NOTHING */}
void ShapeFixer::visit(const model::operation::MeanNode &) { /* DO NOTHING */}
diff --git a/runtimes/neurun/backend/acl_neon/ShapeFixer.h b/runtimes/neurun/backend/acl_neon/ShapeFixer.h
index 1d3466334..f50efdc1a 100644
--- a/runtimes/neurun/backend/acl_neon/ShapeFixer.h
+++ b/runtimes/neurun/backend/acl_neon/ShapeFixer.h
@@ -41,6 +41,7 @@ public:
void visit(const model::operation::ArgMaxNode &) override;
void visit(const model::operation::Conv2DNode &) override;
void visit(const model::operation::DepthwiseConv2DNode &) override;
+ void visit(const model::operation::DequantizeNode &) override;
void visit(const model::operation::MaxPool2DNode &) override;
void visit(const model::operation::MeanNode &) override;
void visit(const model::operation::AvgPool2DNode &) override;