diff options
Diffstat (limited to 'src/core/NEON/wrapper/traits.h')
-rw-r--r-- | src/core/NEON/wrapper/traits.h | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/core/NEON/wrapper/traits.h b/src/core/NEON/wrapper/traits.h index b786e44bc7..1dac61af74 100644 --- a/src/core/NEON/wrapper/traits.h +++ b/src/core/NEON/wrapper/traits.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2021 Arm Limited. + * Copyright (c) 2018-2021, 2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,14 +21,23 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_WRAPPER_TRAITS_H -#define ARM_COMPUTE_WRAPPER_TRAITS_H +#ifndef ACL_SRC_CORE_NEON_WRAPPER_TRAITS_H +#define ACL_SRC_CORE_NEON_WRAPPER_TRAITS_H + +#include "arm_compute/core/CoreTypes.h" + +#if defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) +#include "src/cpu/CpuTypes.h" // required for float16_t +#endif // defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) #include <arm_neon.h> -#if defined(__ARM_FEATURE_SVE) +#if defined(ARM_COMPUTE_ENABLE_SVE) && defined(__ARM_FEATURE_SVE) #include <arm_sve.h> -#endif /* defined(__ARM_FEATURE_SVE) */ +#endif /* defined(ARM_COMPUTE_ENABLE_SVE) && defined(__ARM_FEATURE_SVE) */ + +#include <cmath> +#include <cstdint> namespace arm_compute { @@ -44,7 +53,7 @@ struct vector_64_tag {}; /** 128-bit vector tag */ struct vector_128_tag {}; -/** Create the appropriate Neon vector given its type and size in terms of elements */ +/** Create the appropriate SIMD vector given its type and size in terms of elements */ template <typename T, int S> struct neon_vector; // Specializations @@ -88,7 +97,7 @@ enum class BitWidth W128, /**< 128-bit width */ }; -/** Create the appropriate Neon vector given its type and size in terms of bits */ +/** Create the appropriate SIMD vector given its type and size in terms of bits */ template <typename T, BitWidth BW> struct neon_bitvector; // Specializations #ifndef DOXYGEN_SKIP_THIS @@ -116,13 +125,13 @@ template <> struct neon_bitvector<float16_t, BitWidth::W128>{ using type = float #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC -#if defined(__ARM_FEATURE_SVE) +#if defined(ARM_COMPUTE_ENABLE_SVE) && defined(__ARM_FEATURE_SVE) /** Create the appropriate SVE vector given its type */ template <typename T> struct sve_vector; template <> struct sve_vector<uint8_t>{ using scalar_type = uint8_t; using type = svuint8_t; }; template <> struct sve_vector<int8_t>{ using scalar_type = int8_t; using type = svint8_t; }; -#endif /* defined(__ARM_FEATURE_SVE) */ +#endif /* defined(ARM_COMPUTE_ENABLE_SVE) && defined(__ARM_FEATURE_SVE) */ #endif /* DOXYGEN_SKIP_THIS */ @@ -151,4 +160,4 @@ using promote_t = typename promote<T>::type; } // namespace traits } // namespace wrapper } // namespace arm_compute -#endif /* ARM_COMPUTE_WRAPPER_TRAITS_H */ +#endif // ACL_SRC_CORE_NEON_WRAPPER_TRAITS_H |