mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
Merge remote branch 'wtay/optimize'
This commit is contained in:
commit
4e6dce593f
2 changed files with 8 additions and 14 deletions
|
|
@ -57,14 +57,12 @@
|
||||||
" punpcklwd %%mm4, "#s" \n\t" /* .. | 0 | p0 | */ \
|
" punpcklwd %%mm4, "#s" \n\t" /* .. | 0 | p0 | */ \
|
||||||
" pcmpgtw "#v", %%mm4 \n\t" /* .. | 0 | s(vl) | */ \
|
" pcmpgtw "#v", %%mm4 \n\t" /* .. | 0 | s(vl) | */ \
|
||||||
" pand "#s", %%mm4 \n\t" /* .. | 0 | (p0) | (vl >> 15) & p */ \
|
" pand "#s", %%mm4 \n\t" /* .. | 0 | (p0) | (vl >> 15) & p */ \
|
||||||
" movq %%mm6, %%mm5 \n\t" /* .. | ffff | 0 | */ \
|
" movq "#s", %%mm5 \n\t" \
|
||||||
" pand "#v", %%mm5 \n\t" /* .. | vh | 0 | */ \
|
" pmulhw "#v", "#s" \n\t" /* .. | 0 | vl*p0 | */ \
|
||||||
" por %%mm5, %%mm4 \n\t" /* .. | vh | (p0) | */ \
|
" paddw %%mm4, "#s" \n\t" /* .. | 0 | vl*p0 | + sign correct */ \
|
||||||
" pmulhw "#s", "#v" \n\t" /* .. | 0 | vl*p0 | */ \
|
" psrld $16, "#v" \n\t" /* .. | 0 | vh | */ \
|
||||||
" paddw %%mm4, "#v" \n\t" /* .. | vh | vl*p0 | vh + sign correct */ \
|
" pmaddwd %%mm5, "#v" \n\t" /* .. | p0 * vh | */ \
|
||||||
" pslld $16, "#s" \n\t" /* .. | p0 | 0 | */ \
|
" paddd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
|
||||||
" por %%mm7, "#s" \n\t" /* .. | p0 | 1 | */ \
|
|
||||||
" pmaddwd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
|
|
||||||
" packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
|
" packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
|
||||||
|
|
||||||
/* approximately advances %3 = (%3 + a) % b. This function requires that
|
/* approximately advances %3 = (%3 + a) % b. This function requires that
|
||||||
|
|
@ -105,10 +103,6 @@ pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
" xor %3, %3 \n\t"
|
" xor %3, %3 \n\t"
|
||||||
" sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
|
" sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
|
||||||
" pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */
|
|
||||||
" pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */
|
|
||||||
" pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */
|
|
||||||
" psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */
|
|
||||||
|
|
||||||
" test $1, %2 \n\t" /* check for odd samples */
|
" test $1, %2 \n\t" /* check for odd samples */
|
||||||
" je 2f \n\t"
|
" je 2f \n\t"
|
||||||
|
|
@ -239,7 +233,7 @@ pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef RUN_TEST
|
#define RUN_TEST
|
||||||
|
|
||||||
#ifdef RUN_TEST
|
#ifdef RUN_TEST
|
||||||
#define CHANNELS 2
|
#define CHANNELS 2
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
" movdqa "#s", %%xmm5 \n\t" \
|
" movdqa "#s", %%xmm5 \n\t" \
|
||||||
" pmulhuw "#v", "#s" \n\t" /* .. | 0 | vl*p0 | */ \
|
" pmulhuw "#v", "#s" \n\t" /* .. | 0 | vl*p0 | */ \
|
||||||
" psubd %%xmm4, "#s" \n\t" /* .. | 0 | vl*p0 | + sign correct */ \
|
" psubd %%xmm4, "#s" \n\t" /* .. | 0 | vl*p0 | + sign correct */ \
|
||||||
" psrld $16, "#v" \n\t" /* .. | p0 | 0 | */ \
|
" psrld $16, "#v" \n\t" /* .. | 0 | vh | */ \
|
||||||
" pmaddwd %%xmm5, "#v" \n\t" /* .. | p0 * vh | */ \
|
" pmaddwd %%xmm5, "#v" \n\t" /* .. | p0 * vh | */ \
|
||||||
" paddd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
|
" paddd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
|
||||||
" packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
|
" packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue