IVGCVSW-1900 : CL backend folder structure
[platform/upstream/armnn.git] / src / backends / cl / workloads / ClPermuteWorkload.hpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #pragma once
7
8 #include <backends/Workload.hpp>
9 #include <backends/WorkloadData.hpp>
10
11 #include <armnn/TypesUtils.hpp>
12 #include <arm_compute/runtime/CL/functions/CLPermute.h>
13
14 #include <string>
15
16 namespace armnn
17 {
18
19 arm_compute::Status ClPermuteWorkloadValidate(const PermuteDescriptor& descriptor);
20
21 template<armnn::DataType... DataTypes>
22 class ClPermuteWorkload : public TypedWorkload<PermuteQueueDescriptor, DataTypes...>
23 {
24 public:
25     static const std::string& GetName()
26     {
27         static const std::string name = std::string("ClPermuteWorkload");
28         return name;
29     }
30
31     ClPermuteWorkload(const PermuteQueueDescriptor& descriptor, const WorkloadInfo& info);
32     void Execute() const override;
33
34 private:
35     using TypedWorkload<PermuteQueueDescriptor, DataTypes...>::m_Data;
36     mutable arm_compute::CLPermute m_PermuteFunction;
37 };
38
39 using ClPermuteFloatWorkload = ClPermuteWorkload<DataType::Float16, DataType::Float32>;
40 using ClPermuteUint8Workload = ClPermuteWorkload<DataType::QuantisedAsymm8>;
41
42 } // namespace armnn