|
|
| version 1.5, 2004/05/22 16:35:08 | version 1.6, 2004/06/26 15:48:35 |
|---|---|
| Line 349 void | Line 349 void |
| soundmng_setreverse(BOOL reverse) | soundmng_setreverse(BOOL reverse) |
| { | { |
| #if defined(GCC_CPU_ARCH_IA32) | #if defined(GCC_CPU_ARCH_AMD64) |
| if (!reverse) { | |
| if (mmxflag & (MMXFLAG_NOTSUPPORT|MMXFLAG_DISABLE)) { | |
| fnmix = satuation_s16; | |
| } else { | |
| fnmix = saturation_s16mmx; | |
| } | |
| } else { | |
| fnmix = satuation_s16x; | |
| } | |
| #elif defined(GCC_CPU_ARCH_IA32) | |
| if (!reverse) { | if (!reverse) { |
| if (mmxflag & (MMXFLAG_NOTSUPPORT|MMXFLAG_DISABLE)) { | if (mmxflag & (MMXFLAG_NOTSUPPORT|MMXFLAG_DISABLE)) { |
| fnmix = _saturation_s16; | fnmix = _saturation_s16; |
| Line 646 snddrv_stop(void) | Line 656 snddrv_stop(void) |
| #endif /* USE_NETBSDAUDIO || USE_OSSAUDIO || USE_ESDAUDIO */ | #endif /* USE_NETBSDAUDIO || USE_OSSAUDIO || USE_ESDAUDIO */ |
| #if defined(GCC_CPU_ARCH_IA32) | #if defined(GCC_CPU_ARCH_AMD64) |
| void PARTSCALL | |
| saturation_s16mmx(SINT16 *dst, const SINT32 *src, UINT size) | |
| { | |
| asm volatile ( | |
| "movq %0, %%rcx;" | |
| "movq %1, %%rdx;" | |
| "movl %2, %%eax;" | |
| "shrl $3, %%eax;" | |
| "je .ss16m_ed;" | |
| "pxor %%mm0, %%mm0;" | |
| ".ss16m_lp:" | |
| "movq (%%rdx), %%mm1;" | |
| "movq 8(%%rdx), %%mm2;" | |
| "packssdw %%mm2, %%mm1;" | |
| "leaq 16(%%rdx), %%rdx;" | |
| "movq %%mm1, (%%rcx);" | |
| "leaq 8(%%rcx), %%rcx;" | |
| "dec %%eax;" | |
| "jne .ss16m_lp;" | |
| "emms;" | |
| ".ss16m_ed:" | |
| : /* output */ | |
| : "m" (dst), "m" (src), "m" (size)); | |
| } | |
| #elif defined(GCC_CPU_ARCH_IA32) | |
| void PARTSCALL | void PARTSCALL |
| _saturation_s16(SINT16 *dst, const SINT32 *src, UINT size) | _saturation_s16(SINT16 *dst, const SINT32 *src, UINT size) |
| { | { |
| Line 746 saturation_s16mmx(SINT16 *dst, const SIN | Line 782 saturation_s16mmx(SINT16 *dst, const SIN |
| : /* output */ | : /* output */ |
| : "m" (dst), "m" (src), "m" (size)); | : "m" (dst), "m" (src), "m" (size)); |
| } | } |
| #endif /* __GNUC__ && GCC_CPU_ARCH_IA32 */ | #endif /* GCC_CPU_ARCH_AMD64 */ |
| #endif /* !NOSOUND */ | #endif /* !NOSOUND */ |