diff options
-rw-r--r-- | runtimes/neurun/backend/acl_neon/KernelGenerator.cc | 17 | ||||
-rw-r--r-- | runtimes/neurun/backend/acl_neon/KernelGenerator.h | 1 | ||||
-rw-r--r-- | runtimes/neurun/backend/acl_neon/ShapeFixer.cc | 2 | ||||
-rw-r--r-- | runtimes/neurun/backend/acl_neon/ShapeFixer.h | 1 |
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; |