blob: 48ec753546fd6d9f4235cf9ee624cba7ae6a6599 [file] [log] [blame]
telsoa014fcda012018-03-09 14:13:49 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beckecb56cd2018-09-05 12:52:57 +01003// SPDX-License-Identifier: MIT
telsoa014fcda012018-03-09 14:13:49 +00004//
5#pragma once
6
David Beck0dbe0ee2018-09-24 15:59:27 +01007#include <backends/Workload.hpp>
Nattapat Chaimanowong177d8d22018-10-16 13:21:27 +01008#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +01009#include <backends/neon/NeonTensorHandle.hpp>
10#include <backends/neon/NeonTimer.hpp>
Nattapat Chaimanowong177d8d22018-10-16 13:21:27 +010011#include <backends/CpuTensorHandle.hpp>
David Beck0dbe0ee2018-09-24 15:59:27 +010012#include <arm_compute/runtime/NEON/NEFunctions.h>
telsoa014fcda012018-03-09 14:13:49 +000013
Nattapat Chaimanowong177d8d22018-10-16 13:21:27 +010014#include <Half.hpp>
telsoa014fcda012018-03-09 14:13:49 +000015
Nattapat Chaimanowong177d8d22018-10-16 13:21:27 +010016#define ARMNN_SCOPED_PROFILING_EVENT_NEON(name) \
telsoa01c577f2c2018-08-31 09:22:23 +010017 ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(armnn::Compute::CpuAcc, \
18 name, \
Nina Drozd69851b52018-09-21 18:42:09 +010019 armnn::NeonTimer(), \
20 armnn::WallClockTimer())
Nattapat Chaimanowong177d8d22018-10-16 13:21:27 +010021
22using namespace armnn::armcomputetensorutils;
23
24namespace armnn
25{
26
27template <typename T>
28void CopyArmComputeTensorData(arm_compute::Tensor& dstTensor, const T* srcData)
29{
30 InitialiseArmComputeTensorEmpty(dstTensor);
31 CopyArmComputeITensorData(srcData, dstTensor);
32}
33
34inline void InitializeArmComputeTensorData(arm_compute::Tensor& tensor,
35 const ConstCpuTensorHandle* handle)
36{
37 BOOST_ASSERT(handle);
38
39 switch(handle->GetTensorInfo().GetDataType())
40 {
41 case DataType::Float16:
42 CopyArmComputeTensorData(tensor, handle->GetConstTensor<armnn::Half>());
43 break;
44 case DataType::Float32:
45 CopyArmComputeTensorData(tensor, handle->GetConstTensor<float>());
46 break;
47 case DataType::QuantisedAsymm8:
48 CopyArmComputeTensorData(tensor, handle->GetConstTensor<uint8_t>());
49 break;
50 case DataType::Signed32:
51 CopyArmComputeTensorData(tensor, handle->GetConstTensor<int32_t>());
52 break;
53 default:
54 BOOST_ASSERT_MSG(false, "Unexpected tensor type.");
55 }
56};
57
58} //namespace armnn