blob: a85816be38e9d1df0ded131bfc1ad37c6f9f5446 [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
6#pragma once
7
David Beck0dbe0ee2018-09-24 15:59:27 +01008#include <backends/Workload.hpp>
9#include <backends/WorkloadData.hpp>
10#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
telsoa014fcda012018-03-09 14:13:49 +000011
12#include <armnn/TypesUtils.hpp>
13#include <arm_compute/runtime/NEON/functions/NEPermute.h>
14
15#include <string>
16
17namespace armnn
18{
19arm_compute::Status NeonPermuteWorkloadValidate(const TensorInfo& input, const TensorInfo& output,
20 const PermuteDescriptor& descriptor);
21
telsoa01c577f2c2018-08-31 09:22:23 +010022template <armnn::DataType... DataTypes>
23class NeonPermuteWorkload : public TypedWorkload<PermuteQueueDescriptor, DataTypes...>
telsoa014fcda012018-03-09 14:13:49 +000024{
25public:
26 static const std::string& GetName()
27 {
telsoa01c577f2c2018-08-31 09:22:23 +010028 static const std::string name = std::string("NeonPermuteWorkload");
telsoa014fcda012018-03-09 14:13:49 +000029 return name;
30 }
31
32 NeonPermuteWorkload(const PermuteQueueDescriptor& descriptor, const WorkloadInfo& info);
33 void Execute() const override;
34
35private:
telsoa01c577f2c2018-08-31 09:22:23 +010036 using TypedWorkload<PermuteQueueDescriptor, DataTypes...>::m_Data;
telsoa014fcda012018-03-09 14:13:49 +000037 mutable arm_compute::NEPermute m_PermuteFunction;
38};
39
telsoa01c577f2c2018-08-31 09:22:23 +010040using NeonPermuteFloatWorkload = NeonPermuteWorkload<DataType::Float16, DataType::Float32>;
telsoa014fcda012018-03-09 14:13:49 +000041using NeonPermuteUint8Workload = NeonPermuteWorkload<DataType::QuantisedAsymm8>;
42
telsoa01c577f2c2018-08-31 09:22:23 +010043} // namespace armnn