aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/backends/NeonTensorHandle.hpp
diff options
context:
space:
mode:
authortelsoa01 <telmo.soares@arm.com>2018-03-09 14:13:49 +0000
committertelsoa01 <telmo.soares@arm.com>2018-03-09 14:13:49 +0000
commit4fcda0101ec3d110c1d6d7bee5c83416b645528a (patch)
treec9a70aeb2887006160c1b3d265c27efadb7bdbae /src/armnn/backends/NeonTensorHandle.hpp
downloadarmnn-4fcda0101ec3d110c1d6d7bee5c83416b645528a.tar.gz
Release 18.02
Change-Id: Id3c11dc5ee94ef664374a988fcc6901e9a232fa6
Diffstat (limited to 'src/armnn/backends/NeonTensorHandle.hpp')
-rw-r--r--src/armnn/backends/NeonTensorHandle.hpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/armnn/backends/NeonTensorHandle.hpp b/src/armnn/backends/NeonTensorHandle.hpp
new file mode 100644
index 0000000000..684a5e1bfc
--- /dev/null
+++ b/src/armnn/backends/NeonTensorHandle.hpp
@@ -0,0 +1,80 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// See LICENSE file in the project root for full license information.
+//
+#pragma once
+
+#include "OutputHandler.hpp"
+#include "ArmComputeTensorUtils.hpp"
+
+#include <arm_compute/runtime/Tensor.h>
+#include <arm_compute/runtime/SubTensor.h>
+#include <arm_compute/core/TensorShape.h>
+#include <arm_compute/core/Coordinates.h>
+
+
+namespace armnn
+{
+
+class INeonTensorHandle : public ITensorHandle
+{
+public:
+ virtual arm_compute::ITensor& GetTensor() = 0;
+ virtual arm_compute::ITensor const& GetTensor() const = 0;
+ virtual arm_compute::DataType GetDataType() const = 0;
+};
+
+class NeonTensorHandle : public INeonTensorHandle
+{
+public:
+ NeonTensorHandle(const TensorInfo& tensorInfo)
+ {
+ armnn::armcomputetensorutils::BuildArmComputeTensor(m_Tensor, tensorInfo);
+ }
+
+ arm_compute::ITensor& GetTensor() override { return m_Tensor; }
+ arm_compute::ITensor const& GetTensor() const override { return m_Tensor; }
+ virtual void Allocate() override
+ {
+ armnn::armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_Tensor);
+ };
+
+ virtual ITensorHandle::Type GetType() const override { return ITensorHandle::Neon; }
+
+ virtual arm_compute::DataType GetDataType() const override
+ {
+ return m_Tensor.info()->data_type();
+ }
+
+private:
+ arm_compute::Tensor m_Tensor;
+};
+
+class NeonSubTensorHandle : public INeonTensorHandle
+{
+public:
+ NeonSubTensorHandle(arm_compute::ITensor& parent,
+ const arm_compute::TensorShape& shape,
+ const arm_compute::Coordinates& coords)
+ : m_Tensor(&parent, shape, coords)
+ {
+ }
+
+ arm_compute::ITensor& GetTensor() override { return m_Tensor; }
+ arm_compute::ITensor const& GetTensor() const override { return m_Tensor; }
+ virtual void Allocate() override
+ {
+ };
+
+ virtual ITensorHandle::Type GetType() const override { return ITensorHandle::Neon; }
+
+ virtual arm_compute::DataType GetDataType() const override
+ {
+ return m_Tensor.info()->data_type();
+ }
+
+private:
+ arm_compute::SubTensor m_Tensor;
+};
+
+}