diff options
author | Michalis Spyrou <michalis.spyrou@arm.com> | 2018-12-13 18:31:18 +0000 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2018-12-18 17:42:09 +0000 |
commit | e2588184240b4850f62859ca9f3c5e95c9d8e129 (patch) | |
tree | 4ce1b722eb6a2ca2eda2920667ea477b1c005352 /tests/validation/reference | |
parent | 5e96be7707a571b136dc64256af399dbbb0fdfe0 (diff) | |
download | ComputeLibrary-e2588184240b4850f62859ca9f3c5e95c9d8e129.tar.gz |
COMPMID-1755 NEON: Extend DepthConvert to support Cast
Change-Id: I8e2ed9e97cbe86d8caf162bd84ecfd9b43b0bd3b
Reviewed-on: https://review.mlplatform.org/401
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giuseppe Rossini <giuseppe.rossini@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'tests/validation/reference')
-rw-r--r-- | tests/validation/reference/DepthConvertLayer.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/tests/validation/reference/DepthConvertLayer.cpp b/tests/validation/reference/DepthConvertLayer.cpp index c1fd9c51f7..6d9f98db5a 100644 --- a/tests/validation/reference/DepthConvertLayer.cpp +++ b/tests/validation/reference/DepthConvertLayer.cpp @@ -48,7 +48,14 @@ SimpleTensor<T2> depth_convert(const SimpleTensor<T1> &src, DataType dt_out, Con { for(int i = 0; i < src.num_elements(); ++i) { - result[i] = src[i] << shift; + if(is_data_type_quantized(src.data_type())) + { + result[i] = scvt_f32_qasymm8(src[i], src.quantization_info().scale, src.quantization_info().offset); + } + else + { + result[i] = src[i] << shift; + } } } // Down-casting @@ -75,8 +82,16 @@ SimpleTensor<T2> depth_convert(const SimpleTensor<T1> &src, DataType dt_out, Con // Always saturate on floats for(int i = 0; i < src.num_elements(); ++i) { - T1 val = utils::rounding::round_half_away_from_zero(src[i]); - result[i] = utils::cast::saturate_cast<T2>(val); + if(is_data_type_quantized(dt_out)) + { + T1 val = utils::rounding::round_half_away_from_zero(src[i]); + result[i] = sqcvt_qasymm8_f32(val, src.quantization_info().scale, src.quantization_info().offset); + } + else + { + T1 val = utils::rounding::round_half_away_from_zero(src[i]); + result[i] = utils::cast::saturate_cast<T2>(val); + } } } else |