xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/test/DeserializeRank.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "ParserFlatbuffersSerializeFixture.hpp"
7 #include <armnnDeserializer/IDeserializer.hpp>
8 
9 #include <string>
10 
11 TEST_SUITE("Deserializer_Rank")
12 {
13 struct RankFixture : public ParserFlatbuffersSerializeFixture
14 {
RankFixtureRankFixture15     explicit RankFixture(const std::string &inputShape,
16                          const std::string &dataType)
17     {
18         m_JsonString = R"(
19         {
20             inputIds: [0],
21             outputIds: [2],
22               layers: [
23                {
24                  layer_type: "InputLayer",
25                  layer: {
26                    base: {
27                      base: {
28                        layerName: "",
29                        layerType: "Input",
30                        inputSlots: [
31 
32                        ],
33                        outputSlots: [
34                          {
35                            tensorInfo: {
36                              dimensions: )" + inputShape + R"(,
37                              dataType: )" + dataType + R"(,
38                              quantizationScale: 0.0
39                            }
40                          }
41                        ]
42                      }
43                    }
44                  }
45                },
46                {
47                  layer_type: "RankLayer",
48                  layer: {
49                    base: {
50                      index: 1,
51                      layerName: "rank",
52                      layerType: "Rank",
53                      inputSlots: [
54                        {
55                          connection: {
56                            sourceLayerIndex: 0,
57                            outputSlotIndex: 0
58                          }
59                        }
60                      ],
61                      outputSlots: [
62                        {
63                          tensorInfo: {
64                            dimensions: [ 1 ],
65                            dataType: "Signed32",
66                            quantizationScale: 0.0,
67                            dimensionality: 2
68                          }
69                        }
70                      ]
71                    }
72                  }
73                },
74                {
75                  layer_type: "OutputLayer",
76                  layer: {
77                    base: {
78                      base: {
79                        index: 2,
80                        layerName: "",
81                        layerType: "Output",
82                        inputSlots: [
83                          {
84                            connection: {
85                              sourceLayerIndex: 1,
86                              outputSlotIndex: 0
87                            }
88                          }
89                        ],
90                        outputSlots: []
91                      }
92                    }
93                  }
94                }
95              ],
96          }
97      )";
98         Setup();
99     }
100 };
101 
102 struct SimpleRankDimSize1Fixture : RankFixture
103 {
SimpleRankDimSize1FixtureSimpleRankDimSize1Fixture104     SimpleRankDimSize1Fixture() : RankFixture("[ 8 ]", "QSymmS16") {}
105 };
106 
107 struct SimpleRankDimSize2Fixture : RankFixture
108 {
SimpleRankDimSize2FixtureSimpleRankDimSize2Fixture109     SimpleRankDimSize2Fixture() : RankFixture("[ 3, 3 ]", "QSymmS8") {}
110 };
111 
112 struct SimpleRankDimSize3Fixture : RankFixture
113 {
SimpleRankDimSize3FixtureSimpleRankDimSize3Fixture114     SimpleRankDimSize3Fixture() : RankFixture("[ 2, 2, 1 ]", "Signed32") {}
115 };
116 
117 struct SimpleRankDimSize4Fixture : RankFixture
118 {
SimpleRankDimSize4FixtureSimpleRankDimSize4Fixture119     SimpleRankDimSize4Fixture() : RankFixture("[ 2, 2, 1, 1 ]", "Float32") {}
120 };
121 
122 TEST_CASE_FIXTURE(SimpleRankDimSize1Fixture, "RankDimSize1Float16")
123 {
124     RunTest<1, armnn::DataType::QSymmS16, armnn::DataType::Signed32>( 0,
125                                                                       { 1, 2, 3, 4, 5, 6, 7, 8 },
126                                                                       { 1 });
127 }
128 
129 TEST_CASE_FIXTURE(SimpleRankDimSize2Fixture, "RankDimSize2QAsymmU8")
130 {
131     RunTest<1, armnn::DataType::QSymmS8, armnn::DataType::Signed32>( 0,
132                                                                     { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
133                                                                     { 2 });
134 }
135 
136 TEST_CASE_FIXTURE(SimpleRankDimSize3Fixture, "RankDimSize3Signed32")
137 {
138     RunTest<1, armnn::DataType::Signed32, armnn::DataType::Signed32>( 0,
139                                                                     { 111, 85, 226, 3 },
140                                                                     { 3 });
141 }
142 
143 TEST_CASE_FIXTURE(SimpleRankDimSize4Fixture, "RankDimSize4Float32")
144 {
145     RunTest<1, armnn::DataType::Float32, armnn::DataType::Signed32>( 0,
146                                                                    { 111, 85, 226, 3 },
147                                                                    { 4 });
148 }
149 
150 }