From ddb93bbf12fc9d685e7ddbef703a886d67cbda9b Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Fri, 2 Oct 2020 16:38:59 +0100 Subject: COMPMID-3637: Move wrapper to src Signed-off-by: Georgios Pinitas Change-Id: I524b0c4b49c7a7035b7d078b9585d77b0d438e10 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4083 Reviewed-by: Michele Di Giorgio Reviewed-by: Michalis Spyrou Comments-Addressed: Arm Jenkins --- .../kernels/detail/NEActivationFunctionDetail.h | 315 --------------------- 1 file changed, 315 deletions(-) delete mode 100644 arm_compute/core/NEON/kernels/detail/NEActivationFunctionDetail.h (limited to 'arm_compute/core/NEON/kernels/detail/NEActivationFunctionDetail.h') diff --git a/arm_compute/core/NEON/kernels/detail/NEActivationFunctionDetail.h b/arm_compute/core/NEON/kernels/detail/NEActivationFunctionDetail.h deleted file mode 100644 index 067a18cb62..0000000000 --- a/arm_compute/core/NEON/kernels/detail/NEActivationFunctionDetail.h +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright (c) 2018-2020 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_DETAIL_NEACTIVATION_FUNCTION_DETAIL_H -#define ARM_COMPUTE_DETAIL_NEACTIVATION_FUNCTION_DETAIL_H - -#include "arm_compute/core/NEON/wrapper/wrapper.h" - -namespace arm_compute -{ -namespace detail -{ -/** Dummy activation object */ -template -struct dummy -{ - /** NEON vector type. */ - using ExactType = typename wrapper::traits::neon_vector::type; - - /** Construct a dummy activation object. - * - * @param[in] act_info Activation layer information. - */ - explicit dummy(ActivationLayerInfo act_info) - { - ARM_COMPUTE_UNUSED(act_info); - } - - /** Run activation function. - * - * @param[in] vval Vector of values. - */ - void operator()(ExactType &vval) - { - ARM_COMPUTE_UNUSED(vval); - } - - /** Run activation function. - * - * @param[in] val Scalar value. - */ - void operator()(T &val) - { - ARM_COMPUTE_UNUSED(val); - } -}; -/** Linear activation object */ -template -struct linear -{ - /** NEON vector type. */ - using ExactType = typename wrapper::traits::neon_vector::type; - /** NEON vector tag type. */ - using ExactTagType = typename wrapper::traits::neon_vector::tag_type; - - /** Construct a Linear activation object. - * - * @param[in] act_info Activation layer information. - */ - explicit linear(ActivationLayerInfo act_info) - : alpha(act_info.a()), - beta(act_info.b()), - valpha(wrapper::vdup_n(static_cast(alpha), ExactTagType{})), - vbeta(wrapper::vdup_n(static_cast(beta), ExactTagType{})) - { - } - - /** Run activation function. - * - * @param[in] vval Vector of values. - */ - void operator()(ExactType &vval) - { - vval = wrapper::vmla(vbeta, vval, valpha); - } - - /** Run activation function. - * - * @param[in] val Scalar value. - */ - void operator()(T &val) - { - val = alpha * val + beta; - } - - const T alpha; /**< Scalar alpha */ - const T beta; /**< Scalar alpha */ - const ExactType valpha; /**< Vector of alphas. */ - const ExactType vbeta; /**< Vector of betas. */ -}; -/** Square activation object */ -template -struct square -{ - /** NEON vector type. */ - using ExactType = typename wrapper::traits::neon_vector::type; - /** NEON vector tag type. */ - using ExactTagType = typename wrapper::traits::neon_vector::tag_type; - - /** Construct a Square activation object. - * - * @param[in] act_info Activation layer information. - */ - explicit square(ActivationLayerInfo act_info) - { - ARM_COMPUTE_UNUSED(act_info); - } - - /** Run activation function. - * - * @param[in] vval Vector of values. - */ - void operator()(ExactType &vval) - { - vval = wrapper::vmul(vval, vval); - } - - /** Run activation function. - * - * @param[in] val Scalar value. - */ - void operator()(T &val) - { - val = val * val; - } -}; -/** Logistic activation object */ -template -struct logistic -{ - /** NEON vector type. */ - using ExactType = typename wrapper::traits::neon_vector::type; - /** NEON vector tag type. */ - using ExactTagType = typename wrapper::traits::neon_vector::tag_type; - - /** Construct a Logistic activation object. - * - * @param[in] act_info Activation layer information. - */ - explicit logistic(ActivationLayerInfo act_info) - : vone(wrapper::vdup_n(static_cast(1), ExactTagType{})) - { - ARM_COMPUTE_UNUSED(act_info); - } - - /** Run activation function. - * - * @param[in] vval Vector of values. - */ - void operator()(ExactType &vval) - { - vval = wrapper::vinv(wrapper::vadd(vone, wrapper::vexpq(wrapper::vneg(vval)))); - } - - /** Run activation function. - * - * @param[in] val Scalar value. - */ - void operator()(T &val) - { - val = 1 / (1 + std::exp(-val)); - } - - /** Vector of ones. */ - const ExactType vone; -}; -/** RELU activation object */ -template -struct relu -{ - /** NEON vector type. */ - using ExactType = typename wrapper::traits::neon_vector::type; - /** NEON vector tag type. */ - using ExactTagType = typename wrapper::traits::neon_vector::tag_type; - - /** Construct a RELU activation object. - * - * @param[in] act_info Activation layer information. - */ - explicit relu(ActivationLayerInfo act_info) - : vzero(wrapper::vdup_n(static_cast(0), ExactTagType{})) - { - ARM_COMPUTE_UNUSED(act_info); - } - - /** Run activation function. - * - * @param[in] vval Vector of values. - */ - void operator()(ExactType &vval) - { - vval = wrapper::vmax(vzero, vval); - } - - /** Run activation function. - * - * @param[in] val Scalar value. - */ - void operator()(T &val) - { - val = std::max(static_cast(0), val); - } - - /** Vector of zeroes. */ - const ExactType vzero; -}; -/** Bounded RELU activation object */ -template -struct brelu -{ - /** NEON vector type. */ - using ExactType = typename wrapper::traits::neon_vector::type; - /** NEON vector tag type. */ - using ExactTagType = typename wrapper::traits::neon_vector::tag_type; - - /** Construct a bounded RELU activation object. - * - * @param[in] act_info Activation layer information. - */ - explicit brelu(ActivationLayerInfo act_info) - : alpha(act_info.a()), - vzero(wrapper::vdup_n(static_cast(0), ExactTagType{})), - valpha(wrapper::vdup_n(static_cast(act_info.a()), ExactTagType{})) - { - } - - /** Run activation function. - * - * @param[in] vval Vector of values. - */ - void operator()(ExactType &vval) - { - vval = wrapper::vmin(valpha, wrapper::vmax(vzero, vval)); - } - - /** Run activation function. - * - * @param[in] val Scalar value. - */ - void operator()(T &val) - { - val = std::min(alpha, std::max(static_cast(0), val)); - } - - const T alpha; /** Scalar alpha */ - const ExactType vzero; /** Vector of zeroes. */ - const ExactType valpha; /** Vector of alphas. */ -}; -/** Lower-Upper Bounded RELU activation object */ -template -struct lubrelu -{ - /** NEON vector type. */ - using ExactType = typename wrapper::traits::neon_vector::type; - /** NEON vector tag type. */ - using ExactTagType = typename wrapper::traits::neon_vector::tag_type; - - /** Construct a lower-upper bounded RELU activation object. - * - * @param[in] act_info Activation layer information. - */ - explicit lubrelu(ActivationLayerInfo act_info) - : alpha(act_info.a()), - beta(act_info.b()), - valpha(wrapper::vdup_n(static_cast(act_info.a()), ExactTagType{})), - vbeta(wrapper::vdup_n(static_cast(act_info.b()), ExactTagType{})) - { - } - - /** Run activation function. - * - * @param[in] vval Vector of values. - */ - void operator()(ExactType &vval) - { - vval = wrapper::vmin(valpha, wrapper::vmax(vbeta, vval)); - } - - /** Run activation function. - * - * @param[in] val Scalar value. - */ - void operator()(T &val) - { - val = std::min(alpha, std::max(beta, val)); - } - - const T alpha; /**< Scalar alpha */ - const T beta; /**< Scalar alpha */ - const ExactType valpha; /** Vector of alphas. */ - const ExactType vbeta; /** Vector of betas. */ -}; -} // namespace detail -} // namespace arm_compute -#endif /* ARM_COMPUTE_DETAIL_NEACTIVATION_FUNCTION_DETAIL_H */ -- cgit v1.2.1