82 |
using __RTMath<IMPLEMENTATION>::Float; |
using __RTMath<IMPLEMENTATION>::Float; |
83 |
using LinuxSampler::Resampler<INTERPOLATE>::GetNextSampleMonoCPP; |
using LinuxSampler::Resampler<INTERPOLATE>::GetNextSampleMonoCPP; |
84 |
using LinuxSampler::Resampler<INTERPOLATE>::GetNextSampleStereoCPP; |
using LinuxSampler::Resampler<INTERPOLATE>::GetNextSampleStereoCPP; |
85 |
#if ARCH_X86 |
#if CONFIG_ASM && ARCH_X86 |
86 |
using LinuxSampler::Resampler<INTERPOLATE>::GetNext4SamplesMonoMMXSSE; |
using LinuxSampler::Resampler<INTERPOLATE>::GetNext4SamplesMonoMMXSSE; |
87 |
using LinuxSampler::Resampler<INTERPOLATE>::GetNext4SamplesStereoMMXSSE; |
using LinuxSampler::Resampler<INTERPOLATE>::GetNext4SamplesStereoMMXSSE; |
88 |
#endif |
#endif |
107 |
Voice.PitchBase, |
Voice.PitchBase, |
108 |
Voice.PitchBend, |
Voice.PitchBend, |
109 |
&panLeft, &panRight); |
&panLeft, &panRight); |
110 |
#if ARCH_X86 |
#if CONFIG_ASM && ARCH_X86 |
111 |
if (INTERPOLATE) EMMS; |
if (INTERPOLATE) EMMS; |
112 |
#endif |
#endif |
113 |
Voice.Pos = (double) fPos; |
Voice.Pos = (double) fPos; |
197 |
case CPP: { |
case CPP: { |
198 |
return uint((LoopEnd - *((double *)Pos)) / Pitch); |
return uint((LoopEnd - *((double *)Pos)) / Pitch); |
199 |
} |
} |
200 |
#if ARCH_X86 |
#if CONFIG_ASM && ARCH_X86 |
201 |
case ASM_X86_MMX_SSE: { |
case ASM_X86_MMX_SSE: { |
202 |
int result; |
int result; |
203 |
__asm__ __volatile__ ( |
__asm__ __volatile__ ( |
212 |
); |
); |
213 |
return result; |
return result; |
214 |
} |
} |
215 |
#endif // ARCH_X86 |
#endif // CONFIG_ASM && ARCH_X86 |
216 |
} |
} |
217 |
} |
} |
218 |
|
|
232 |
*Pos = fmod(*Pos - LoopEnd, LoopSize) + LoopStart; |
*Pos = fmod(*Pos - LoopEnd, LoopSize) + LoopStart; |
233 |
return 1; |
return 1; |
234 |
} |
} |
235 |
#if ARCH_X86 |
#if CONFIG_ASM && ARCH_X86 |
236 |
case ASM_X86_MMX_SSE: { |
case ASM_X86_MMX_SSE: { |
237 |
int result = 0; |
int result = 0; |
238 |
__asm__ __volatile__ ( |
__asm__ __volatile__ ( |
264 |
); |
); |
265 |
return result; |
return result; |
266 |
} |
} |
267 |
#endif // ARCH_X86 |
#endif // CONFIG_ASM && ARCH_X86 |
268 |
} |
} |
269 |
} |
} |
270 |
|
|
301 |
} |
} |
302 |
break; |
break; |
303 |
} |
} |
304 |
#if ARCH_X86 |
#if CONFIG_ASM && ARCH_X86 |
305 |
// Assembly optimization using the MMX & SSE(1) instruction set (thus only for x86) |
// Assembly optimization using the MMX & SSE(1) instruction set (thus only for x86) |
306 |
case ASM_X86_MMX_SSE: { |
case ASM_X86_MMX_SSE: { |
307 |
const int ii = i & 0xfffffffc; |
const int ii = i & 0xfffffffc; |
387 |
"r" (&pOutR[ii]) /* %1 - must be 16 byte aligned ! */ |
"r" (&pOutR[ii]) /* %1 - must be 16 byte aligned ! */ |
388 |
); |
); |
389 |
} |
} |
390 |
#endif // ARCH_X86 |
#endif // CONFIG_ASM && ARCH_X86 |
391 |
} |
} |
392 |
} |
} |
393 |
}; |
}; |