diff options
author | Michele Di Giorgio <michele.digiorgio@arm.com> | 2019-09-10 10:42:27 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2019-09-16 14:43:54 +0000 |
commit | d87a7b297a5bfc2bad3ba78ea97754d7894e82ef (patch) | |
tree | c527ede747d386fe8dd1b39a877ea4e9a19a5fd3 /tests/validation/reference | |
parent | e874ef9b845424dceeac4211ca9dfec24949f03c (diff) | |
download | ComputeLibrary-d87a7b297a5bfc2bad3ba78ea97754d7894e82ef.tar.gz |
COMPMID-2650: Add support for QASYMM16 in CLQuantizationLayer
Change-Id: I51dda621975f522a65d770304bed0ff0f30d1235
Signed-off-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Reviewed-on: https://review.mlplatform.org/c/1902
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'tests/validation/reference')
-rw-r--r-- | tests/validation/reference/QuantizationLayer.cpp | 35 | ||||
-rw-r--r-- | tests/validation/reference/QuantizationLayer.h | 4 |
2 files changed, 29 insertions, 10 deletions
diff --git a/tests/validation/reference/QuantizationLayer.cpp b/tests/validation/reference/QuantizationLayer.cpp index 182585abf9..ae23f7ec27 100644 --- a/tests/validation/reference/QuantizationLayer.cpp +++ b/tests/validation/reference/QuantizationLayer.cpp @@ -33,26 +33,45 @@ namespace validation { namespace reference { -template <typename T> -SimpleTensor<uint8_t> quantization_layer(const SimpleTensor<T> &src, const QuantizationInfo &quantization_info) +template <typename Tin, typename Tout> +SimpleTensor<Tout> quantization_layer(const SimpleTensor<Tin> &src, DataType output_data_type, const QuantizationInfo &quantization_info) { // Create reference - SimpleTensor<uint8_t> dst{ src.shape(), DataType::QASYMM8, 1, quantization_info }; + SimpleTensor<Tout> dst{ src.shape(), output_data_type, 1, quantization_info }; const UniformQuantizationInfo qinfo = quantization_info.uniform(); - for(int i = 0; i < src.num_elements(); ++i) + switch(output_data_type) { + case DataType::QASYMM8: + for(int i = 0; i < src.num_elements(); ++i) + { #ifdef __aarch64__ - dst[i] = quantize_qasymm8((src[i]), qinfo, RoundingPolicy::TO_NEAREST_EVEN); + dst[i] = quantize_qasymm8((src[i]), qinfo, RoundingPolicy::TO_NEAREST_EVEN); #else // __aarch64__ - dst[i] = quantize_qasymm8((src[i]), qinfo, RoundingPolicy::TO_ZERO); + dst[i] = quantize_qasymm8((src[i]), qinfo, RoundingPolicy::TO_ZERO); #endif // __aarch64__ + } + break; + case DataType::QASYMM16: + for(int i = 0; i < src.num_elements(); ++i) + { +#ifdef __aarch64__ + dst[i] = quantize_qasymm16((src[i]), qinfo, RoundingPolicy::TO_NEAREST_EVEN); +#else // __aarch64__ + dst[i] = quantize_qasymm16((src[i]), qinfo, RoundingPolicy::TO_ZERO); +#endif // __aarch64__ + } + break; + default: + ARM_COMPUTE_ERROR("Unsupported output data type"); } return dst; } -template SimpleTensor<uint8_t> quantization_layer(const SimpleTensor<half> &src, const QuantizationInfo &quantization_info); -template SimpleTensor<uint8_t> quantization_layer(const SimpleTensor<float> &src, const QuantizationInfo &quantization_info); +template SimpleTensor<uint8_t> quantization_layer(const SimpleTensor<half> &src, DataType output_data_type, const QuantizationInfo &quantization_info); +template SimpleTensor<uint8_t> quantization_layer(const SimpleTensor<float> &src, DataType output_data_type, const QuantizationInfo &quantization_info); +template SimpleTensor<uint16_t> quantization_layer(const SimpleTensor<half> &src, DataType output_data_type, const QuantizationInfo &quantization_info); +template SimpleTensor<uint16_t> quantization_layer(const SimpleTensor<float> &src, DataType output_data_type, const QuantizationInfo &quantization_info); } // namespace reference } // namespace validation } // namespace test diff --git a/tests/validation/reference/QuantizationLayer.h b/tests/validation/reference/QuantizationLayer.h index 462396f131..0e80b4906a 100644 --- a/tests/validation/reference/QuantizationLayer.h +++ b/tests/validation/reference/QuantizationLayer.h @@ -35,8 +35,8 @@ namespace validation { namespace reference { -template <typename T> -SimpleTensor<uint8_t> quantization_layer(const SimpleTensor<T> &src, const QuantizationInfo &quantization_info); +template <typename Tin, typename Tout> +SimpleTensor<Tout> quantization_layer(const SimpleTensor<Tin> &src, DataType output_data_type, const QuantizationInfo &quantization_info); } // namespace reference } // namespace validation } // namespace test |