MLX
 
Loading...
Searching...
No Matches
accelerate_fp16_simd.h
Go to the documentation of this file.
1#pragma once
2
4
5#if MLX_SIMD_LIBRARY_VERSION < 6
7#endif
8
9namespace mlx::core::simd {
10
11#if MLX_SIMD_LIBRARY_VERSION >= 6
12constexpr int N = 8;
13template <int N>
14struct ScalarT<float16_t, N> {
15 using v = _Float16;
16};
17#endif
18
19template <>
20static constexpr int max_size<float16_t> = N;
21
22#define SIMD_FP16_DEFAULT_UNARY(op) \
23 template <> \
24 inline Simd<float16_t, N> op(Simd<float16_t, N> v) { \
25 Simd<float, N> in = v; \
26 return op(in); \
27 }
28
44
45#define SIMD_FP16_DEFAULT_BINARY(op) \
46 template <> \
47 inline Simd<float16_t, N> op(Simd<float16_t, N> x, Simd<float16_t, N> y) { \
48 Simd<float, N> a = x; \
49 Simd<float, N> b = y; \
50 return op(a, b); \
51 }
55
56} // namespace mlx::core::simd
#define SIMD_FP16_DEFAULT_UNARY(op)
Definition accelerate_fp16_simd.h:22
#define SIMD_FP16_DEFAULT_BINARY(op)
Definition accelerate_fp16_simd.h:45
Definition accelerate_fp16_simd.h:9
Simd< float16_t, N > sinh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:41
constexpr int N
Definition neon_fp16_simd.h:9
Simd< float16_t, N > atanh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:34
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
Simd< float16_t, N > log10(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:39
Simd< float16_t, N > tan(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:42
Simd< float16_t, N > acosh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:30
Simd< float16_t, N > log2(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:38
Simd< float16_t, N > log(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:37
Simd< float16_t, N > expm1(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:36
Simd< float16_t, N > asin(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:31
Simd< float16_t, N > tanh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:43
Simd< float16_t, N > atan(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:33
Simd< float16_t, N > asinh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:32
Simd< float16_t, N > remainder(Simd< float16_t, N > x, Simd< float16_t, N > y)
Definition accelerate_fp16_simd.h:53
static constexpr int max_size
Definition base_simd.h:14
Simd< float16_t, N > log1p(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:40
Simd< float16_t, N > acos(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:29
Simd< float16_t, N > cosh(Simd< float16_t, N > v)
Definition accelerate_fp16_simd.h:35
struct _MLX_Float16 float16_t
Definition half_types.h:17
Definition accelerate_simd.h:34
T v
Definition accelerate_simd.h:35