Commit f3bbe4bb authored by Max Kellermann's avatar Max Kellermann

pcm/Volume: remove optimized i386 assembly

This code is unable to dither. Until we implement that, let's remove the code for now. i386 isn't relevant anymore anyway.
parent 2a3a18a2
...@@ -42,56 +42,6 @@ pcm_volume_sample(typename Traits::value_type _sample, ...@@ -42,56 +42,6 @@ pcm_volume_sample(typename Traits::value_type _sample,
return PcmClamp<F, Traits>(sample); return PcmClamp<F, Traits>(sample);
} }
#ifdef __i386__
/**
* Optimized volume function for i386. Use the EDX:EAX 2*32 bit
* multiplication result instead of emulating 64 bit multiplication.
*/
static inline int32_t
pcm_volume_sample_24(int32_t sample, int32_t volume, gcc_unused int32_t dither)
{
int32_t result;
asm(/* edx:eax = sample * volume */
"imul %2\n"
/* "add %3, %1\n" dithering disabled for now, because we
have no overflow check - is dithering really important
here? */
/* eax = edx:eax / PCM_VOLUME_1 */
"sal $22, %%edx\n"
"shr $10, %1\n"
"or %%edx, %1\n"
: "=a"(result)
: "0"(sample), "r"(volume) /* , "r"(dither) */
: "edx"
);
return result;
}
template<>
inline int32_t
pcm_volume_sample<SampleFormat::S24_P32,
SampleTraits<SampleFormat::S24_P32>>(int32_t sample,
int volume)
{
return pcm_volume_sample_24(sample, volume, pcm_volume_dither());
}
template<>
inline int32_t
pcm_volume_sample<SampleFormat::S32,
SampleTraits<SampleFormat::S32>>(int32_t sample, int volume)
{
return pcm_volume_sample_24(sample, volume, pcm_volume_dither());
}
#endif
template<SampleFormat F, class Traits=SampleTraits<F>> template<SampleFormat F, class Traits=SampleTraits<F>>
static void static void
pcm_volume_change(typename Traits::pointer_type dest, pcm_volume_change(typename Traits::pointer_type dest,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment