9#ifndef SGL_FIXED_POINT_NEON_H_
10#define SGL_FIXED_POINT_NEON_H_
36 prod_lo = vmull_s16(vget_low_s16(a), vget_low_s16(b));
37 prod_hi = vmull_s16(vget_high_s16(a), vget_high_s16(b));
46 result = vcombine_s16(vqmovn_s32(prod_lo), vqmovn_s32(prod_hi));
68 prod0 = vmull_s32(vget_low_s32(a), vget_low_s32(b));
69 prod1 = vmull_s32(vget_high_s32(a), vget_high_s32(b));
74 result = vcombine_s32(
95 u16_lo = vqmovun_s32(lo);
96 u16_hi = vqmovun_s32(hi);
97 result = vqmovn_u16(vcombine_u16(u16_lo, u16_hi));
#define SGL_ALWAYS_INLINE
Requests compiler-enforced inlining.
int16x8_t sgl_simd_q11_t
Eight signed 16-bit Q11 lanes.
static sgl_simd_q11_ext_t sgl_simd_q11_ext_mul(sgl_simd_q11_ext_t a, sgl_simd_q11_ext_t b)
Multiplies four extended Q11 lane pairs.
static sgl_simd_q11_t sgl_simd_q11_mul(sgl_simd_q11_t a, sgl_simd_q11_t b)
Multiplies eight Q11 lane pairs with rounding and saturation.
#define SGL_Q11_FRAC_BITS
Number of fractional bits in a Q11 value.
static uint8x8_t sgl_simd_clamp_u8_i32(int32x4_t lo, int32x4_t hi)
Saturates eight signed 32-bit channel lanes to unsigned bytes.
int32x4_t sgl_simd_q11_ext_t
Four signed 32-bit extended Q11 lanes.