1 // clang-format off
2 // Generated file (from: rnn_relaxed.mod.py). Do not edit
3 // Create the model
createTestModel()4 Model createTestModel() {
5 const std::vector<Operand> operands = {
6 {
7 .type = OperandType::TENSOR_FLOAT32,
8 .dimensions = {2, 8},
9 .numberOfConsumers = 1,
10 .scale = 0.0f,
11 .zeroPoint = 0,
12 .lifetime = OperandLifeTime::MODEL_INPUT,
13 .location = {.poolIndex = 0, .offset = 0, .length = 0},
14 },
15 {
16 .type = OperandType::TENSOR_FLOAT32,
17 .dimensions = {16, 8},
18 .numberOfConsumers = 1,
19 .scale = 0.0f,
20 .zeroPoint = 0,
21 .lifetime = OperandLifeTime::MODEL_INPUT,
22 .location = {.poolIndex = 0, .offset = 0, .length = 0},
23 },
24 {
25 .type = OperandType::TENSOR_FLOAT32,
26 .dimensions = {16, 16},
27 .numberOfConsumers = 1,
28 .scale = 0.0f,
29 .zeroPoint = 0,
30 .lifetime = OperandLifeTime::MODEL_INPUT,
31 .location = {.poolIndex = 0, .offset = 0, .length = 0},
32 },
33 {
34 .type = OperandType::TENSOR_FLOAT32,
35 .dimensions = {16},
36 .numberOfConsumers = 1,
37 .scale = 0.0f,
38 .zeroPoint = 0,
39 .lifetime = OperandLifeTime::MODEL_INPUT,
40 .location = {.poolIndex = 0, .offset = 0, .length = 0},
41 },
42 {
43 .type = OperandType::TENSOR_FLOAT32,
44 .dimensions = {2, 16},
45 .numberOfConsumers = 1,
46 .scale = 0.0f,
47 .zeroPoint = 0,
48 .lifetime = OperandLifeTime::MODEL_INPUT,
49 .location = {.poolIndex = 0, .offset = 0, .length = 0},
50 },
51 {
52 .type = OperandType::INT32,
53 .dimensions = {},
54 .numberOfConsumers = 1,
55 .scale = 0.0f,
56 .zeroPoint = 0,
57 .lifetime = OperandLifeTime::CONSTANT_COPY,
58 .location = {.poolIndex = 0, .offset = 0, .length = 4},
59 },
60 {
61 .type = OperandType::TENSOR_FLOAT32,
62 .dimensions = {2, 16},
63 .numberOfConsumers = 0,
64 .scale = 0.0f,
65 .zeroPoint = 0,
66 .lifetime = OperandLifeTime::MODEL_OUTPUT,
67 .location = {.poolIndex = 0, .offset = 0, .length = 0},
68 },
69 {
70 .type = OperandType::TENSOR_FLOAT32,
71 .dimensions = {2, 16},
72 .numberOfConsumers = 0,
73 .scale = 0.0f,
74 .zeroPoint = 0,
75 .lifetime = OperandLifeTime::MODEL_OUTPUT,
76 .location = {.poolIndex = 0, .offset = 0, .length = 0},
77 }
78 };
79
80 const std::vector<Operation> operations = {
81 {
82 .type = OperationType::RNN,
83 .inputs = {0, 1, 2, 3, 4, 5},
84 .outputs = {6, 7},
85 }
86 };
87
88 const std::vector<uint32_t> inputIndexes = {0, 1, 2, 3, 4};
89 const std::vector<uint32_t> outputIndexes = {6, 7};
90 std::vector<uint8_t> operandValues = {
91 1, 0, 0, 0
92 };
93 const std::vector<hidl_memory> pools = {};
94
95 return {
96 .operands = operands,
97 .operations = operations,
98 .inputIndexes = inputIndexes,
99 .outputIndexes = outputIndexes,
100 .operandValues = operandValues,
101 .pools = pools,
102 .relaxComputationFloat32toFloat16 = true,
103 };
104 }
105
is_ignored(int i)106 inline bool is_ignored(int i) {
107 static std::set<int> ignore = {0};
108 return ignore.find(i) != ignore.end();
109 }
110
111 // Create the model
createTestModel_dynamic_output_shape()112 Model createTestModel_dynamic_output_shape() {
113 const std::vector<Operand> operands = {
114 {
115 .type = OperandType::TENSOR_FLOAT32,
116 .dimensions = {2, 8},
117 .numberOfConsumers = 1,
118 .scale = 0.0f,
119 .zeroPoint = 0,
120 .lifetime = OperandLifeTime::MODEL_INPUT,
121 .location = {.poolIndex = 0, .offset = 0, .length = 0},
122 },
123 {
124 .type = OperandType::TENSOR_FLOAT32,
125 .dimensions = {16, 8},
126 .numberOfConsumers = 1,
127 .scale = 0.0f,
128 .zeroPoint = 0,
129 .lifetime = OperandLifeTime::MODEL_INPUT,
130 .location = {.poolIndex = 0, .offset = 0, .length = 0},
131 },
132 {
133 .type = OperandType::TENSOR_FLOAT32,
134 .dimensions = {16, 16},
135 .numberOfConsumers = 1,
136 .scale = 0.0f,
137 .zeroPoint = 0,
138 .lifetime = OperandLifeTime::MODEL_INPUT,
139 .location = {.poolIndex = 0, .offset = 0, .length = 0},
140 },
141 {
142 .type = OperandType::TENSOR_FLOAT32,
143 .dimensions = {16},
144 .numberOfConsumers = 1,
145 .scale = 0.0f,
146 .zeroPoint = 0,
147 .lifetime = OperandLifeTime::MODEL_INPUT,
148 .location = {.poolIndex = 0, .offset = 0, .length = 0},
149 },
150 {
151 .type = OperandType::TENSOR_FLOAT32,
152 .dimensions = {2, 16},
153 .numberOfConsumers = 1,
154 .scale = 0.0f,
155 .zeroPoint = 0,
156 .lifetime = OperandLifeTime::MODEL_INPUT,
157 .location = {.poolIndex = 0, .offset = 0, .length = 0},
158 },
159 {
160 .type = OperandType::INT32,
161 .dimensions = {},
162 .numberOfConsumers = 1,
163 .scale = 0.0f,
164 .zeroPoint = 0,
165 .lifetime = OperandLifeTime::CONSTANT_COPY,
166 .location = {.poolIndex = 0, .offset = 0, .length = 4},
167 },
168 {
169 .type = OperandType::TENSOR_FLOAT32,
170 .dimensions = {0, 0},
171 .numberOfConsumers = 0,
172 .scale = 0.0f,
173 .zeroPoint = 0,
174 .lifetime = OperandLifeTime::MODEL_OUTPUT,
175 .location = {.poolIndex = 0, .offset = 0, .length = 0},
176 },
177 {
178 .type = OperandType::TENSOR_FLOAT32,
179 .dimensions = {0, 0},
180 .numberOfConsumers = 0,
181 .scale = 0.0f,
182 .zeroPoint = 0,
183 .lifetime = OperandLifeTime::MODEL_OUTPUT,
184 .location = {.poolIndex = 0, .offset = 0, .length = 0},
185 }
186 };
187
188 const std::vector<Operation> operations = {
189 {
190 .type = OperationType::RNN,
191 .inputs = {0, 1, 2, 3, 4, 5},
192 .outputs = {6, 7},
193 }
194 };
195
196 const std::vector<uint32_t> inputIndexes = {0, 1, 2, 3, 4};
197 const std::vector<uint32_t> outputIndexes = {6, 7};
198 std::vector<uint8_t> operandValues = {
199 1, 0, 0, 0
200 };
201 const std::vector<hidl_memory> pools = {};
202
203 return {
204 .operands = operands,
205 .operations = operations,
206 .inputIndexes = inputIndexes,
207 .outputIndexes = outputIndexes,
208 .operandValues = operandValues,
209 .pools = pools,
210 .relaxComputationFloat32toFloat16 = true,
211 };
212 }
213
is_ignored_dynamic_output_shape(int i)214 inline bool is_ignored_dynamic_output_shape(int i) {
215 static std::set<int> ignore = {0};
216 return ignore.find(i) != ignore.end();
217 }
218
219