From 54cbe5eec30a3ad956fd4cc4c25e81dc64d265b6 Mon Sep 17 00:00:00 2001 From: arpi Date: Mon, 27 Jan 2003 21:47:25 +0000 Subject: The two attached patches *should* allow for proper compilation of the AltiVec stuff on both Darwin and non-Darwin system. They've only been tested for compilation on Debian using Debian's gcc-3.2. Romain Dolbeau git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9123 b3059339-0415-0410-9bf9-f77b7e298cf2 --- mp3lib/Makefile | 4 ++++ mp3lib/dct64_altivec.c | 22 ++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'mp3lib') diff --git a/mp3lib/Makefile b/mp3lib/Makefile index 592691a32f..389da3af3e 100644 --- a/mp3lib/Makefile +++ b/mp3lib/Makefile @@ -26,7 +26,11 @@ ifeq ($(TARGET_ARCH_POWERPC),yes) ifeq ($(TARGET_ALTIVEC),yes) SRCS += dct64_altivec.c OBJS += dct64_altivec.o +ifeq ($(TARGET_OS),Darwin) CFLAGS += -faltivec +else +CFLAGS += -maltivec -mabi=altivec +endif endif endif diff --git a/mp3lib/dct64_altivec.c b/mp3lib/dct64_altivec.c index fa252da20c..62299e274a 100644 --- a/mp3lib/dct64_altivec.c +++ b/mp3lib/dct64_altivec.c @@ -13,6 +13,10 @@ #ifdef HAVE_ALTIVEC +#ifndef SYS_DARWIN +#include +#endif + // used to build registers permutation vectors (vcprm) // the 's' are for words in the _s_econd vector #define WORD_0 0x00,0x01,0x02,0x03 @@ -24,7 +28,11 @@ #define WORD_s2 0x18,0x19,0x1a,0x1b #define WORD_s3 0x1c,0x1d,0x1e,0x1f +#ifdef SYS_DARWIN #define vcprm(a,b,c,d) (const vector unsigned char)(WORD_ ## a, WORD_ ## b, WORD_ ## c, WORD_ ## d) +#else +#define vcprm(a,b,c,d) (const vector unsigned char){WORD_ ## a, WORD_ ## b, WORD_ ## c, WORD_ ## d} +#endif // vcprmle is used to keep the same index as in the SSE version. // it's the same as vcprm, with the index inversed @@ -36,7 +44,17 @@ #define FLOAT_n -1. #define FLOAT_p 1. +#ifdef SYS_DARWIN #define vcii(a,b,c,d) (const vector float)(FLOAT_ ## a, FLOAT_ ## b, FLOAT_ ## c, FLOAT_ ## d) +#else +#define vcii(a,b,c,d) (const vector float){FLOAT_ ## a, FLOAT_ ## b, FLOAT_ ## c, FLOAT_ ## d} +#endif + +#ifdef SYS_DARWIN +#define FOUROF(a) (a) +#else +#define FOUROF(a) {a,a,a,a} +#endif void dct64_altivec(real *a,real *b,real *c) { @@ -47,7 +65,7 @@ void dct64_altivec(real *a,real *b,real *c) real *out1 = b; real *samples = c; - const vector float vczero = (const vector float)(0.); + const vector float vczero = (const vector float)FOUROF(0.); const vector unsigned char reverse = (const vector unsigned char)vcprm(3,2,1,0); @@ -521,5 +539,5 @@ void dct64_altivec(real *a,real *b,real *c) out1[0x10*15] = b1[0x1F]; } -#endif HAVE_ALTIVEC +#endif /* HAVE_ALTIVEC */ -- cgit v1.2.3