From b412fab0e3c8ec10e104f4d85760898a5b26179c Mon Sep 17 00:00:00 2001 From: Manuel Bottini Date: Mon, 10 Dec 2018 17:40:23 +0000 Subject: COMPMID-1724: CL Implement Prod Change-Id: I17e51f25064b53a8f7e13d6fcbecc14a192de103 Reviewed-on: https://review.mlplatform.org/387 Reviewed-by: Georgios Pinitas Tested-by: Arm Jenkins --- arm_compute/core/PixelValue.h | 50 ++++++++++++++++++++++++++++++++++++++++++- arm_compute/core/Types.h | 9 ++++---- 2 files changed, 54 insertions(+), 5 deletions(-) (limited to 'arm_compute/core') diff --git a/arm_compute/core/PixelValue.h b/arm_compute/core/PixelValue.h index 530cc166a2..e86eeba121 100644 --- a/arm_compute/core/PixelValue.h +++ b/arm_compute/core/PixelValue.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -39,6 +39,54 @@ public: : value{ uint64_t(0) } { } + /** Initialize the union with a pixel value of chosen datatype + * + * @param[in] v int value. + * @param[in] datatype DataType that @p v have to be stored + */ + PixelValue(uint64_t v, DataType datatype) + : PixelValue() + { + switch(datatype) + { + case DataType::U8: + value.u8 = static_cast(v); + break; + case DataType::S8: + value.s8 = static_cast(v); + break; + case DataType::U16: + value.u16 = static_cast(v); + break; + case DataType::S16: + value.s16 = static_cast(v); + break; + case DataType::U32: + value.u32 = static_cast(v); + break; + case DataType::S32: + value.s32 = static_cast(v); + break; + case DataType::U64: + value.u64 = static_cast(v); + break; + case DataType::S64: + value.s16 = static_cast(v); + break; + case DataType::F16: + value.f16 = static_cast(v); + break; + case DataType::F32: + value.f32 = static_cast(v); + break; + case DataType::F64: + value.f64 = static_cast(v); + break; + default: + value.u64 = v; + break; + } + } /** Initialize the union with a U8 pixel value * * @param[in] v U8 value. diff --git a/arm_compute/core/Types.h b/arm_compute/core/Types.h index dc87617f55..317c8990fa 100644 --- a/arm_compute/core/Types.h +++ b/arm_compute/core/Types.h @@ -538,11 +538,12 @@ enum class NonLinearFilterFunction : unsigned /** Available reduction operations */ enum class ReductionOperation { - SUM_SQUARE, /**< Sum of squares */ - SUM, /**< Sum */ - MEAN_SUM, /**< Mean of sum */ ARG_IDX_MAX, /**< Index of the max value */ - ARG_IDX_MIN /**< Index of the min value */ + ARG_IDX_MIN, /**< Index of the min value */ + MEAN_SUM, /**< Mean of sum */ + PROD, /**< Product */ + SUM_SQUARE, /**< Sum of squares */ + SUM /**< Sum */ }; /** Available element-wise operations */ -- cgit v1.2.1