xref: /aosp_15_r20/external/armnn/src/backends/reference/workloads/RefTransposeWorkload.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include "RefBaseWorkload.hpp"
9 
10 #include <armnn/TypesUtils.hpp>
11 
12 namespace armnn
13 {
14 
15 template <armnn::DataType DataType>
16 class RefTransposeWorkload : public TypedWorkload<TransposeQueueDescriptor, DataType>
17 {
18 public:
GetName()19     static const std::string& GetName()
20     {
21         static const std::string name = std::string("RefTranspose") + GetDataTypeName(DataType) + "Workload";
22         return name;
23     }
24 
25     using TypedWorkload<TransposeQueueDescriptor, DataType>::m_Data;
26     using TypedWorkload<TransposeQueueDescriptor, DataType>::TypedWorkload;
27     void Execute() const override;
28     void ExecuteAsync(ExecutionData& executionData)  override;
29 private:
30     void Execute(std::vector<ITensorHandle*> inputs, std::vector<ITensorHandle*> outputs) const;
31 };
32 
33 using RefTransposeBFloat16Workload = RefTransposeWorkload<DataType::BFloat16>;
34 using RefTransposeFloat16Workload = RefTransposeWorkload<DataType::Float16>;
35 using RefTransposeFloat32Workload = RefTransposeWorkload<DataType::Float32>;
36 using RefTransposeQAsymmS8Workload = RefTransposeWorkload<DataType::QAsymmS8>;
37 using RefTransposeQAsymm8Workload = RefTransposeWorkload<DataType::QAsymmU8>;
38 using RefTransposeQSymm16Workload = RefTransposeWorkload<DataType::QSymmS16>;
39 
40 } //namespace armnn