aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/core
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-08-31 11:46:49 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:54:54 +0000
commit565bf2d88df1790373f0ff92b8cc9e90dbf28d11 (patch)
tree3932538a61d370890bfe4c41ee49a987d6a40757 /arm_compute/core
parentbda6e4b51bc4045c97100bb9d562164ba7c6c28f (diff)
downloadComputeLibrary-565bf2d88df1790373f0ff92b8cc9e90dbf28d11.tar.gz
COMPMID-1514: Add validate to NEFloor and CLFloor
COMPMID-1515: Add FP16 support to NEFloor and CLFloor Change-Id: Ib63a62c7681056ee13be99ce081b4d3949da4217 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/146547 Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Diffstat (limited to 'arm_compute/core')
-rw-r--r--arm_compute/core/CL/kernels/CLFloorKernel.h14
-rw-r--r--arm_compute/core/NEON/NEMath.inl9
-rw-r--r--arm_compute/core/NEON/kernels/NEFloorKernel.h13
3 files changed, 31 insertions, 5 deletions
diff --git a/arm_compute/core/CL/kernels/CLFloorKernel.h b/arm_compute/core/CL/kernels/CLFloorKernel.h
index ffe699e280..930d90f903 100644
--- a/arm_compute/core/CL/kernels/CLFloorKernel.h
+++ b/arm_compute/core/CL/kernels/CLFloorKernel.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -48,10 +48,18 @@ public:
~CLFloorKernel() = default;
/** Set the source, destination of the kernel
*
- * @param[in] input Source tensor. Data type supported: F32.
- * @param[out] output Destination tensor. Data type supported: F32.
+ * @param[in] input Source tensor. Data type supported: F16/F32.
+ * @param[out] output Destination tensor. Same as @p input
*/
void configure(const ICLTensor *input, ICLTensor *output);
+ /** Static function to check if given info will lead to a valid configuration of @ref CLFloorKernel
+ *
+ * @param[in] input Source tensor info. Data type supported: F16/F32.
+ * @param[in] output Destination tensor info. Same as @p input
+ *
+ * @return a status
+ */
+ static Status validate(const ITensorInfo *input, const ITensorInfo *output);
// Inherited methods overridden:
void run(const Window &window, cl::CommandQueue &queue) override;
diff --git a/arm_compute/core/NEON/NEMath.inl b/arm_compute/core/NEON/NEMath.inl
index 1ebc9c10af..2bc1ab7964 100644
--- a/arm_compute/core/NEON/NEMath.inl
+++ b/arm_compute/core/NEON/NEMath.inl
@@ -175,6 +175,15 @@ inline float32x4_t vpowq_f32(float32x4_t val, float32x4_t n)
/** Exponent polynomial coefficients */
/** Logarithm polynomial coefficients */
#ifndef DOXYGEN_SKIP_THIS
+inline float16x8_t vfloorq_f16(float16x8_t val)
+{
+ static const float16x8_t CONST_1 = vdupq_n_f16(1.f);
+
+ const int16x8_t z = vcvtq_s16_f16(val);
+ const float16x8_t r = vcvtq_f16_s16(z);
+
+ return vbslq_f16(vcgtq_f16(r, val), vsubq_f16(r, CONST_1), r);
+}
inline float16x4_t vinvsqrt_f16(float16x4_t x)
{
float16x4_t sqrt_reciprocal = vrsqrte_f16(x);
diff --git a/arm_compute/core/NEON/kernels/NEFloorKernel.h b/arm_compute/core/NEON/kernels/NEFloorKernel.h
index b72d0527cc..6269430ddc 100644
--- a/arm_compute/core/NEON/kernels/NEFloorKernel.h
+++ b/arm_compute/core/NEON/kernels/NEFloorKernel.h
@@ -40,10 +40,19 @@ public:
}
/** Set the source, destination of the kernel
*
- * @param[in] input Source tensor. Data type supported: F32.
- * @param[out] output Destination tensor. Data type supported: F32.
+ * @param[in] input Source tensor. Data type supported: F16/F32.
+ * @param[out] output Destination tensor. Same as @p input
*/
void configure(const ITensor *input, ITensor *output);
+ /** Static function to check if given info will lead to a valid configuration of @ref NEFloorKernel
+ *
+ * @param[in] input Source tensor info. Data type supported: F16/F32.
+ * @param[in] output Destination tensor info. Same as @p input
+ *
+ * @return a status
+ */
+ static Status validate(const ITensorInfo *input, const ITensorInfo *output);
+
// Inherited methods overridden:
void run(const Window &window, const ThreadInfo &info) override;
};