28 #include "tests/datasets/ConvertPolicyDataset.h"
29 #include "tests/datasets/ShapeDatasets.h"
32 #include "tests/validation/fixtures/PixelWiseMultiplicationFixture.h"
42 const float scale_unity = 1.f;
43 const float scale_255 = 1.f / 255.f;
44 const float scale_other = 1.f / 32768.f;
46 constexpr AbsoluteTolerance<float> tolerance_qasymm8(1);
47 constexpr AbsoluteTolerance<float> tolerance_qsymm16(1);
49 const auto PixelWiseMultiplicationQSYMM16QuantDataset =
combine(
combine(
54 const auto PixelWiseMultiplicationQASYMM8QuantDataset =
combine(
combine(
59 const auto PixelWiseMultiplicationQASYMM8QuantInPlaceDataset =
combine(
combine(
64 const auto PixelWiseMultiplicationPolicySTNUDataset =
combine(
68 const auto PixelWiseMultiplicationPolicySTZDataset =
combine(
86 #define DEFAULT_VALIDATE validate(Accessor(_target), _reference);
87 #define VALIDATE(TYPE, TOLERANCE) validate(Accessor(_target), _reference, AbsoluteTolerance<TYPE>(TOLERANCE), 0.f);
88 #define WRAP_VALIDATE(TYPE, TOLERANCE) validate_wrap(Accessor(_target), _reference, AbsoluteTolerance<TYPE>(TOLERANCE), 0.f);
92 #define PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, SHAPES, DT1, DT2, DT3, SCALE, RP, INPLACE_DATASET, VALIDATE) \
93 FIXTURE_DATA_TEST_CASE(TEST_NAME, NEPixelWiseMultiplication##FIXTURE, framework::DatasetMode::MODE, \
94 combine(combine(combine(combine(combine(combine(combine( \
96 framework::dataset::make("DataType1", DataType::DT1)), \
97 framework::dataset::make("DataType2", DataType::DT2)), \
98 framework::dataset::make("DataType3", DataType::DT3)), \
99 framework::dataset::make("Scale", std::move(SCALE))), \
100 datasets::ConvertPolicies()), \
101 framework::dataset::make("RoundingPolicy", RoundingPolicy::RP)), \
102 (INPLACE_DATASET))) \
115 template <
typename T>
117 template <
typename T>
119 template <
typename T>
121 template <
typename T>
123 template <
typename T>
126 template <
typename T>
213 framework::dataset::make(
"Expected", {
true,
true,
true,
false,
false,
false,
false,
false, true ,
false,
false,
true,
false,
false})),
225 const auto random_shape = TensorShape{ 9, 9 };
226 const auto single_tensor_info = TensorInfo{ random_shape, 1,
DataType::F32 };
234 const auto larger_shape = TensorShape{ 27
U, 13
U, 2
U };
235 const auto smaller_shape = TensorShape{ 1
U, 13
U, 2
U };
237 const auto larger_tensor_info = TensorInfo{ larger_shape, 1,
DataType::F32 };
238 const auto smaller_tensor_info = TensorInfo{ smaller_shape, 1,
DataType::F32 };
246 const auto larger_shape = TensorShape{ 27
U, 13
U, 2
U };
247 const auto smaller_shape = TensorShape{ 1
U, 13
U, 2
U };
249 const auto larger_tensor_info = TensorInfo{ larger_shape, 1,
DataType::F32 };
250 const auto smaller_tensor_info = TensorInfo{ smaller_shape, 1,
DataType::F32 };
258 const auto shape0 = TensorShape{ 9
U, 9
U };
259 const auto shape1 = TensorShape{ 9
U, 1
U, 2
U };
278 framework::dataset::
make("DataTypeIn1",
DataType::QASYMM8_SIGNED)),
279 framework::dataset::
make("DataTypeIn2",
DataType::QASYMM8_SIGNED)),
280 framework::dataset::
make("DataTypeOut",
DataType::QASYMM8_SIGNED)),
281 framework::dataset::
make("Scale", { scale_unity })),
282 PixelWiseMultiplicationPolicySTZDataset),
283 PixelWiseMultiplicationQASYMM8QuantDataset),
294 PixelWiseMultiplicationPolicySTZDataset),
295 PixelWiseMultiplicationQASYMM8QuantInPlaceDataset),
307 framework::dataset::
make("DataTypeIn1",
DataType::QASYMM8)),
308 framework::dataset::
make("DataTypeIn2",
DataType::QASYMM8)),
309 framework::dataset::
make("DataTypeOut",
DataType::QASYMM8)),
310 framework::dataset::
make("Scale", { scale_255 })),
311 PixelWiseMultiplicationPolicySTNUDataset),
312 PixelWiseMultiplicationQASYMM8QuantDataset),
321 framework::dataset::
make("DataTypeIn1",
DataType::QASYMM8)),
322 framework::dataset::
make("DataTypeIn2",
DataType::QASYMM8)),
323 framework::dataset::
make("DataTypeOut",
DataType::QASYMM8)),
324 framework::dataset::
make("Scale", { scale_unity })),
325 PixelWiseMultiplicationPolicySTZDataset),
326 PixelWiseMultiplicationQASYMM8QuantDataset),
335 framework::dataset::
make("DataTypeIn1",
DataType::QASYMM8)),
336 framework::dataset::
make("DataTypeIn2",
DataType::QASYMM8)),
337 framework::dataset::
make("DataTypeOut",
DataType::QASYMM8)),
338 framework::dataset::
make("Scale", { scale_other })),
339 PixelWiseMultiplicationPolicySTZDataset),
340 PixelWiseMultiplicationQASYMM8QuantDataset),
350 framework::dataset::
make("DataTypeIn1",
DataType::QASYMM8)),
351 framework::dataset::
make("DataTypeIn2",
DataType::QASYMM8)),
352 framework::dataset::
make("DataTypeOut",
DataType::QASYMM8)),
353 framework::dataset::
make("Scale", { scale_other })),
354 PixelWiseMultiplicationPolicySTZDataset),
355 PixelWiseMultiplicationQASYMM8QuantDataset),
367 PixelWiseMultiplicationPolicySTZDataset),
368 PixelWiseMultiplicationQASYMM8QuantInPlaceDataset),
379 framework::dataset::
make("DataTypeIn1",
DataType::QSYMM16)),
380 framework::dataset::
make("DataTypeIn2",
DataType::QSYMM16)),
381 framework::dataset::
make("DataTypeOut",
DataType::QSYMM16)),
382 framework::dataset::
make("Scale", { scale_255 })),
383 PixelWiseMultiplicationPolicySTNUDataset),
384 PixelWiseMultiplicationQSYMM16QuantDataset),
393 framework::dataset::
make("DataTypeIn1",
DataType::QSYMM16)),
394 framework::dataset::
make("DataTypeIn2",
DataType::QSYMM16)),
395 framework::dataset::
make("DataTypeOut",
DataType::QSYMM16)),
396 framework::dataset::
make("Scale", { scale_unity })),
397 PixelWiseMultiplicationPolicySTZDataset),
398 PixelWiseMultiplicationQSYMM16QuantDataset),
407 framework::dataset::
make("DataTypeIn1",
DataType::QSYMM16)),
408 framework::dataset::
make("DataTypeIn2",
DataType::QSYMM16)),
409 framework::dataset::
make("DataTypeOut",
DataType::QSYMM16)),
410 framework::dataset::
make("Scale", { scale_other })),
411 PixelWiseMultiplicationPolicySTZDataset),
412 PixelWiseMultiplicationQSYMM16QuantDataset),
422 framework::dataset::
make("DataTypeIn1",
DataType::QSYMM16)),
423 framework::dataset::
make("DataTypeIn2",
DataType::QSYMM16)),
424 framework::dataset::
make("DataTypeOut",
DataType::S32)),
425 framework::dataset::
make("Scale", { scale_unity })),
426 PixelWiseMultiplicationPolicySTZDataset),
427 PixelWiseMultiplicationQSYMM16QuantDataset),
441 framework::dataset::
make("DataTypeOut",
DataType::S16)),
442 framework::dataset::
make("Scale", { scale_255 })),
443 datasets::ConvertPolicies()),
456 datasets::ConvertPolicies()),
461 validate(Accessor(_target), _reference);
469 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToU8Fixture<uint8_t>, ALL, SmallShapes(), U8, U8, U8, scale_255, TO_NEAREST_UP, InPlaceDataSet,
WRAP_VALIDATE(uint8_t, 1))
473 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToU8Fixture<uint8_t>, ALL, SmallShapes(), U8, U8, U8, scale_unity, TO_ZERO, InPlaceDataSet,
DEFAULT_VALIDATE)
477 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToU8Fixture<uint8_t>, ALL, SmallShapes(), U8, U8, U8, scale_other, TO_ZERO, InPlaceDataSet,
DEFAULT_VALIDATE)
485 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS16Fixture<uint8_t>, ALL, SmallShapes(), U8, S16, S16, scale_255, TO_NEAREST_UP, OutOfPlaceDataSet,
490 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS16Fixture<uint8_t>, ALL, SmallShapes(), U8, S16, S16, scale_unity, TO_ZERO, OutOfPlaceDataSet,
495 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS16Fixture<uint8_t>, ALL, SmallShapes(), U8, S16, S16, scale_other, TO_ZERO, OutOfPlaceDataSet,
504 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS16Fixture<int16_t>, ALL, SmallShapes(), S16, S16, S16, scale_255, TO_NEAREST_UP, InPlaceDataSet,
WRAP_VALIDATE(int16_t, 2))
508 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS16Fixture<int16_t>, ALL, SmallShapes(), S16, S16, S16, scale_unity, TO_ZERO, InPlaceDataSet,
DEFAULT_VALIDATE)
512 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS16Fixture<int16_t>, ALL, SmallShapes(), S16, S16, S16, scale_other, TO_ZERO, InPlaceDataSet,
DEFAULT_VALIDATE)
520 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS32Fixture<int32_t>, ALL, SmallShapes(), S32, S32, S32, scale_unity, TO_ZERO, InPlaceDataSet,
WRAP_VALIDATE(int32_t, 1))
524 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToS32Fixture<int32_t>, ALL, SmallShapes(), S32, S32, S32, scale_other, TO_ZERO, InPlaceDataSet,
WRAP_VALIDATE(int32_t, 1))
528 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, BroadcastFixture<int32_t>, ALL, SmallShapesBroadcast(), S32, S32, S32, scale_unity, TO_ZERO, framework::dataset::
make("InPlace", {
false }),
534 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
538 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToF16Fixture<half_float::half>, ALL, SmallShapes(), F16, F16, F16, scale_255, TO_NEAREST_UP, InPlaceDataSet,
VALIDATE(
float, 1.f))
547 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToF32Fixture<
float>, ALL, SmallShapes(), F32, F32, F32, scale_255, TO_NEAREST_UP, InPlaceDataSet,
VALIDATE(
float, 1.f))
551 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToF32Fixture<
float>, ALL, SmallShapes(), F32, F32, F32, scale_unity, TO_ZERO, InPlaceDataSet,
DEFAULT_VALIDATE)
555 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, ToF32Fixture<
float>, ALL, SmallShapes(), F32, F32, F32, scale_other, TO_ZERO, InPlaceDataSet,
DEFAULT_VALIDATE)
561 PIXEL_WISE_MULTIPLICATION_FIXTURE_DATA_TEST_CASE(RunSmall, BroadcastFixture<
float>, ALL, SmallShapesBroadcast(), F32, F32, F32, scale_255, TO_NEAREST_UP, framework::dataset::
make("InPlace", {
false }),