inline int32x2_t cv_vrnd_s32_f32(float32x2_t v) { static int32x2_t v_sign = vdup_n_s32(1 << 31), v_05 = vreinterpret_s32_f32(vdup_n_f32(0.5f)); int32x2_t v_addition = vorr_s32(v_05, vand_s32(v_sign, vreinterpret_s32_f32(v))); return vcvt_s32_f32(vadd_f32(v, vreinterpret_f32_s32(v_addition))); }
void test_vaddf32 (void) { float32x2_t out_float32x2_t; float32x2_t arg0_float32x2_t; float32x2_t arg1_float32x2_t; out_float32x2_t = vadd_f32 (arg0_float32x2_t, arg1_float32x2_t); }
static inline void mix_block_into(cbox_sample_t **outputs, int oofs, float *src_leftright) { float *dst_left = outputs[oofs]; float *dst_right = outputs[oofs + 1]; for (size_t i = 0; i < CBOX_BLOCK_SIZE; i += 2) { float32x2_t lr1 = vld1_f32(&src_leftright[2 * i]); float32x2_t lr2 = vld1_f32(&src_leftright[2 * i + 2]); float32x2x2_t lr12 = vtrn_f32(lr1, lr2); float32x2_t dl1 = vld1_f32(&dst_left[i]); float32x2_t dr1 = vld1_f32(&dst_right[i]); float32x2_t l1 = vadd_f32(dl1, lr12.val[0]); vst1_f32(&dst_left[i], l1); float32x2_t r1 = vadd_f32(dr1, lr12.val[1]); vst1_f32(&dst_right[i], r1); } }
inline uint32x2_t cv_vrnd_u32_f32(float32x2_t v) { static float32x2_t v_05 = vdup_n_f32(0.5f); return vcvt_u32_f32(vadd_f32(v, v_05)); }
inline float32x2_t vadd(const float32x2_t & v0, const float32x2_t & v1) { return vadd_f32(v0, v1); }