blob: e036cc45d1adc8e3f48b643e7b325b78b223ba1a [file] [log] [blame]
Sanghoon Lee24486d62017-09-04 15:51:21 +01001/*
2 * Copyright (c) 2017 ARM Limited.
3 *
4 * SPDX-License-Identifier: MIT
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to
8 * deal in the Software without restriction, including without limitation the
9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 * sell copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in all
14 * copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONCLCTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 */
24#include "arm_compute/core/Types.h"
25#include "arm_compute/runtime/NEON/functions/NEDepthConvert.h"
26#include "arm_compute/runtime/Tensor.h"
27#include "arm_compute/runtime/TensorAllocator.h"
28#include "tests/NEON/Accessor.h"
29#include "tests/PaddingCalculator.h"
30#include "tests/datasets/ConvertPolicyDataset.h"
31#include "tests/datasets/ShapeDatasets.h"
32#include "tests/framework/Asserts.h"
33#include "tests/framework/Macros.h"
34#include "tests/framework/datasets/Datasets.h"
35#include "tests/validation/Validation.h"
36#include "tests/validation/fixtures/DepthConvertFixture.h"
Sanghoon Lee24486d62017-09-04 15:51:21 +010037
38namespace arm_compute
39{
40namespace test
41{
42namespace validation
43{
44namespace
45{
46/** Input data sets **/
47const auto DepthConvertU8toU16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::U16));
48const auto DepthConvertU8toS16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S16));
49const auto DepthConvertU8toS32Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S32));
50const auto DepthConvertU16toU8Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U8));
51const auto DepthConvertU16toU32Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U32));
52const auto DepthConvertS16toU8Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::U8));
53const auto DepthConvertS16toS32Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::S32));
54const auto DepthConvertQS8toFP32Dataset = combine(framework::dataset::make("DataType", DataType::QS8), framework::dataset::make("DataType", DataType::F32));
55const auto DepthConvertQS16toFP32Dataset = combine(framework::dataset::make("DataType", DataType::QS16), framework::dataset::make("DataType", DataType::F32));
56const auto DepthConvertFP32toQS8Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::QS8));
57const auto DepthConvertFP32toQS16Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::QS16));
58const auto DepthConvertShiftDataset = framework::dataset::make("Shift", 0, 7);
59const auto DepthConvertFixedPointQuantizedDataset = framework::dataset::make("FractionalBits", 1, 7);
60} // namespace
61
62TEST_SUITE(NEON)
63TEST_SUITE(DepthConvert)
64template <typename T>
65using NEDepthConvertToU16Fixture = DepthConvertValidationFixture<Tensor, Accessor, NEDepthConvert, T, uint16_t>;
66template <typename T>
67using NEDepthConvertToS16Fixture = DepthConvertValidationFixture<Tensor, Accessor, NEDepthConvert, T, int16_t>;
68template <typename T>
69using NEDepthConvertToS32Fixture = DepthConvertValidationFixture<Tensor, Accessor, NEDepthConvert, T, int32_t>;
70template <typename T>
71using NEDepthConvertToU8Fixture = DepthConvertValidationFixture<Tensor, Accessor, NEDepthConvert, T, uint8_t>;
72template <typename T>
73using NEDepthConvertToU32Fixture = DepthConvertValidationFixture<Tensor, Accessor, NEDepthConvert, T, uint32_t>;
74template <typename T>
75using NEDepthConvertToFP32FixedPointFixture = DepthConvertValidationFractionalBitsFixture<Tensor, Accessor, NEDepthConvert, T, float>;
76template <typename T>
77using NEDepthConvertToQS8FixedPointFixture = DepthConvertValidationFractionalBitsFixture<Tensor, Accessor, NEDepthConvert, T, int8_t>;
78template <typename T>
79using NEDepthConvertToQS16FixedPointFixture = DepthConvertValidationFractionalBitsFixture<Tensor, Accessor, NEDepthConvert, T, int16_t>;
80
81TEST_SUITE(U8_to_U16)
82DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
83 DepthConvertShiftDataset),
84 shape, policy, shift)
85{
86 int fixed_point_position = 0;
87
88 // Create tensors
89 Tensor src = create_tensor<Tensor>(shape, DataType::U8, 1, fixed_point_position);
90 Tensor dst = create_tensor<Tensor>(shape, DataType::U16, 1, fixed_point_position);
91
92 // Create and Configure function
93 NEDepthConvert depth_convert;
94 depth_convert.configure(&src, &dst, policy, shift);
95
96 // Validate valid region
97 const ValidRegion valid_region = shape_to_valid_region(shape);
98 validate(dst.info()->valid_region(), valid_region);
99
100 // Validate padding
101 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
102 validate(src.info()->padding(), padding);
103 validate(dst.info()->padding(), padding);
104}
105
106FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertToU16Fixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertU8toU16Dataset),
107 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
108 DepthConvertShiftDataset))
109{
110 // Validate output
111 validate(Accessor(_target), _reference);
112}
113
114FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertToU16Fixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertU8toU16Dataset),
115 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
116 DepthConvertShiftDataset))
117{
118 // Validate output
119 validate(Accessor(_target), _reference);
120}
121TEST_SUITE_END()
122
123TEST_SUITE(U8_to_S16)
124DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
125 DepthConvertShiftDataset),
126 shape, policy, shift)
127{
128 int fixed_point_position = 0;
129
130 // Create tensors
131 Tensor src = create_tensor<Tensor>(shape, DataType::U8, 1, fixed_point_position);
132 Tensor dst = create_tensor<Tensor>(shape, DataType::S16, 1, fixed_point_position);
133
134 // Create and Configure function
135 NEDepthConvert depth_convert;
136 depth_convert.configure(&src, &dst, policy, shift);
137
138 // Validate valid region
139 const ValidRegion valid_region = shape_to_valid_region(shape);
140 validate(dst.info()->valid_region(), valid_region);
141
142 // Validate padding
143 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
144 validate(src.info()->padding(), padding);
145 validate(dst.info()->padding(), padding);
146}
147
148FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertToS16Fixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertU8toS16Dataset),
149 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
150 DepthConvertShiftDataset))
151{
152 // Validate output
153 validate(Accessor(_target), _reference);
154}
155
156FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertToS16Fixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertU8toS16Dataset),
157 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
158 DepthConvertShiftDataset))
159{
160 // Validate output
161 validate(Accessor(_target), _reference);
162}
163TEST_SUITE_END()
164TEST_SUITE(U8_to_S32)
165DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
166 DepthConvertShiftDataset),
167 shape, policy, shift)
168{
169 int fixed_point_position = 0;
170
171 // Create tensors
172 Tensor src = create_tensor<Tensor>(shape, DataType::U8, 1, fixed_point_position);
173 Tensor dst = create_tensor<Tensor>(shape, DataType::S32, 1, fixed_point_position);
174
175 // Create and Configure function
176 NEDepthConvert depth_convert;
177 depth_convert.configure(&src, &dst, policy, shift);
178
179 // Validate valid region
180 const ValidRegion valid_region = shape_to_valid_region(shape);
181 validate(dst.info()->valid_region(), valid_region);
182
183 // Validate padding
184 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
185 validate(src.info()->padding(), padding);
186 validate(dst.info()->padding(), padding);
187}
188
189FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertToS32Fixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertU8toS32Dataset),
190 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
191 DepthConvertShiftDataset))
192{
193 // Validate output
194 validate(Accessor(_target), _reference);
195}
196
197FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertToS32Fixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertU8toS32Dataset),
198 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
199 DepthConvertShiftDataset))
200{
201 // Validate output
202 validate(Accessor(_target), _reference);
203}
204TEST_SUITE_END()
205
206TEST_SUITE(U16_to_U8)
207DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
208 DepthConvertShiftDataset),
209 shape, policy, shift)
210{
211 int fixed_point_position = 0;
212
213 // Create tensors
214 Tensor src = create_tensor<Tensor>(shape, DataType::U16, 1, fixed_point_position);
215 Tensor dst = create_tensor<Tensor>(shape, DataType::U8, 1, fixed_point_position);
216
217 // Create and Configure function
218 NEDepthConvert depth_convert;
219 depth_convert.configure(&src, &dst, policy, shift);
220
221 // Validate valid region
222 const ValidRegion valid_region = shape_to_valid_region(shape);
223 validate(dst.info()->valid_region(), valid_region);
224
225 // Validate padding
226 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
227 validate(src.info()->padding(), padding);
228 validate(dst.info()->padding(), padding);
229}
230
231FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertToU8Fixture<uint16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertU16toU8Dataset),
232 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
233 DepthConvertShiftDataset))
234{
235 // Validate output
236 validate(Accessor(_target), _reference);
237}
238FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertToU8Fixture<uint16_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertU16toU8Dataset),
239 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
240 DepthConvertShiftDataset))
241{
242 // Validate output
243 validate(Accessor(_target), _reference);
244}
245TEST_SUITE_END()
246
247TEST_SUITE(U16_to_U32)
248DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
249 DepthConvertShiftDataset),
250 shape, policy, shift)
251{
252 int fixed_point_position = 0;
253
254 // Create tensors
255 Tensor src = create_tensor<Tensor>(shape, DataType::U16, 1, fixed_point_position);
256 Tensor dst = create_tensor<Tensor>(shape, DataType::U32, 1, fixed_point_position);
257
258 // Create and Configure function
259 NEDepthConvert depth_convert;
260 depth_convert.configure(&src, &dst, policy, shift);
261
262 // Validate valid region
263 const ValidRegion valid_region = shape_to_valid_region(shape);
264 validate(dst.info()->valid_region(), valid_region);
265
266 // Validate padding
267 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
268 validate(src.info()->padding(), padding);
269 validate(dst.info()->padding(), padding);
270}
271
272FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertToU32Fixture<uint16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertU16toU32Dataset),
273 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
274 DepthConvertShiftDataset))
275{
276 // Validate output
277 validate(Accessor(_target), _reference);
278}
279FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertToU32Fixture<uint16_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertU16toU32Dataset),
280 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
281 DepthConvertShiftDataset))
282{
283 // Validate output
284 validate(Accessor(_target), _reference);
285}
286TEST_SUITE_END()
287
288TEST_SUITE(S16_to_U8)
289DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
290 DepthConvertShiftDataset),
291 shape, policy, shift)
292{
293 int fixed_point_position = 0;
294
295 // Create tensors
296 Tensor src = create_tensor<Tensor>(shape, DataType::S16, 1, fixed_point_position);
297 Tensor dst = create_tensor<Tensor>(shape, DataType::U8, 1, fixed_point_position);
298
299 // Create and Configure function
300 NEDepthConvert depth_convert;
301 depth_convert.configure(&src, &dst, policy, shift);
302
303 // Validate valid region
304 const ValidRegion valid_region = shape_to_valid_region(shape);
305 validate(dst.info()->valid_region(), valid_region);
306
307 // Validate padding
308 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
309 validate(src.info()->padding(), padding);
310 validate(dst.info()->padding(), padding);
311}
312
313FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertToU8Fixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertS16toU8Dataset),
314 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
315 DepthConvertShiftDataset))
316{
317 // Validate output
318 validate(Accessor(_target), _reference);
319}
320FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertToU8Fixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertS16toU8Dataset),
321 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
322 DepthConvertShiftDataset))
323{
324 // Validate output
325 validate(Accessor(_target), _reference);
326}
327TEST_SUITE_END()
328
329TEST_SUITE(S16_to_S32)
330DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
331 DepthConvertShiftDataset),
332 shape, policy, shift)
333{
334 int fixed_point_position = 0;
335
336 // Create tensors
337 Tensor src = create_tensor<Tensor>(shape, DataType::S16, 1, fixed_point_position);
338 Tensor dst = create_tensor<Tensor>(shape, DataType::S32, 1, fixed_point_position);
339
340 // Create and Configure function
341 NEDepthConvert depth_convert;
342 depth_convert.configure(&src, &dst, policy, shift);
343
344 // Validate valid region
345 const ValidRegion valid_region = shape_to_valid_region(shape);
346 validate(dst.info()->valid_region(), valid_region);
347
348 // Validate padding
349 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
350 validate(src.info()->padding(), padding);
351 validate(dst.info()->padding(), padding);
352}
353
354FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertToS32Fixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertS16toS32Dataset),
355 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
356 DepthConvertShiftDataset))
357{
358 // Validate output
359 validate(Accessor(_target), _reference);
360}
361FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertToS32Fixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertS16toS32Dataset),
362 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
363 DepthConvertShiftDataset))
364{
365 // Validate output
366 validate(Accessor(_target), _reference);
367}
368TEST_SUITE_END()
369
370TEST_SUITE(Quantized_to_FP32)
371DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::QS8, DataType::QS16 })),
372 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
373 DepthConvertFixedPointQuantizedDataset),
374 shape, dt, policy, fixed_point_position)
375{
376 int shift = 0;
377
378 // Create tensors
379 Tensor src = create_tensor<Tensor>(shape, dt, 1, fixed_point_position);
380 Tensor dst = create_tensor<Tensor>(shape, DataType::F32, 1, fixed_point_position);
381
382 // Create and Configure function
383 NEDepthConvert depth_convert;
384 depth_convert.configure(&src, &dst, policy, shift);
385
386 // Validate valid region
387 const ValidRegion valid_region = shape_to_valid_region(shape);
388 validate(dst.info()->valid_region(), valid_region);
389
390 // Validate padding
391 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
392 validate(src.info()->padding(), padding);
393 validate(dst.info()->padding(), padding);
394}
395FIXTURE_DATA_TEST_CASE(RunSmallQS8, NEDepthConvertToFP32FixedPointFixture<int8_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertQS8toFP32Dataset),
396 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
397 DepthConvertFixedPointQuantizedDataset))
398{
399 // Validate output
400 validate(Accessor(_target), _reference);
401}
402FIXTURE_DATA_TEST_CASE(RunSmallQS16, NEDepthConvertToFP32FixedPointFixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertQS16toFP32Dataset),
403 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
404 DepthConvertFixedPointQuantizedDataset))
405{
406 // Validate output
407 validate(Accessor(_target), _reference);
408}
409FIXTURE_DATA_TEST_CASE(RunLargeQS8, NEDepthConvertToFP32FixedPointFixture<int8_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertQS8toFP32Dataset),
410 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
411 DepthConvertFixedPointQuantizedDataset))
412{
413 // Validate output
414 validate(Accessor(_target), _reference);
415}
416FIXTURE_DATA_TEST_CASE(RunLargeQS16, NEDepthConvertToFP32FixedPointFixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertQS16toFP32Dataset),
417 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
418 DepthConvertFixedPointQuantizedDataset))
419{
420 // Validate output
421 validate(Accessor(_target), _reference);
422}
423TEST_SUITE_END()
424
425TEST_SUITE(FP32_to_Quantized)
426DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::QS8, DataType::QS16 })),
427 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
428 DepthConvertFixedPointQuantizedDataset),
429 shape, dt, policy, fixed_point_position)
430{
431 int shift = 0;
432
433 // Create tensors
434 Tensor src = create_tensor<Tensor>(shape, DataType::F32, 1, fixed_point_position);
435 Tensor dst = create_tensor<Tensor>(shape, dt, 1, fixed_point_position);
436
437 // Create and Configure function
438 NEDepthConvert depth_convert;
439 depth_convert.configure(&src, &dst, policy, shift);
440
441 // Validate valid region
442 const ValidRegion valid_region = shape_to_valid_region(shape);
443 validate(dst.info()->valid_region(), valid_region);
444
445 // Validate padding
446 const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
447 validate(src.info()->padding(), padding);
448 validate(dst.info()->padding(), padding);
449}
450FIXTURE_DATA_TEST_CASE(RunSmallQS8, NEDepthConvertToQS8FixedPointFixture<float>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertFP32toQS8Dataset),
451 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
452 DepthConvertFixedPointQuantizedDataset))
453{
454 // Validate output
455 validate(Accessor(_target), _reference);
456}
457FIXTURE_DATA_TEST_CASE(RunSmallQS16, NEDepthConvertToQS16FixedPointFixture<float>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertFP32toQS16Dataset),
458 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
459 DepthConvertFixedPointQuantizedDataset))
460{
461 // Validate output
462 validate(Accessor(_target), _reference);
463}
464FIXTURE_DATA_TEST_CASE(RunLargeQS8, NEDepthConvertToQS8FixedPointFixture<float>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertFP32toQS8Dataset),
465 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
466 DepthConvertFixedPointQuantizedDataset))
467{
468 // Validate output
469 validate(Accessor(_target), _reference);
470}
471FIXTURE_DATA_TEST_CASE(RunLargeQS16, NEDepthConvertToQS16FixedPointFixture<float>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertFP32toQS16Dataset),
472 framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })),
473 DepthConvertFixedPointQuantizedDataset))
474{
475 // Validate output
476 validate(Accessor(_target), _reference);
477}
478TEST_SUITE_END()
479
480TEST_SUITE_END()
481TEST_SUITE_END()
482} // namespace validation
483} // namespace test
484} // namespace arm_compute