11#define BINARY_SINGLE() \
12 template <typename T> \
13 T operator()(T x, T y) { \
14 return (*this)(Simd<T, 1>(x), Simd<T, 1>(y)).value; \
17#define DEFAULT_BINARY_OP(Op, op) \
19 template <int N, typename T> \
20 Simd<T, N> operator()(Simd<T, N> x, Simd<T, N> y) { \
43#define DEFAULT_BOOL_OP(Op, op) \
45 template <int N, typename T> \
46 Simd<bool, N> operator()(Simd<T, N> x, Simd<T, N> y) { \
49 template <typename T> \
50 bool operator()(T x, T y) { \
51 return (*this)(Simd<T, 1>(x), Simd<T, 1>(y)).value; \
63 template <
int N,
typename T>
74 template <
int N,
typename T>
78 auto mask = minval == -
inf || maxval ==
inf;
79 auto out = maxval +
log1p(
exp(minval - maxval));
92 template <
int N,
typename T>
94 return select(condition, x, y);
#define DEFAULT_BINARY_OP(Op, op)
Definition binary_ops.h:17
#define DEFAULT_BOOL_OP(Op, op)
Definition binary_ops.h:43
#define BINARY_SINGLE()
Definition binary_ops.h:11
Definition binary_ops.h:7
Definition accelerate_fp16_simd.h:9
Simd< bool, N > isnan(Simd< T, N > v)
Definition accelerate_simd.h:146
Simd< T, N > minimum(Simd< T, N > a, Simd< T, N > b)
Definition accelerate_simd.h:215
Simd< float16_t, N > pow(Simd< float16_t, N > x, Simd< float16_t, N > y)
Definition accelerate_fp16_simd.h:54
Simd< float16_t, N > atan2(Simd< float16_t, N > x, Simd< float16_t, N > y)
Definition accelerate_fp16_simd.h:52
constexpr float inf
Definition math.h:9
Simd< T, N > maximum(Simd< T, N > a, Simd< T, N > b)
Definition accelerate_simd.h:209
Simd< T, N > exp(Simd< T, N > in)
Compute exp(x) in an optimizer friendly way as follows:
Definition math.h:28
Simd< float16_t, N > remainder(Simd< float16_t, N > x, Simd< float16_t, N > y)
Definition accelerate_fp16_simd.h:53
Simd< float16_t, N > log1p(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:40
Simd< T1, N > select(Simd< MaskT, N > mask, Simd< T1, N > x, Simd< T2, N > y)
Definition accelerate_simd.h:236
Definition binary_ops.h:26
Definition binary_ops.h:27
Definition binary_ops.h:33
Definition binary_ops.h:34
Definition binary_ops.h:35
Definition binary_ops.h:28
Definition binary_ops.h:55
Definition binary_ops.h:57
Definition binary_ops.h:56
Definition binary_ops.h:36
Definition binary_ops.h:59
Definition binary_ops.h:58
Definition binary_ops.h:73
Simd< T, N > operator()(Simd< T, N > x, Simd< T, N > y)
Definition binary_ops.h:75
Definition binary_ops.h:31
Definition binary_ops.h:32
Definition binary_ops.h:39
Definition binary_ops.h:40
Definition binary_ops.h:29
Definition binary_ops.h:62
bool operator()(T x, T y)
Definition binary_ops.h:68
Simd< bool, N > operator()(Simd< T, N > x, Simd< T, N > y)
Definition binary_ops.h:64
Definition binary_ops.h:60
Definition binary_ops.h:41
Definition binary_ops.h:38
Definition binary_ops.h:37
Definition binary_ops.h:85
Simd< T, N > operator()(Simd< bool, N > condition, Simd< T, N > x, Simd< T, N > y)
Definition binary_ops.h:93
T operator()(bool condition, T x, T y)
Definition binary_ops.h:87
Definition binary_ops.h:30
Definition accelerate_simd.h:55