aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/reference/DepthConvertLayer.cpp
diff options
context:
space:
mode:
authorMichalis Spyrou <michalis.spyrou@arm.com>2018-12-13 18:31:18 +0000
committerGeorgios Pinitas <georgios.pinitas@arm.com>2018-12-18 17:42:09 +0000
commite2588184240b4850f62859ca9f3c5e95c9d8e129 (patch)
tree4ce1b722eb6a2ca2eda2920667ea477b1c005352 /tests/validation/reference/DepthConvertLayer.cpp
parent5e96be7707a571b136dc64256af399dbbb0fdfe0 (diff)
downloadComputeLibrary-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/DepthConvertLayer.cpp')
-rw-r--r--tests/validation/reference/DepthConvertLayer.cpp21
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