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
38
ix!();
use crate::{
WTOscillator,
};
impl WTOscillator {
pub fn maybe_handle_overlap(&mut self, stereo: bool) {
if self.blitter.bufpos == 0 {
let mut overlap_l = [unsafe{ z128![] }; FIR_IPOL_N >> 2];
let mut overlap_r = [unsafe{ z128![] }; FIR_IPOL_N >> 2];
for k in (0..(FIR_IPOL_N)).step_by(4) {
unsafe {
overlap_l[k >> 2] = _mm_load_ps(&self.blitter.oscbuffer_l[OB_LENGTH + k]);
_mm_store_ps(&mut self.blitter.oscbuffer_l[k], overlap_l[k >> 2]);
_mm_store_ps(&mut self.blitter.oscbuffer_l[OB_LENGTH + k], z128![]);
if stereo {
overlap_r[k >> 2] = _mm_load_ps(&self.blitter.oscbuffer_r[OB_LENGTH + k]);
_mm_store_ps(&mut self.blitter.oscbuffer_r[k], overlap_r[k >> 2]);
_mm_store_ps(&mut self.blitter.oscbuffer_r[OB_LENGTH + k], z128![]);
}
}
}
}
}
}