summaryrefslogtreecommitdiffstats
path: root/mp3lib/dct64_altivec.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-27 21:47:25 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-27 21:47:25 +0000
commit54cbe5eec30a3ad956fd4cc4c25e81dc64d265b6 (patch)
tree730f05e8c86d86b1c8383c5eabb8a673198b77a3 /mp3lib/dct64_altivec.c
parent85ea1a5733395160c41c46e19c4a6c268f9de901 (diff)
downloadmpv-54cbe5eec30a3ad956fd4cc4c25e81dc64d265b6.tar.bz2
mpv-54cbe5eec30a3ad956fd4cc4c25e81dc64d265b6.tar.xz
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 <dolbeau@irisa.fr> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9123 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mp3lib/dct64_altivec.c')
-rw-r--r--mp3lib/dct64_altivec.c22
1 files changed, 20 insertions, 2 deletions
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 <altivec.h>
+#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 */