COMPMID-1937: Adds support for DequantizationLayer for NEON/CL.

Change-Id: I4b73edd176a277294e0e42e642460bc61210778a
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Reviewed-on: https://review.mlplatform.org/c/744
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giuseppe Rossini <giuseppe.rossini@arm.com>
diff --git a/tests/benchmark/CL/DequantizationLayer.cpp b/tests/benchmark/CL/DequantizationLayer.cpp
index d34034e..1998b1c 100644
--- a/tests/benchmark/CL/DequantizationLayer.cpp
+++ b/tests/benchmark/CL/DequantizationLayer.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2019 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -41,8 +41,8 @@
 {
 namespace
 {
-const auto data_types_src = framework::dataset::make("DataType", { DataType::U8 });
-const auto data_types_dst = framework::dataset::make("DataType", { DataType::F32 });
+const auto data_types_src = framework::dataset::make("DataType", { DataType::QASYMM8 });
+const auto data_types_dst = framework::dataset::make("DataType", { DataType::F16, DataType::F32 });
 } // namespace
 
 using CLDequantizationLayerFixture = DequantizationLayerFixture<CLTensor, CLDequantizationLayer, CLAccessor>;
@@ -53,7 +53,7 @@
                                 framework::DatasetMode::ALL,
                                 framework::dataset::combine(framework::dataset::combine(datasets::Small3DShapes(), data_types_src), data_types_dst));
 
-TEST_SUITE_END()
+TEST_SUITE_END() // CL
 } // namespace benchmark
 } // namespace test
 } // namespace arm_compute
diff --git a/tests/benchmark/NEON/DequantizationLayer.cpp b/tests/benchmark/NEON/DequantizationLayer.cpp
index 9a0a1e7..2ffa8a1 100644
--- a/tests/benchmark/NEON/DequantizationLayer.cpp
+++ b/tests/benchmark/NEON/DequantizationLayer.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2019 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -41,8 +41,12 @@
 {
 namespace
 {
-const auto data_types_src = framework::dataset::make("DataType", { DataType::U8 });
+const auto data_types_src = framework::dataset::make("DataType", { DataType::QASYMM8 });
+#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
+const auto data_types_dst = framework::dataset::make("DataType", { DataType::F16, DataType::F32 });
+#else  /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */
 const auto data_types_dst = framework::dataset::make("DataType", { DataType::F32 });
+#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */
 } // namespace
 
 using NEDequantizationLayerFixture = DequantizationLayerFixture<Tensor, NEDequantizationLayer, Accessor>;
@@ -53,7 +57,7 @@
                                 framework::DatasetMode::ALL,
                                 framework::dataset::combine(framework::dataset::combine(datasets::Small3DShapes(), data_types_src), data_types_dst));
 
-TEST_SUITE_END()
+TEST_SUITE_END() // NEON
 } // namespace benchmark
 } // namespace test
 } // namespace arm_compute
diff --git a/tests/benchmark/fixtures/DequantizationLayerFixture.h b/tests/benchmark/fixtures/DequantizationLayerFixture.h
index 5ea8b2d..316098b 100644
--- a/tests/benchmark/fixtures/DequantizationLayerFixture.h
+++ b/tests/benchmark/fixtures/DequantizationLayerFixture.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 ARM Limited.
+ * Copyright (c) 2017-2019 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -44,25 +44,18 @@
     template <typename...>
     void setup(TensorShape shape, DataType data_type_src, DataType data_type_dst)
     {
-        TensorShape shape_min_max = shape;
-        shape_min_max.set(Window::DimX, 2);
-
-        // Remove Y and Z dimensions and keep the batches
-        shape_min_max.remove_dimension(1);
-        shape_min_max.remove_dimension(1);
+        const QuantizationInfo q_info(0.5f, -10);
 
         // Create tensors
-        src     = create_tensor<TensorType>(shape, data_type_src);
-        dst     = create_tensor<TensorType>(shape, data_type_dst);
-        min_max = create_tensor<TensorType>(shape_min_max, data_type_dst);
+        src = create_tensor<TensorType>(shape, data_type_src, 1, q_info);
+        dst = create_tensor<TensorType>(shape, data_type_dst, 1, q_info);
 
         // Create and configure function
-        dequantization_func.configure(&src, &dst, &min_max);
+        dequantization_func.configure(&src, &dst);
 
         // Allocate tensors
         src.allocator()->allocate();
         dst.allocator()->allocate();
-        min_max.allocator()->allocate();
     }
 
     void run()
@@ -80,13 +73,11 @@
     {
         src.allocator()->free();
         dst.allocator()->free();
-        min_max.allocator()->free();
     }
 
 private:
     TensorType src{};
     TensorType dst{};
-    TensorType min_max{};
     Function   dequantization_func{};
 };
 } // namespace benchmark