1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
ix!();

use crate::{
    Reverb,
    REVERB_TAP_BITS,
};

impl Reverb {

    #[inline] pub fn do_post_tap(&mut self, 
        tap: usize, 
        fb4: __m128, 
        l: &mut __m128, 
        r: &mut __m128) 
    {
        unsafe {

            let ot: __m128 = _mm_load_ps(&self.out_tap[tap]);

            let dfb: __m128 = _mm_load_ps(&self.delay_fb[tap]);

            let a: __m128 = _mm_mul_ps(dfb, _mm_add_ps(fb4, ot));

            _mm_store_ps(&mut self.delay[( self.delay_pos << REVERB_TAP_BITS) + tap as usize], a);

            *l = _mm_add_ps(*l, _mm_mul_ps(ot, _mm_load_ps(&
                        self.delay_pan_l[tap])));

            *r = _mm_add_ps(*r, _mm_mul_ps(ot, _mm_load_ps(&
                        self.delay_pan_r[tap])));
        }
    }
}