diff options
author | Manuel Bottini <manuel.bottini@arm.com> | 2019-06-14 17:18:12 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2019-06-20 17:41:16 +0000 |
commit | 3689fcd5915cd902cb4ea5f618f2a6e42f6dc4a1 (patch) | |
tree | 9d068e7548af2a6054468c35f3259b52bdda91a5 /tests/validation/NEON/ArithmeticAddition.cpp | |
parent | a28aebc5f80630683f50ce934e8584c6b0004beb (diff) | |
download | ComputeLibrary-3689fcd5915cd902cb4ea5f618f2a6e42f6dc4a1.tar.gz |
COMPMID-2408: Add QSYMM16 support for ElementwiseAddition for NEON
Change-Id: I22991e9369ffba9b51a94522ff4977933e887b94
Signed-off-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-on: https://review.mlplatform.org/c/1352
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giuseppe Rossini <giuseppe.rossini@arm.com>
Diffstat (limited to 'tests/validation/NEON/ArithmeticAddition.cpp')
-rw-r--r-- | tests/validation/NEON/ArithmeticAddition.cpp | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/tests/validation/NEON/ArithmeticAddition.cpp b/tests/validation/NEON/ArithmeticAddition.cpp index 4a72dfc923..8d8a327f69 100644 --- a/tests/validation/NEON/ArithmeticAddition.cpp +++ b/tests/validation/NEON/ArithmeticAddition.cpp @@ -45,7 +45,7 @@ namespace { #ifndef __aarch64__ constexpr AbsoluteTolerance<float> tolerance_qasymm8(1); /**< Tolerance value for comparing reference's output against implementation's output for quantized data types */ -#endif //__aarch64__ +#endif //__aarch64__ /** Input data sets **/ const auto ArithmeticAdditionU8Dataset = combine(combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::U8)), framework::dataset::make("DataType", @@ -60,6 +60,8 @@ const auto ArithmeticAdditionFP32Dataset = combine(combine(framework::dataset::m framework::dataset::make("DataType", DataType::F32)); const auto ArithmeticAdditionQASYMM8Dataset = combine(combine(framework::dataset::make("DataType", DataType::QASYMM8), framework::dataset::make("DataType", DataType::QASYMM8)), framework::dataset::make("DataType", DataType::QASYMM8)); +const auto ArithmeticAdditionQSYMM16Dataset = combine(combine(framework::dataset::make("DataType", DataType::QSYMM16), framework::dataset::make("DataType", DataType::QSYMM16)), + framework::dataset::make("DataType", DataType::QSYMM16)); } // namespace TEST_SUITE(NEON) @@ -275,9 +277,9 @@ FIXTURE_DATA_TEST_CASE(RunSmall, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(combine(datasets::SmallShapes(), ArithmeticAdditionQASYMM8Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE })), - framework::dataset::make("QuantizationInfo", { QuantizationInfo(5.f / 255.f, 20) })), - framework::dataset::make("QuantizationInfo", { QuantizationInfo(2.f / 255.f, 10) })), - framework::dataset::make("QuantizationInfo", { QuantizationInfo(1.f / 255.f, 5) }))) + framework::dataset::make("Src0QInfo", { QuantizationInfo(5.f / 255.f, 20) })), + framework::dataset::make("Src1QInfo", { QuantizationInfo(2.f / 255.f, 10) })), + framework::dataset::make("OutQInfo", { QuantizationInfo(1.f / 255.f, 5) }))) { // Validate output #ifdef __aarch64__ @@ -287,6 +289,42 @@ FIXTURE_DATA_TEST_CASE(RunSmall, #endif //__aarch64__ } TEST_SUITE_END() // QASYMM8 +TEST_SUITE(QSYMM16) +DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(datasets::SmallShapes(), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE })), + shape, policy) +{ + // Create tensors + Tensor ref_src1 = create_tensor<Tensor>(shape, DataType::QSYMM16); + Tensor ref_src2 = create_tensor<Tensor>(shape, DataType::QSYMM16); + Tensor dst = create_tensor<Tensor>(shape, DataType::QSYMM16); + + // Create and Configure function + NEArithmeticAddition add; + add.configure(&ref_src1, &ref_src2, &dst, policy); + + // Validate valid region + const ValidRegion valid_region = shape_to_valid_region(shape); + validate(dst.info()->valid_region(), valid_region); + + // Validate padding + validate(ref_src1.info()->padding(), PaddingSize()); + validate(ref_src2.info()->padding(), PaddingSize()); + validate(dst.info()->padding(), PaddingSize()); +} + +FIXTURE_DATA_TEST_CASE(RunSmall, + NEArithmeticAdditionQuantizedFixture<int16_t>, + framework::DatasetMode::PRECOMMIT, + combine(combine(combine(combine(combine(datasets::SmallShapes(), ArithmeticAdditionQSYMM16Dataset), + framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE })), + framework::dataset::make("Src0QInfo", { QuantizationInfo(1.f / 32768.f, 0), QuantizationInfo(5.f / 32768.f, 0) })), + framework::dataset::make("Src1QInfo", { QuantizationInfo(2.f / 32768.f, 0), QuantizationInfo(5.f / 32768.f, 0) })), + framework::dataset::make("OutQInfo", { QuantizationInfo(5.f / 32768.f, 0) }))) +{ + // Validate output + validate(Accessor(_target), _reference); +} +TEST_SUITE_END() // QSYMM16 TEST_SUITE_END() // Quantized TEST_SUITE_END() // ArithmeticAddition |