32 return from_raw(simd::platforms::load_u32_4(
reinterpret_cast<const u32*
>(ptr)));
37 simd::platforms::store_u32_4(
reinterpret_cast<u32*
>(ptr),
raw);
42 return from_raw(simd::platforms::set1_u32_4(
static_cast<u32
>(
value.raw())));
62 auto zero = simd::set1_u32_4(0);
83 auto mask = simd::sra_i32_4(
raw, 31);
85 auto flipped = simd::xor_u32_4(
raw, mask);
86 return from_raw(simd::sub_i32_4(flipped, mask));
108 auto diff = b - (*this);
109 return (*
this) + (diff * t_vec);
117 static constexpr i32 RAD_TO_24 = 2670177;
120 auto angles_u32 = simd::mulhi_su32_4(
raw, simd::set1_u32_4(
static_cast<u32
>(RAD_TO_24)));
126 out_sin =
from_raw(simd::sra_i32_4(sc.sin_vals, 15));
127 out_cos =
from_raw(simd::sra_i32_4(sc.cos_vals, 15));
Alignment macros and utilities for FastLED.
constexpr i32 raw() const FL_NOEXCEPT
platforms::simd_u32x4 simd_u32x4
constexpr int type_rank< T >::value
FASTLED_FORCE_INLINE SinCos32_simd sincos32_simd(simd::simd_u32x4 angles) FL_NOEXCEPT
Process 4 angles simultaneously, returning vectorized sin/cos values SIMD-optimized: vectorized angle...
expected< T, E > result
Alias for expected (Rust-style naming)
Base definition for an LED controller.
#define FASTLED_FORCE_INLINE
Umbrella header for SIMD subsystem.
Cross-type SIMD fixed-point operations (implemented after all types are defined)
4-wide s0x32 vector (normalized values [-1, 1]) Backed by 128-bit SIMD register (4× i32 in Q31 format...
FASTLED_FORCE_INLINE s16x16x4 min(s16x16x4 b) const
Element-wise minimum.
FASTLED_FORCE_INLINE s16x16x4 clamp(s16x16x4 lo, s16x16x4 hi) const
Clamp to [lo, hi].
FASTLED_FORCE_INLINE s16x16x4 operator-(s16x16x4 b) const
FASTLED_FORCE_INLINE s16x16x4 cos() const
Compute cosine of 4 angles (in radians)
FASTLED_FORCE_INLINE s16x16x4 operator-() const
FASTLED_FORCE_INLINE s16x16x4 operator*(s16x16x4 b) const
FASTLED_FORCE_INLINE void store(s16x16 *ptr) const
FASTLED_FORCE_INLINE void sincos(s16x16x4 &out_sin, s16x16x4 &out_cos) const
Compute sin and cos of 4 angles (in radians) Results written to out_sin and out_cos.
FASTLED_FORCE_INLINE s16x16x4 sin() const
Compute sine of 4 angles (in radians)
FASTLED_FORCE_INLINE s16x16x4 abs() const
Absolute value: branchless via mask and xor.
FASTLED_FORCE_INLINE s16x16x4 operator>>(int shift) const
static FASTLED_FORCE_INLINE s16x16x4 from_raw(simd::simd_u32x4 r)
FASTLED_FORCE_INLINE s16x16x4 operator<<(int shift) const
FASTLED_FORCE_INLINE s16x16x4 max(s16x16x4 b) const
Element-wise maximum.
static FASTLED_FORCE_INLINE s16x16x4 load(const s16x16 *ptr)
static FASTLED_FORCE_INLINE s16x16x4 set1(s16x16 value)
FASTLED_FORCE_INLINE s16x16x4 lerp(s16x16x4 b, s16x16 t) const
Linear interpolation: a + (b - a) * t (using Q16 multiply) t: s16x16 interpolation factor in [0,...
FASTLED_FORCE_INLINE s16x16x4 operator+(s16x16x4 b) const
4-wide s16x16 vector (general fixed-point) Backed by 128-bit SIMD register (4× i32 in Q16 format)