From bf28a3cde6f77cbac3e3409d5597085ccbc71499 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Tue, 18 Sep 2018 14:34:48 +0100 Subject: COMPMID-1564: Add QASYMM8 on CLPixelwiseMultiplication Change-Id: I5f719f5b2915c18cd0ca6271db401152112863a6 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/148982 Tested-by: bsgcomp Reviewed-by: Isabella Gottardi Reviewed-by: Anthony Barbier Reviewed-by: Giuseppe Rossini --- .../fixtures/PixelWiseMultiplicationFixture.h | 58 ++++++++++++++++------ 1 file changed, 44 insertions(+), 14 deletions(-) (limited to 'tests/validation/fixtures') diff --git a/tests/validation/fixtures/PixelWiseMultiplicationFixture.h b/tests/validation/fixtures/PixelWiseMultiplicationFixture.h index b9f19f3e77..9927b75032 100644 --- a/tests/validation/fixtures/PixelWiseMultiplicationFixture.h +++ b/tests/validation/fixtures/PixelWiseMultiplicationFixture.h @@ -40,7 +40,7 @@ namespace test namespace validation { template -class PixelWiseMultiplicationBroadcastValidationFixture : public framework::Fixture +class PixelWiseMultiplicationGenericValidationFixture : public framework::Fixture { public: template @@ -50,10 +50,13 @@ public: DataType dt_in2, float scale, ConvertPolicy convert_policy, - RoundingPolicy rounding_policy) + RoundingPolicy rounding_policy, + QuantizationInfo qinfo0, + QuantizationInfo qinfo1, + QuantizationInfo qinfo_out) { - _target = compute_target(shape0, shape1, dt_in1, dt_in2, scale, convert_policy, rounding_policy); - _reference = compute_reference(shape0, shape1, dt_in1, dt_in2, scale, convert_policy, rounding_policy); + _target = compute_target(shape0, shape1, dt_in1, dt_in2, scale, convert_policy, rounding_policy, qinfo0, qinfo1, qinfo_out); + _reference = compute_reference(shape0, shape1, dt_in1, dt_in2, scale, convert_policy, rounding_policy, qinfo0, qinfo1, qinfo_out); } protected: @@ -64,12 +67,13 @@ protected: } TensorType compute_target(const TensorShape &shape0, const TensorShape &shape1, DataType dt_in1, DataType dt_in2, - float scale, ConvertPolicy convert_policy, RoundingPolicy rounding_policy) + float scale, ConvertPolicy convert_policy, RoundingPolicy rounding_policy, + QuantizationInfo qinfo0, QuantizationInfo qinfo1, QuantizationInfo qinfo_out) { // Create tensors - TensorType src1 = create_tensor(shape0, dt_in1); - TensorType src2 = create_tensor(shape1, dt_in2); - TensorType dst = create_tensor(TensorShape::broadcast_shape(shape0, shape1), dt_in2); + TensorType src1 = create_tensor(shape0, dt_in1, 1, qinfo0); + TensorType src2 = create_tensor(shape1, dt_in2, 1, qinfo1); + TensorType dst = create_tensor(TensorShape::broadcast_shape(shape0, shape1), dt_in2, 1, qinfo_out); // Create and configure function FunctionType multiply; @@ -99,17 +103,18 @@ protected: } SimpleTensor compute_reference(const TensorShape &shape0, const TensorShape &shape1, DataType dt_in1, DataType dt_in2, - float scale, ConvertPolicy convert_policy, RoundingPolicy rounding_policy) + float scale, ConvertPolicy convert_policy, RoundingPolicy rounding_policy, + QuantizationInfo qinfo0, QuantizationInfo qinfo1, QuantizationInfo qinfo_out) { // Create reference - SimpleTensor src1{ shape0, dt_in1 }; - SimpleTensor src2{ shape1, dt_in2 }; + SimpleTensor src1{ shape0, dt_in1, 1, qinfo0 }; + SimpleTensor src2{ shape1, dt_in2, 1, qinfo1 }; // Fill reference fill(src1, 0); fill(src2, 1); - return reference::pixel_wise_multiplication(src1, src2, scale, convert_policy, rounding_policy); + return reference::pixel_wise_multiplication(src1, src2, scale, convert_policy, rounding_policy, qinfo_out); } TensorType _target{}; @@ -117,16 +122,41 @@ protected: }; template -class PixelWiseMultiplicationValidationFixture : public PixelWiseMultiplicationBroadcastValidationFixture +class PixelWiseMultiplicationValidationFixture : public PixelWiseMultiplicationGenericValidationFixture { public: template void setup(const TensorShape &shape, DataType dt_in1, DataType dt_in2, float scale, ConvertPolicy convert_policy, RoundingPolicy rounding_policy) { - PixelWiseMultiplicationBroadcastValidationFixture::setup(shape, shape, dt_in1, dt_in2, scale, convert_policy, rounding_policy); + PixelWiseMultiplicationGenericValidationFixture::setup(shape, shape, dt_in1, dt_in2, scale, convert_policy, rounding_policy, + QuantizationInfo(), QuantizationInfo(), QuantizationInfo()); } }; +template +class PixelWiseMultiplicationBroadcastValidationFixture : public PixelWiseMultiplicationGenericValidationFixture +{ +public: + template + void setup(const TensorShape &shape0, const TensorShape &shape1, DataType dt_in1, DataType dt_in2, float scale, ConvertPolicy convert_policy, RoundingPolicy rounding_policy) + { + PixelWiseMultiplicationGenericValidationFixture::setup(shape0, shape1, dt_in1, dt_in2, scale, convert_policy, rounding_policy, + QuantizationInfo(), QuantizationInfo(), QuantizationInfo()); + } +}; + +template +class PixelWiseMultiplicationValidationQuantizedFixture : public PixelWiseMultiplicationGenericValidationFixture +{ +public: + template + void setup(const TensorShape &shape, DataType dt, float scale, ConvertPolicy convert_policy, RoundingPolicy rounding_policy, + QuantizationInfo qinfo0, QuantizationInfo qinfo1, QuantizationInfo qinfo_out) + { + PixelWiseMultiplicationGenericValidationFixture::setup(shape, shape, dt, dt, scale, convert_policy, rounding_policy, + qinfo0, qinfo1, qinfo_out); + } +}; } // namespace validation } // namespace test } // namespace arm_compute -- cgit v1.2.1