mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2026-02-05 04:06:31 -05:00
SSE/MMX: Fix problem with highpitched noise on i386
The "rm" basm constraint doesn't work with my version of gcc (4.5.2), not even in a simple example. Since we usually only have 5 registers available on i386, force it to be memory on that architecture. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
This commit is contained in:
parent
22c0dcbc08
commit
c3bfcc9fdb
2 changed files with 20 additions and 4 deletions
|
|
@ -155,7 +155,11 @@ pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
|
|||
" emms \n\t"
|
||||
|
||||
: "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
|
||||
: "rm" ((pa_reg_x86)channels)
|
||||
#if defined (__i386__)
|
||||
: "m" ((pa_reg_x86)channels)
|
||||
#else
|
||||
: "r" ((pa_reg_x86)channels)
|
||||
#endif
|
||||
: "cc"
|
||||
);
|
||||
}
|
||||
|
|
@ -232,7 +236,11 @@ pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
|
|||
" emms \n\t"
|
||||
|
||||
: "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
|
||||
: "rm" ((pa_reg_x86)channels)
|
||||
#if defined (__i386__)
|
||||
: "m" ((pa_reg_x86)channels)
|
||||
#else
|
||||
: "r" ((pa_reg_x86)channels)
|
||||
#endif
|
||||
: "cc"
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,7 +154,11 @@ pa_volume_s16ne_sse2 (int16_t *samples, int32_t *volumes, unsigned channels, uns
|
|||
"8: \n\t"
|
||||
|
||||
: "+r" (samples), "+r" (volumes), "+r" (length), "=D" (channel), "=&r" (temp)
|
||||
: "rm" ((pa_reg_x86)channels)
|
||||
#if defined (__i386__)
|
||||
: "m" ((pa_reg_x86)channels)
|
||||
#else
|
||||
: "r" ((pa_reg_x86)channels)
|
||||
#endif
|
||||
: "cc"
|
||||
);
|
||||
}
|
||||
|
|
@ -244,7 +248,11 @@ pa_volume_s16re_sse2 (int16_t *samples, int32_t *volumes, unsigned channels, uns
|
|||
"8: \n\t"
|
||||
|
||||
: "+r" (samples), "+r" (volumes), "+r" (length), "=D" (channel), "=&r" (temp)
|
||||
: "rm" ((pa_reg_x86)channels)
|
||||
#if defined (__i386__)
|
||||
: "m" ((pa_reg_x86)channels)
|
||||
#else
|
||||
: "r" ((pa_reg_x86)channels)
|
||||
#endif
|
||||
: "cc"
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue