24 #ifndef ACL_SUPPORT_TOOLCHAINSUPPORT_H
25 #define ACL_SUPPORT_TOOLCHAINSUPPORT_H
37 #include <type_traits>
40 #define M_PI (3.14159265358979323846)
45 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
46 typedef __fp16 float16_t;
47 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
53 #if (__ANDROID__ || BARE_METAL)
69 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
70 inline T
round(T value)
84 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
85 inline long lround(T value)
99 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
100 inline T
trunc(T value)
115 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
132 template <
typename T,
133 typename =
typename std::enable_if<std::is_floating_point<T>::value
134 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
135 || std::is_same<T, float16_t>::value
136 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
138 inline T
fma(T x, T y, T z)
154 template <
typename... Ts>
155 inline int snprintf(
char *s,
size_t n,
const char *fmt, Ts &&...
args)
169 template <
typename T>
184 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
199 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
214 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
230 template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>
::type>
247 template <
typename T,
248 typename =
typename std::enable_if<std::is_floating_point<T>::value
249 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
250 || std::is_same<T, float16_t>::value
251 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
253 inline T
fma(T x, T y, T z)
269 template <
typename... Ts>
270 inline int snprintf(
char *s, std::size_t n,
const char *fmt, Ts &&...
args)
277 template <
typename T>
283 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
285 inline __fp16 lowest<__fp16>()
298 template <typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value>
::type>
315 template <typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value>
::type>
333 #endif // ACL_SUPPORT_TOOLCHAINSUPPORT_H