changeset 29601:cd3ae709054f

Disable liba52 SSE imdct for x86_64+PIC (e.g. OSX 64 bit) since it will not compile for that combination.
author reimar
date Fri, 04 Sep 2009 10:31:24 +0000
parents 577c86f00dd1
children 8f25ecc08eb0
files liba52/imdct.c liba52/liba52_changes.diff
diffstat 2 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/liba52/imdct.c	Fri Sep 04 09:50:17 2009 +0000
+++ b/liba52/imdct.c	Fri Sep 04 10:31:24 2009 +0000
@@ -727,6 +727,7 @@
 #define HAVE_AMD3DNOWEXT 1
 #include "imdct_3dnow.h"
 
+#if !ARCH_X86_64 || !defined(PIC)
 void
 imdct_do_512_sse(sample_t data[],sample_t delay[], sample_t bias)
 {
@@ -1060,6 +1061,7 @@
 		: "%"REG_S, "%"REG_D
 	);
 }
+#endif
 #endif // ARCH_X86 || ARCH_X86_64
 
 void a52_imdct_256(sample_t * data, sample_t * delay, sample_t bias)
@@ -1259,12 +1261,14 @@
 	ifft64 = ifft64_c;
 
 #if ARCH_X86 || ARCH_X86_64
+#if !ARCH_X86_64 || !defined(PIC)
 	if(mm_accel & MM_ACCEL_X86_SSE)
 	{
 	  fprintf (stderr, "Using SSE optimized IMDCT transform\n");
 	  a52_imdct_512 = imdct_do_512_sse;
 	}
 	else
+#endif
 	if(mm_accel & MM_ACCEL_X86_3DNOWEXT)
 	{
 	  fprintf (stderr, "Using 3DNowEx optimized IMDCT transform\n");
--- a/liba52/liba52_changes.diff	Fri Sep 04 09:50:17 2009 +0000
+++ b/liba52/liba52_changes.diff	Fri Sep 04 10:31:24 2009 +0000
@@ -1504,7 +1504,7 @@
  {
      int i, k;
      sample_t t_r, t_i, a_r, a_i, b_r, b_i, w_1, w_2;
-@@ -285,6 +366,702 @@
+@@ -285,6 +366,704 @@
      }
  }
 
@@ -1869,6 +1869,7 @@
 +#define HAVE_AMD3DNOWEXT 1
 +#include "imdct_3dnow.h"
 +
++#if !ARCH_X86_64 || !defined(PIC)
 +void
 +imdct_do_512_sse(sample_t data[],sample_t delay[], sample_t bias)
 +{
@@ -2202,12 +2203,13 @@
 +		: "%"REG_S, "%"REG_D
 +	);
 +}
++#endif
 +#endif // ARCH_X86 || ARCH_X86_64
 +
  void a52_imdct_256(sample_t * data, sample_t * delay, sample_t bias)
  {
      int i, k;
-@@ -364,7 +1141,7 @@
+@@ -364,7 +1143,7 @@
 
  void a52_imdct_init (uint32_t mm_accel)
  {
@@ -2216,7 +2218,7 @@
      double sum;
 
      /* compute imdct window - kaiser-bessel derived window, alpha = 5.0 */
-@@ -416,6 +1193,99 @@
+@@ -416,6 +1195,101 @@
  	post2[i].real = cos ((M_PI / 128) * (i + 0.5));
  	post2[i].imag = sin ((M_PI / 128) * (i + 0.5));
      }
@@ -2286,12 +2288,14 @@
 +	ifft64 = ifft64_c;
 +
 +#if ARCH_X86 || ARCH_X86_64
++#if !ARCH_X86_64 || !defined(PIC)
 +	if(mm_accel & MM_ACCEL_X86_SSE)
 +	{
 +	  fprintf (stderr, "Using SSE optimized IMDCT transform\n");
 +	  a52_imdct_512 = imdct_do_512_sse;
 +	}
 +	else
++#endif
 +	if(mm_accel & MM_ACCEL_X86_3DNOWEXT)
 +	{
 +	  fprintf (stderr, "Using 3DNowEx optimized IMDCT transform\n");
@@ -2316,7 +2320,7 @@
 
  #ifdef LIBA52_DJBFFT
      if (mm_accel & MM_ACCEL_DJBFFT) {
-@@ -426,7 +1296,5 @@
+@@ -426,7 +1300,5 @@
  #endif
      {
  	fprintf (stderr, "No accelerated IMDCT transform found\n");