summaryrefslogtreecommitdiffstats
path: root/mp3lib
diff options
context:
space:
mode:
authorzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-08 14:38:25 +0000
committerzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-08 14:38:25 +0000
commitdd053ddd67f28af122189a8a11c32637061d35c5 (patch)
tree528672c2ca37338d8b24fba7edc49944ab4f0242 /mp3lib
parentc8e819bb7c9402d271f88c180ca741b5fd13f3fd (diff)
downloadmpv-dd053ddd67f28af122189a8a11c32637061d35c5.tar.bz2
mpv-dd053ddd67f28af122189a8a11c32637061d35c5.tar.xz
Enable SIMD optmizations for mp3lib on AMD64
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23515 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mp3lib')
-rw-r--r--mp3lib/Makefile5
-rw-r--r--mp3lib/decod386.c4
-rw-r--r--mp3lib/sr1.c15
3 files changed, 13 insertions, 11 deletions
diff --git a/mp3lib/Makefile b/mp3lib/Makefile
index d6de14c3bb..be0dc46c40 100644
--- a/mp3lib/Makefile
+++ b/mp3lib/Makefile
@@ -3,12 +3,13 @@ include ../config.mak
LIBNAME_COMMON = libmp3.a
SRCS_COMMON = sr1.c
+SRCS_COMMON-$(TARGET_MMX) += decode_MMX.c
+SRCS_COMMON-$(TARGET_SSE) += dct64_sse.c
ifeq ($(TARGET_ARCH_X86_32),yes)
SRCS_COMMON += decode_i586.c
-SRCS_COMMON-$(TARGET_MMX) += decode_MMX.c dct64_MMX.c
+SRCS_COMMON-$(TARGET_MMX) += dct64_MMX.c
SRCS_COMMON-$(TARGET_3DNOW) += dct36_3dnow.c dct64_3dnow.c
SRCS_COMMON-$(TARGET_3DNOWEX) += dct36_k7.c dct64_k7.c
-SRCS_COMMON-$(TARGET_SSE) += dct64_sse.c
endif
SRCS_COMMON-$(TARGET_ALTIVEC) += dct64_altivec.c
diff --git a/mp3lib/decod386.c b/mp3lib/decod386.c
index 61b891e130..465ddb43e2 100644
--- a/mp3lib/decod386.c
+++ b/mp3lib/decod386.c
@@ -102,7 +102,7 @@ static int synth_1to1_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt)
static synth_func_t synth_func;
-#if defined(CAN_COMPILE_X86_ASM) && defined(HAVE_MMX)
+#ifdef HAVE_MMX
extern int synth_1to1_MMX( real *bandPtr,int channel,short * samples);
#endif
@@ -125,7 +125,7 @@ static int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
*pnt += 128;
/* optimized for x86 */
-#if defined(CAN_COMPILE_X86_ASM)
+#ifdef ARCH_X86
if ( synth_func )
{
// printf("Calling %p, bandPtr=%p channel=%d samples=%p\n",synth_func,bandPtr,channel,samples);
diff --git a/mp3lib/sr1.c b/mp3lib/sr1.c
index 9b607d0bfd..6f098ba9be 100644
--- a/mp3lib/sr1.c
+++ b/mp3lib/sr1.c
@@ -32,8 +32,10 @@
#include "libvo/fastmemcpy.h"
-#ifdef ARCH_X86_32
-#define CAN_COMPILE_X86_ASM
+#ifdef ARCH_X86_64
+// 3DNow! and 3DNow!Ext routines don't compile under AMD64
+#undef HAVE_3DNOW
+#undef HAVE_3DNOWEX
#endif
//static FILE* mp3_file=NULL;
@@ -137,7 +139,7 @@ LOCAL unsigned int getbits_fast(short number_of_bits)
// if(MP3_frames>=7741) printf("getbits_fast: bits=%d bitsleft=%d wordptr=%x\n",number_of_bits,bitsleft,wordpointer);
if((bitsleft-=number_of_bits)<0) return 0;
if(!number_of_bits) return 0;
-#if defined(CAN_COMPILE_X86_ASM)
+#ifdef ARCH_X86
rval = bswap_16(*((uint16_t *)wordpointer));
#else
/*
@@ -180,7 +182,7 @@ LOCAL void set_pointer(int backstep)
LOCAL int stream_head_read(unsigned char *hbuf,uint32_t *newhead){
if(mp3_read(hbuf,4) != 4) return FALSE;
-#if defined(CAN_COMPILE_X86_ASM)
+#ifdef ARCH_X86
*newhead = bswap_32(*((uint32_t*)hbuf));
#else
/*
@@ -415,8 +417,6 @@ void MP3_Init(){
make_decode_tables(outscale);
-#ifdef CAN_COMPILE_X86_ASM
-
#ifdef HAVE_MMX
if (gCpuCaps.hasMMX)
{
@@ -451,6 +451,7 @@ void MP3_Init(){
}
else
#endif
+#ifdef ARCH_X86_32
#ifdef HAVE_MMX
if (gCpuCaps.hasMMX)
{
@@ -465,7 +466,7 @@ void MP3_Init(){
mp_msg(MSGT_DECAUDIO,MSGL_V,"mp3lib: using Pentium optimized decore!\n");
}
else
-#endif
+#endif /* ARCH_X86_32 */
#ifdef HAVE_ALTIVEC
if (gCpuCaps.hasAltiVec)
{