xref: /aosp_15_r20/external/armnn/delegate/test/TransposeTest.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #include "TransposeTestHelper.hpp"
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <armnn_delegate.hpp>
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
11*89c4ff92SAndroid Build Coastguard Worker #include <flatbuffers/flatbuffers.h>
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker namespace armnnDelegate
14*89c4ff92SAndroid Build Coastguard Worker {
15*89c4ff92SAndroid Build Coastguard Worker 
TransposeFP32Test(std::vector<armnn::BackendId> & backends)16*89c4ff92SAndroid Build Coastguard Worker void TransposeFP32Test(std::vector<armnn::BackendId>& backends)
17*89c4ff92SAndroid Build Coastguard Worker {
18*89c4ff92SAndroid Build Coastguard Worker     // set test input data
19*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> input0Shape {4, 2, 3};
20*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputPermVecShape {3};
21*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> outputShape {3, 4, 2};
22*89c4ff92SAndroid Build Coastguard Worker 
23*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> input0Values = {0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11,
24*89c4ff92SAndroid Build Coastguard Worker                                        12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
25*89c4ff92SAndroid Build Coastguard Worker     std::vector<int32_t> inputPermVec = {2, 0, 1};
26*89c4ff92SAndroid Build Coastguard Worker     std::vector<float> expectedOutputValues = {0, 3, 6, 9, 12, 15, 18, 21, 1, 4, 7, 10,
27*89c4ff92SAndroid Build Coastguard Worker                                                13, 16, 19, 22, 2, 5, 8, 11, 14, 17, 20, 23};
28*89c4ff92SAndroid Build Coastguard Worker 
29*89c4ff92SAndroid Build Coastguard Worker     TransposeTest<float>(backends,
30*89c4ff92SAndroid Build Coastguard Worker                          input0Shape,
31*89c4ff92SAndroid Build Coastguard Worker                          inputPermVecShape,
32*89c4ff92SAndroid Build Coastguard Worker                          outputShape,
33*89c4ff92SAndroid Build Coastguard Worker                          input0Values,
34*89c4ff92SAndroid Build Coastguard Worker                          inputPermVec,
35*89c4ff92SAndroid Build Coastguard Worker                          expectedOutputValues);
36*89c4ff92SAndroid Build Coastguard Worker }
37*89c4ff92SAndroid Build Coastguard Worker 
38*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE ("Transpose_GpuAccTests")
39*89c4ff92SAndroid Build Coastguard Worker {
40*89c4ff92SAndroid Build Coastguard Worker 
41*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Transpose_Float32_GpuAcc_Test")
42*89c4ff92SAndroid Build Coastguard Worker {
43*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
44*89c4ff92SAndroid Build Coastguard Worker     TransposeFP32Test(backends);
45*89c4ff92SAndroid Build Coastguard Worker }
46*89c4ff92SAndroid Build Coastguard Worker 
47*89c4ff92SAndroid Build Coastguard Worker }
48*89c4ff92SAndroid Build Coastguard Worker 
49*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE ("Transpose_CpuAccTests")
50*89c4ff92SAndroid Build Coastguard Worker {
51*89c4ff92SAndroid Build Coastguard Worker 
52*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Transpose_Float32_CpuAcc_Test")
53*89c4ff92SAndroid Build Coastguard Worker {
54*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
55*89c4ff92SAndroid Build Coastguard Worker     TransposeFP32Test(backends);
56*89c4ff92SAndroid Build Coastguard Worker }
57*89c4ff92SAndroid Build Coastguard Worker 
58*89c4ff92SAndroid Build Coastguard Worker }
59*89c4ff92SAndroid Build Coastguard Worker 
60*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE ("Transpose_CpuRefTests")
61*89c4ff92SAndroid Build Coastguard Worker {
62*89c4ff92SAndroid Build Coastguard Worker 
63*89c4ff92SAndroid Build Coastguard Worker TEST_CASE ("Transpose_Float32_CpuRef_Test")
64*89c4ff92SAndroid Build Coastguard Worker {
65*89c4ff92SAndroid Build Coastguard Worker     std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
66*89c4ff92SAndroid Build Coastguard Worker     TransposeFP32Test(backends);
67*89c4ff92SAndroid Build Coastguard Worker }
68*89c4ff92SAndroid Build Coastguard Worker 
69*89c4ff92SAndroid Build Coastguard Worker }
70*89c4ff92SAndroid Build Coastguard Worker 
71*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnDelegate
72