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
34
35
36
37
ix!();
use crate::{
Reverb,
};
impl Reverb {
#[inline] pub fn do_pre_tap(&mut self,
tap: usize,
damp4: __m128,
damp4m1: __m128)
{
unsafe {
let mut newa: __m128 = _mm_load_ss(&self.delay[self.delay_idx(tap,0)]);
let newb: __m128 = _mm_load_ss(&self.delay[self.delay_idx(tap,1)]);
newa = _mm_unpacklo_ps(newa, newb);
let mut newc: __m128 = _mm_load_ss(&self.delay[self.delay_idx(tap,2)]);
let newd: __m128 = _mm_load_ss(&self.delay[self.delay_idx(tap,3)]);
newc = _mm_unpacklo_ps(newc, newd);
let new4: __m128 = _mm_movelh_ps(newa, newc);
let mut out_tap4: __m128 = _mm_load_ps(& self.out_tap[tap]);
out_tap4 = _mm_add_ps(
_mm_mul_ps(out_tap4, damp4),
_mm_mul_ps(new4, damp4m1)
);
_mm_store_ps(&mut self.out_tap[tap], out_tap4);
}
}
}