summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <eradicator@gentoo.org>2004-09-22 20:53:51 +0000
committerJeremy Huddleston <eradicator@gentoo.org>2004-09-22 20:53:51 +0000
commitec81c2e463dce18c916c7da360d352d0a2aa9c22 (patch)
treec1841f3a381d1a46bdc2bf1351dbbed8867da68f /media-libs/libvorbis
parentVersion bump. Removing old versions. (diff)
downloadhistorical-ec81c2e463dce18c916c7da360d352d0a2aa9c22.tar.gz
historical-ec81c2e463dce18c916c7da360d352d0a2aa9c22.tar.bz2
historical-ec81c2e463dce18c916c7da360d352d0a2aa9c22.zip
Version bump. Removing old versions.
Diffstat (limited to 'media-libs/libvorbis')
-rw-r--r--media-libs/libvorbis/ChangeLog7
-rw-r--r--media-libs/libvorbis/files/digest-libvorbis-1.0-r41
-rw-r--r--media-libs/libvorbis/files/libvorbis-m4.patch28
-rw-r--r--media-libs/libvorbis/files/libvorbis-simd.patch1019
-rw-r--r--media-libs/libvorbis/libvorbis-1.0-r2.ebuild65
-rw-r--r--media-libs/libvorbis/libvorbis-1.0-r3.ebuild72
-rw-r--r--media-libs/libvorbis/libvorbis-1.0-r4.ebuild80
-rw-r--r--media-libs/libvorbis/libvorbis-1.0.1.ebuild61
-rw-r--r--media-libs/libvorbis/libvorbis-1.1.0.ebuild (renamed from media-libs/libvorbis/libvorbis-1.0.1-r1.ebuild)32
9 files changed, 28 insertions, 1337 deletions
diff --git a/media-libs/libvorbis/ChangeLog b/media-libs/libvorbis/ChangeLog
index f26a2ec3252d..1fdd1d908556 100644
--- a/media-libs/libvorbis/ChangeLog
+++ b/media-libs/libvorbis/ChangeLog
@@ -1,13 +1,14 @@
# ChangeLog for media-libs/libvorbis
# Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/ChangeLog,v 1.39 2004/09/22 20:51:58 eradicator Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/ChangeLog,v 1.40 2004/09/22 20:53:51 eradicator Exp $
*libvorbis-1.1.0 (22 Sep 2004)
22 Sep 2004; Jeremy Huddleston <eradicator@gentoo.org>
-libvorbis-1.0-r2.ebuild, -libvorbis-1.0-r3.ebuild,
- -libvorbis-1.0.1-r1.ebuild, -libvorbis-1.0.1.ebuild,
- +libvorbis-1.1.0.ebuild:
+ -libvorbis-1.0-r4.ebuild, -libvorbis-1.0.1-r1.ebuild,
+ -libvorbis-1.0.1.ebuild, -files/libvorbis-m4.patch,
+ -files/libvorbis-simd.patch, +libvorbis-1.1.0.ebuild:
Version bump. Removing old versions.
12 Sep 2004; Michael Hanselmann <hansmi@gentoo.org>
diff --git a/media-libs/libvorbis/files/digest-libvorbis-1.0-r4 b/media-libs/libvorbis/files/digest-libvorbis-1.0-r4
deleted file mode 100644
index 6c800c478006..000000000000
--- a/media-libs/libvorbis/files/digest-libvorbis-1.0-r4
+++ /dev/null
@@ -1 +0,0 @@
-MD5 d1ad94fe8e240269c790e18992171e53 libvorbis-1.0.tar.gz 749064
diff --git a/media-libs/libvorbis/files/libvorbis-m4.patch b/media-libs/libvorbis/files/libvorbis-m4.patch
deleted file mode 100644
index 55a82bc98411..000000000000
--- a/media-libs/libvorbis/files/libvorbis-m4.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- libvorbis-1.0/vorbis.m4 2002-07-09 23:08:57.000000000 +1000
-+++ libvorbis-cvs/vorbis.m4 2002-08-07 02:01:40.000000000 +1000
-@@ -54,6 +54,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <vorbis/codec.h>
-+#include <vorbis/vorbisenc.h>
-
- int main ()
- {
-@@ -62,7 +63,7 @@
- vorbis_info vi;
-
- vorbis_info_init (&vi);
-- vorbis_encode_init (&vi, 2, 44100, -1, 128, -1);
-+ vorbis_encode_init (&vi, 2, 44100, -1, 128000, -1);
- vorbis_analysis_init (&vd, &vi);
- vorbis_block_init (&vd, &vb);
- /* this function was added in 1.0rc3, so this is what we're testing for */
-@@ -87,7 +88,7 @@
- else
- echo "*** Could not run Vorbis test program, checking why..."
- CFLAGS="$CFLAGS $VORBIS_CFLAGS"
-- LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
-+ LIBS="$LIBS $VORBIS_LIBS $VORBISENC_LIBS $OGG_LIBS"
- AC_TRY_LINK([
- #include <stdio.h>
- #include <vorbis/codec.h>
diff --git a/media-libs/libvorbis/files/libvorbis-simd.patch b/media-libs/libvorbis/files/libvorbis-simd.patch
deleted file mode 100644
index 85f1d1aef7be..000000000000
--- a/media-libs/libvorbis/files/libvorbis-simd.patch
+++ /dev/null
@@ -1,1019 +0,0 @@
-diff -ur libvorbis-1.0/lib/block.c libvorbis-1.0-simd/lib/block.c
---- libvorbis-1.0/lib/block.c 2002-07-11 08:40:48.000000000 +0200
-+++ libvorbis-1.0-simd/lib/block.c 2003-04-26 20:32:07.000000000 +0200
-@@ -22,6 +22,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <ogg/ogg.h>
-+#include <assert.h>
- #include "vorbis/codec.h"
- #include "codec_internal.h"
-
-@@ -31,6 +32,10 @@
- #include "registry.h"
- #include "misc.h"
-
-+#ifdef __SSE__
-+#include <xmmintrin.h>
-+#endif
-+
- static int ilog2(unsigned int v){
- int ret=0;
- if(v)--v;
-@@ -701,11 +706,95 @@
- /* the overlap/add section */
- if(v->lW){
- if(v->W){
-+#ifdef __SSE__
-+ /* large/large */
-+ float *pcm=v->pcm[j]+prevCenter;
-+ float *p=vb->pcm[j];
-+ unsigned long _pcm=(unsigned long)pcm&15;
-+ unsigned long _p=(unsigned long)p&15;
-+ register __m128* PCM,* P;
-+ i=0;
-+ /* n1 is always 1024, prevCenter is either 0 or 1024 */
-+ /* both pcm and p can be unaligned, and they usually are.
-+ * This code assumes unaligned addresses are still 8-byte
-+ * aligned (which is true because glibc's malloc does 8-byte
-+ * alignment */
-+ if (_pcm) {
-+ pcm[0]+=p[0]; pcm[1]+=p[1];
-+ i=2;
-+ PCM=(__m128*)(pcm+2);
-+ P=(__m128*)(p+2);
-+ } else {
-+ PCM=(__m128*)pcm;
-+ P=(__m128*)p;
-+ }
-+ if (_pcm ^ _p) {
-+ /* one is properly aligned, the other is not */
-+ register __m128 a;
-+ P=(__m128*)((float*)P-2);
-+ a=P[0];
-+ for (; i+7<n1; i+=8) {
-+ register __m128 b=P[1];
-+ /* now we need the upper most floats from a and the lower
-+ * most floats from b */
-+ *PCM=_mm_add_ps(_mm_movehl_ps(_mm_shuffle_ps(b,b,_MM_SHUFFLE(1,0,3,2)),a),*PCM);
-+ a=P[2];
-+ PCM[1]=_mm_add_ps(_mm_movehl_ps(_mm_shuffle_ps(a,a,_MM_SHUFFLE(1,0,3,2)),b),PCM[1]);
-+ PCM+=2; P+=2;
-+ }
-+ } else {
-+ for (; i+3<n1; i+=4) {
-+ *PCM=_mm_add_ps(*P,*PCM);
-+ ++PCM; ++P;
-+ }
-+ }
-+ /* strange, does not appear to happen */
-+ for(;i<n1;i++)
-+ pcm[i]+=p[i];
-+#elif defined(simd_3dn)
-+ assert((n1&1)==0);
-+ asm volatile("jecxz 2f\n\t"
-+ "1: "
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "pfadd (%2),%%mm0\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jz 2f\n\t"
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "pfadd (%2),%%mm0\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jz 2f\n\t"
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "pfadd (%2),%%mm0\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jz 2f\n\t"
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "pfadd (%2),%%mm0\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jz 2f\n\t"
-+ "jmp 1b\n\t"
-+ "2: femms\n\t"
-+ : : "c" (n1),
-+ "r" ((float*)(vb->pcm[j])),
-+ "r" ((float*)(v->pcm[j]+prevCenter)) : "memory" );
-+#else
- /* large/large */
- float *pcm=v->pcm[j]+prevCenter;
- float *p=vb->pcm[j];
- for(i=0;i<n1;i++)
- pcm[i]+=p[i];
-+#endif
- }else{
- /* large/small */
- float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
-@@ -732,12 +821,60 @@
- }
-
- /* the copy section */
-+#ifdef simd_3dn
-+ assert((n&1)==0);
-+ asm volatile("jecxz 2f\n\t"
-+ "testl $1,%%ecx\n\t"
-+ "jz 1f\n\t"
-+ "3: movl (%1),%%eax\n\t"
-+ "addl $4,%1\n\t"
-+ "movl %%eax,(%2)\n\t"
-+ "addl $4,%2\n\t"
-+ "decl %%ecx\n\t"
-+ "jz 2f\n\t"
-+ "1: "
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jc 3b\n\t"
-+ "jz 2f\n\t"
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jc 3b\n\t"
-+ "jz 2f\n\t"
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jc 3b\n\t"
-+ "jz 2f\n\t"
-+ "movq (%1),%%mm0\n\t"
-+ "addl $8,%1\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ "addl $8,%2\n\t"
-+ "subl $2,%%ecx\n\t"
-+ "jc 3b\n\t"
-+ "jz 2f\n\t"
-+ "jmp 1b\n\t"
-+ "2: femms\n\t"
-+ : : "c" (n),
-+ "r" ((float*)(vb->pcm[j]+n)),
-+ "r" ((float*)(v->pcm[j]+thisCenter))
-+ : "%eax", "memory" );
-+#else
- {
- float *pcm=v->pcm[j]+thisCenter;
- float *p=vb->pcm[j]+n;
- for(i=0;i<n;i++)
- pcm[i]=p[i];
- }
-+#endif
- }
-
- if(v->centerW)
-diff -ur libvorbis-1.0/lib/lsp.c libvorbis-1.0-simd/lib/lsp.c
---- libvorbis-1.0/lib/lsp.c 2002-07-17 23:28:37.000000000 +0200
-+++ libvorbis-1.0-simd/lib/lsp.c 2003-04-26 20:32:27.000000000 +0200
-@@ -54,7 +54,12 @@
- #define FLOAT_LOOKUP
- #undef INT_LOOKUP
-
-+#ifdef __SSE__
-+#include <xmmintrin.h>
-+#endif
-+
- #ifdef FLOAT_LOOKUP
-+
- #include "lookup.c" /* catch this in the build system; we #include for
- compilers (like gcc) that can't inline across
- modules */
-@@ -73,17 +78,88 @@
- while(i<n){
- int k=map[i];
- int qexp;
-+#ifdef __SSE__
-+ register __m128 pqpq;
-+ static float __attribute__((aligned(16))) PQPQ[4];
-+ register __m128 wwww;
-+ float pq[2];
-+#define p pq[1]
-+#define q pq[0]
-+#else
-+#ifdef simd_3dn
-+ float pq[2],ww[2];
-+#define p pq[1]
-+#define q pq[0]
-+#define w ww[0]
-+#else
- float p=.7071067812f;
- float q=.7071067812f;
- float w=vorbis_coslook(wdel*k);
-+#endif
-+#endif
- float *ftmp=lsp;
- int c=m>>1;
-
-+#ifdef __SSE__
-+ static float __attribute__((aligned(16))) w;
-+ w=vorbis_coslook(wdel*k);
-+ PQPQ[0]=PQPQ[1]=.7071067812f;
-+ if ((((long)ftmp)&15)==8) {
-+ PQPQ[2]=ftmp[0]-w;
-+ PQPQ[3]=ftmp[1]-w;
-+ --c;
-+ ftmp+=2;
-+ } else {
-+ PQPQ[2]=PQPQ[3]=1.f;
-+ }
-+ pqpq=*(__m128*)&(PQPQ[0]);
-+ wwww=_mm_load1_ps(&w);
-+#define UNROLL
-+#ifdef UNROLL
-+ while (c>3) {
-+ pqpq=_mm_mul_ps(pqpq,_mm_sub_ps(*(__m128*)ftmp,wwww));
-+ ftmp+=4;
-+ pqpq=_mm_mul_ps(pqpq,_mm_sub_ps(*(__m128*)ftmp,wwww));
-+ ftmp+=4;
-+ c-=4;
-+ }
-+#endif
-+ while (c>1) {
-+ pqpq=_mm_mul_ps(pqpq,_mm_sub_ps(*(__m128*)ftmp,wwww));
-+ ftmp+=4;
-+ c-=2;
-+ }
-+ pqpq=_mm_mul_ps(pqpq,_mm_shuffle_ps(pqpq,pqpq,_MM_SHUFFLE(1,0,3,2)));
-+ _mm_storel_pi((__m64*)(&(pq[0])),pqpq);
-+ if (c) {
-+ q*=ftmp[0]-w;
-+ p*=ftmp[1]-w;
-+ ftmp+=2;
-+ };
-+#else
-+#ifdef simd_3dn
-+ pq[0]=pq[1]=.7071067812f;
-+ ww[0]=ww[1]=vorbis_coslook(wdel*k);
-+
-+ asm volatile("movq (%2),%%mm1\n\t" /* mm1 = (w,w) */
-+ "movq (%3),%%mm2\n\t" /* mm2 = (p,q) */
-+ "1: movq (%0),%%mm0\n\t" /* mm0 = (ftmp[0],ftmp[1]) */
-+ "pfsub %%mm1,%%mm0\n\t" /* mm0 = (ftmp[0]-w,ftmp[1]-w) */
-+ "pfmul %%mm0,%%mm2\n\t" /* mm2 *= (ftmp[0]-w,ftmp[1]-w) */
-+ "addl $8,%0\n\t" /* ftmp += 2 */
-+ "decl %1\n\t" /* --c */
-+ "jnz 1b\n\t"
-+ "movq %%mm2,(%3)\n\t" /* pq = mm0 */
-+ "femms\n\t"
-+ : "+r" (ftmp), "+r" (c) : "r" (ww), "r" (pq) : "memory" );
-+#else
- do{
- q*=ftmp[0]-w;
- p*=ftmp[1]-w;
- ftmp+=2;
- }while(--c);
-+#endif
-+#endif
-
- if(m&1){
- /* odd order filter; slightly assymetric */
-@@ -107,6 +183,9 @@
- curve[i++]*=q;
- }while(map[i]==k);
- }
-+#undef p
-+#undef q
-+#undef w
- vorbis_fpu_restore(fpu);
- }
-
-diff -ur libvorbis-1.0/lib/mdct.c libvorbis-1.0-simd/lib/mdct.c
---- libvorbis-1.0/lib/mdct.c 2002-06-29 00:19:36.000000000 +0200
-+++ libvorbis-1.0-simd/lib/mdct.c 2003-01-26 07:09:54.000000000 +0100
-@@ -271,41 +271,158 @@
- REG_TYPE r0;
- REG_TYPE r1;
-
-+#if DATA_TYPE != float
-+#undef simd_3dn
-+#endif
-+
- do{
-
-+#ifdef simd_3dn
-+ static unsigned long negxor[2]={0x80000000,0};
-+ asm ( /* mm0 = (r0,r1) */
-+ "movq %0,%%mm0\n\t" /* mm0 = (x1[6],x1[7]) */
-+ "movq %1,%%mm1\n\t" /* mm1 = (x2[6],x2[7]) */
-+ "movq %%mm0,%%mm2\n\t" /* mm2 = (x1[6],x1[7]) */
-+ "pfsub %%mm1,%%mm0\n\t" /* mm0 = (x1[6]-x2[6],x1[7]-x2[7]) */
-+ "pfadd %%mm1,%%mm2\n\t" /* mm2 = (x1[6]+x2[6],x1[7]+x2[7]) */
-+ "movq %%mm2,%0\n\t"
-+
-+ "movq %2,%%mm1\n\t"
-+ "movq %%mm0,%%mm2\n\t"
-+ "pfmul %%mm1,%%mm0\n\t"
-+ "pxor %3,%%mm2\n\t"
-+#ifdef simd_sse
-+ "pshufw $0x4e,%%mm1,%%mm1\n\t"
-+#else
-+ "movq %%mm1,%%mm3\n\t"
-+ "psllq $32,%%mm3\n\t"
-+ "psrlq $32,%%mm1\n\t"
-+ "por %%mm3,%%mm1\n\t"
-+#endif
-+ "pfmul %%mm2,%%mm1\n\t"
-+ "pfacc %%mm1,%%mm0\n\t"
-+ "movq %%mm0,%1\n\t"
-+ "femms\n\t"
-+ : : "m" (x1[6]), "m" (x2[6]), "m" (T[0]), "m" (negxor[0]) : "memory");
-+#else
- r0 = x1[6] - x2[6];
- r1 = x1[7] - x2[7];
- x1[6] += x2[6];
- x1[7] += x2[7];
- x2[6] = MULT_NORM(r1 * T[1] + r0 * T[0]);
- x2[7] = MULT_NORM(r1 * T[0] - r0 * T[1]);
-+#endif
-
- T+=trigint;
-
-+#ifdef simd_3dn
-+ asm ( /* mm0 = (r0,r1) */
-+ "movq %0,%%mm0\n\t" /* mm0 = (x1[6],x1[7]) */
-+ "movq %1,%%mm1\n\t" /* mm1 = (x2[6],x2[7]) */
-+ "movq %%mm0,%%mm2\n\t" /* mm2 = (x1[6],x1[7]) */
-+ "pfsub %%mm1,%%mm0\n\t" /* mm0 = (x1[6]-x2[6],x1[7]-x2[7]) */
-+ "pfadd %%mm1,%%mm2\n\t" /* mm2 = (x1[6]+x2[6],x1[7]+x2[7]) */
-+ "movq %%mm2,%0\n\t"
-+
-+ "movq %2,%%mm1\n\t"
-+ "movq %%mm0,%%mm2\n\t"
-+ "pfmul %%mm1,%%mm0\n\t"
-+ "pxor %3,%%mm2\n\t"
-+#ifdef simd_sse
-+ "pshufw $0x4e,%%mm1,%%mm1\n\t"
-+#else
-+ "movq %%mm1,%%mm3\n\t"
-+ "psllq $32,%%mm3\n\t"
-+ "psrlq $32,%%mm1\n\t"
-+ "por %%mm3,%%mm1\n\t"
-+#endif
-+ "pfmul %%mm2,%%mm1\n\t"
-+ "pfacc %%mm1,%%mm0\n\t"
-+ "movq %%mm0,%1\n\t"
-+ "femms\n\t"
-+ : : "m" (x1[4]), "m" (x2[4]), "m" (T[0]), "m" (negxor[0]) : "memory");
-+#else
- r0 = x1[4] - x2[4];
- r1 = x1[5] - x2[5];
- x1[4] += x2[4];
- x1[5] += x2[5];
- x2[4] = MULT_NORM(r1 * T[1] + r0 * T[0]);
- x2[5] = MULT_NORM(r1 * T[0] - r0 * T[1]);
-+#endif
-
- T+=trigint;
-
-+#ifdef simd_3dn
-+ asm ( /* mm0 = (r0,r1) */
-+ "movq %0,%%mm0\n\t" /* mm0 = (x1[6],x1[7]) */
-+ "movq %1,%%mm1\n\t" /* mm1 = (x2[6],x2[7]) */
-+ "movq %%mm0,%%mm2\n\t" /* mm2 = (x1[6],x1[7]) */
-+ "pfsub %%mm1,%%mm0\n\t" /* mm0 = (x1[6]-x2[6],x1[7]-x2[7]) */
-+ "pfadd %%mm1,%%mm2\n\t" /* mm2 = (x1[6]+x2[6],x1[7]+x2[7]) */
-+ "movq %%mm2,%0\n\t"
-+
-+ "movq %2,%%mm1\n\t"
-+ "movq %%mm0,%%mm2\n\t"
-+ "pfmul %%mm1,%%mm0\n\t"
-+ "pxor %3,%%mm2\n\t"
-+#ifdef simd_sse
-+ "pshufw $0x4e,%%mm1,%%mm1\n\t"
-+#else
-+ "movq %%mm1,%%mm3\n\t"
-+ "psllq $32,%%mm3\n\t"
-+ "psrlq $32,%%mm1\n\t"
-+ "por %%mm3,%%mm1\n\t"
-+#endif
-+ "pfmul %%mm2,%%mm1\n\t"
-+ "pfacc %%mm1,%%mm0\n\t"
-+ "movq %%mm0,%1\n\t"
-+ "femms\n\t"
-+ : : "m" (x1[2]), "m" (x2[2]), "m" (T[0]), "m" (negxor[0]) : "memory");
-+#else
- r0 = x1[2] - x2[2];
- r1 = x1[3] - x2[3];
- x1[2] += x2[2];
- x1[3] += x2[3];
- x2[2] = MULT_NORM(r1 * T[1] + r0 * T[0]);
- x2[3] = MULT_NORM(r1 * T[0] - r0 * T[1]);
-+#endif
-
- T+=trigint;
-
-+#ifdef simd_3dn
-+ asm ( /* mm0 = (r0,r1) */
-+ "movq %0,%%mm0\n\t" /* mm0 = (x1[6],x1[7]) */
-+ "movq %1,%%mm1\n\t" /* mm1 = (x2[6],x2[7]) */
-+ "movq %%mm0,%%mm2\n\t" /* mm2 = (x1[6],x1[7]) */
-+ "pfsub %%mm1,%%mm0\n\t" /* mm0 = (x1[6]-x2[6],x1[7]-x2[7]) */
-+ "pfadd %%mm1,%%mm2\n\t" /* mm2 = (x1[6]+x2[6],x1[7]+x2[7]) */
-+ "movq %%mm2,%0\n\t"
-+
-+ "movq %2,%%mm1\n\t"
-+ "movq %%mm0,%%mm2\n\t"
-+ "pfmul %%mm1,%%mm0\n\t"
-+ "pxor %3,%%mm2\n\t"
-+#ifdef simd_sse
-+ "pshufw $0x4e,%%mm1,%%mm1\n\t"
-+#else
-+ "movq %%mm1,%%mm3\n\t"
-+ "psllq $32,%%mm3\n\t"
-+ "psrlq $32,%%mm1\n\t"
-+ "por %%mm3,%%mm1\n\t"
-+#endif
-+ "pfmul %%mm2,%%mm1\n\t"
-+ "pfacc %%mm1,%%mm0\n\t"
-+ "movq %%mm0,%1\n\t"
-+ "femms\n\t"
-+ : : "m" (x1[0]), "m" (x2[0]), "m" (T[0]), "m" (negxor[0]) : "memory");
-+#else
- r0 = x1[0] - x2[0];
- r1 = x1[1] - x2[1];
- x1[0] += x2[0];
- x1[1] += x2[1];
- x2[0] = MULT_NORM(r1 * T[1] + r0 * T[0]);
- x2[1] = MULT_NORM(r1 * T[0] - r0 * T[1]);
-+#endif
-
- T+=trigint;
- x1-=8;
-diff -ur libvorbis-1.0/lib/psy.c libvorbis-1.0-simd/lib/psy.c
---- libvorbis-1.0/lib/psy.c 2002-07-13 12:18:33.000000000 +0200
-+++ libvorbis-1.0-simd/lib/psy.c 2003-04-17 20:50:13.000000000 +0200
-@@ -29,9 +29,25 @@
- #include "scales.h"
- #include "misc.h"
-
-+#ifdef __SSE__
-+#include <mmintrin.h>
-+#include <xmmintrin.h>
-+#endif
-+
- #define NEGINF -9999.f
- static double stereo_threshholds[]={0.0, .5, 1.0, 1.5, 2.5, 4.5, 8.5, 16.5, 9e10};
-
-+#ifdef __SSE__
-+static void* align(void* x) {
-+ long l=(long)x;
-+ int r=l&0xf;
-+ if (r)
-+ return (void*)(l+16-(l&0xf));
-+ else
-+ return x;
-+}
-+#endif
-+
- vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
- codec_setup_info *ci=vi->codec_setup;
- vorbis_info_psy_global *gi=&ci->psy_g_param;
-@@ -530,17 +546,31 @@
-
- }
-
-+#ifdef __SSE__
-+__m128 tmp __attribute__((aligned(16)));
-+#endif
-+
- static void bark_noise_hybridmp(int n,const long *b,
- const float *f,
- float *noise,
- const float offset,
- const int fixed){
-
-+#ifdef __SSE__
-+ /* we need to be 16-bytes aligned for SSE */
-+ /* so we can be at most 16-4=12 bytes off, allocate three more floats */
-+ float *N=align(alloca((n+4)*sizeof(*N)));
-+ float *X=align(alloca((n+4)*sizeof(*N)));
-+ float *XX=align(alloca((n+4)*sizeof(*N)));
-+ float *Y=align(alloca((n+4)*sizeof(*N)));
-+ float *XY=align(alloca((n+4)*sizeof(*N)));
-+#else
- float *N=alloca((n+1)*sizeof(*N));
- float *X=alloca((n+1)*sizeof(*N));
- float *XX=alloca((n+1)*sizeof(*N));
- float *Y=alloca((n+1)*sizeof(*N));
- float *XY=alloca((n+1)*sizeof(*N));
-+#endif
-
- float tN, tX, tXX, tY, tXY;
- float fi;
-@@ -548,9 +578,131 @@
-
- int lo, hi;
- float R, A, B, D;
-+#ifdef __SSE__
-+ register __m128 offset4=_mm_set_ps1(offset);
-+#endif
-
- tN = tX = tXX = tY = tXY = 0.f;
-+#ifdef __SSE__
-+ for (i=0, fi=0.f; i+4<n; i+=4, fi+=4.f) {
-+ static float __attribute__((aligned(16))) c1111[4]={1.f,1.f,1.f,1.f};
-+ static float __attribute__((aligned(16))) c0123[4]={0.f,1.f,2.f,3.f};
-+ register __m128 xxxx = _mm_add_ps(_mm_set_ps1(fi),*(__m128*)c0123);
-+ /* turns out that f may be unaligned and there is nothing I can do
-+ * about it */
-+ register __m128 yyyy=_mm_max_ps(*(__m128*)c1111,_mm_add_ps(_mm_loadu_ps((float*)f+i),offset4));
-+ register __m128 wwww=_mm_mul_ps(yyyy,yyyy);
-+ /* now it gets hairy */
-+
-+ float* a=(float*)&tmp;
-+
-+#ifdef OLD_AND_WORKING
-+ tmp=wwww;
-+ N[i]=tN;
-+ N[i+1]=(tN+=a[0]);
-+ N[i+2]=(tN+=a[1]);
-+ N[i+3]=(tN+=a[2]);
-+ tN+=a[3];
-+
-+ tmp=_mm_mul_ps(wwww,xxxx);
-+ X[i]=tX;
-+ X[i+1]=(tX+=a[0]);
-+ X[i+2]=(tX+=a[1]);
-+ X[i+3]=(tX+=a[2]);
-+ tX+=a[3];
-+
-+ tmp=_mm_mul_ps(tmp,xxxx);
-+ XX[i]=tXX;
-+ XX[i+1]=(tXX+=a[0]);
-+ XX[i+2]=(tXX+=a[1]);
-+ XX[i+3]=(tXX+=a[2]);
-+ tXX+=a[3];
-+
-+ tmp=_mm_mul_ps(wwww,yyyy);
-+ Y[i]=tY;
-+ Y[i+1]=(tY+=a[0]);
-+ Y[i+2]=(tY+=a[1]);
-+ Y[i+3]=(tY+=a[2]);
-+ tY+=a[3];
-+
-+ tmp=_mm_mul_ps(tmp,xxxx);
-+ XY[i]=tXY;
-+ XY[i+1]=(tXY+=a[0]);
-+ XY[i+2]=(tXY+=a[1]);
-+ XY[i+3]=(tXY+=a[2]);
-+ tXY+=a[3];
-+#else
-+ {
-+ register __m128 o=_mm_set_ss(tN);
-+ register __m128 x=wwww;
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),x);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,1)));
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,2)));
-+ _mm_storeu_ps(N+i,_mm_shuffle_ps(o,o,_MM_SHUFFLE(0,1,2,3)));
-+ _mm_store_ss(&tN,_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,3))));
-+
-+ o=_mm_set_ss(tX); x=_mm_mul_ps(wwww,xxxx);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),x);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,1)));
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,2)));
-+ _mm_storeu_ps(X+i,_mm_shuffle_ps(o,o,_MM_SHUFFLE(0,1,2,3)));
-+ _mm_store_ss(&tX,_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,3))));
-+
-+ o=_mm_set_ss(tXX); x=_mm_mul_ps(x,xxxx);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),x);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,1)));
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,2)));
-+ _mm_storeu_ps(XX+i,_mm_shuffle_ps(o,o,_MM_SHUFFLE(0,1,2,3)));
-+ _mm_store_ss(&tXX,_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,3))));
-+
-+ o=_mm_set_ss(tY); x=_mm_mul_ps(wwww,yyyy);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),x);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,1)));
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,2)));
-+ _mm_storeu_ps(Y+i,_mm_shuffle_ps(o,o,_MM_SHUFFLE(0,1,2,3)));
-+ _mm_store_ss(&tY,_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,3))));
-+
-+ o=_mm_set_ss(tXY); x=_mm_mul_ps(x,xxxx);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),x);
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,1)));
-+ o=_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,2)));
-+ _mm_storeu_ps(XY+i,_mm_shuffle_ps(o,o,_MM_SHUFFLE(0,1,2,3)));
-+ _mm_store_ss(&tXY,_mm_add_ss(_mm_shuffle_ps(o,o,_MM_SHUFFLE(2,1,0,0)),_mm_shuffle_ps(x,x,_MM_SHUFFLE(0,0,0,3))));
-+
-+ }
-+#endif
-+
-+#if 0
-+ N[i] = tN;
-+ N[i+1] = tN+w[0];
-+ N[i+2] = tN+w[0]+w[1];
-+ N[i+3] = tN+w[0]+w[1]+w[2];
-+
-+ X[i] = tX;
-+ X[i+1] = tX+w[0]*x[0];
-+ X[i+2] = tX+w[0]*x[0]+w[1]*x[1];
-+ X[i+3] = tX+w[0]*x[0]+w[1]*x[1]+w[2]*x[2];
-+
-+ Y[i] = tY;
-+ Y[i+1] = tY+w[0]*y[0];
-+ Y[i+2] = tY+w[0]*y[0]+w[1]*y[1];
-+ Y[i+3] = tY+w[0]*y[0]+w[1]*y[1]+w[2]*y[2];
-+
-+ XX[i] = tXX;
-+ XX[i+1] = tXX+w[0]*x[0]*x[0];
-+ XX[i+2] = tXX+w[0]*x[0]*x[0]+w[1]*x[1]*x[1];
-+ XX[i+3] = tXX+w[0]*x[0]*x[0]+w[1]*x[1]*x[1]+w[2]*x[2]*x[2];
-+
-+ XY[i] = tXY;
-+ XY[i+1] = tXY+w[0]*x[0]*y[0];
-+ XY[i+2] = tXY+w[0]*x[0]*y[0]+w[1]*x[1]*y[1];
-+ XY[i+3] = tXY+w[0]*x[0]*y[0]+w[1]*x[1]*y[1]+w[2]*x[2]*y[2];
-+#endif
-+ }
-+ for (; i < n; i++, fi += 1.f) {
-+#else
- for (i = 0, fi = 0.f; i < n; i++, fi += 1.f) {
-+#endif
- float w, x, y;
-
- x = fi;
-@@ -597,6 +749,7 @@
- }
-
- for ( ; hi < n; i++, fi += 1.f) {
-+ /* TODO hotspot */
-
- lo = b[i] >> 16;
- hi = b[i] & 0xffff;
-@@ -644,6 +797,7 @@
- if (R > 0.f && R - offset < noise[i]) noise[i] = R - offset;
- }
- for ( ; hi < n; i++, fi += 1.f) {
-+ /* TODO hotspot */
-
- hi = i + fixed / 2;
- lo = hi - fixed;
-@@ -744,6 +898,7 @@
-
- if(sliding_lowpass>n)sliding_lowpass=n;
-
-+ /* TODO hotspot */
- for(i=0;i<sliding_lowpass;i++){
- residue[i]=
- mdct[i]*FLOOR1_fromdB_INV_LOOKUP[codedflr[i]];
-@@ -792,6 +947,7 @@
- }
- #endif
-
-+ /* TODO hotspot */
- for(i=0;i<n;i++){
- int dB=logmask[i]+.5;
- if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
-@@ -816,7 +972,28 @@
- specified att) */
- if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt;
-
-+ /* TODO hotspot */
-+#ifdef __SSE__
-+/* this optimization does not make a difference for me */
-+ {
-+ register __m128 att4=_mm_set_ps1(att);
-+#if 0
-+ for (i=0;i+4<n && (long)(p->ath+i)&0xf;++i)
-+ logmask[i]=p->ath[i]+att;
-+#endif
-+ for (i=0;i+16<n;i+=16) {
-+ _mm_storeu_ps(logmask+i,_mm_add_ps(_mm_loadu_ps(p->ath+i),att4));
-+ _mm_storeu_ps(logmask+i+4,_mm_add_ps(_mm_loadu_ps(p->ath+i+4),att4));
-+ _mm_storeu_ps(logmask+i+8,_mm_add_ps(_mm_loadu_ps(p->ath+i+8),att4));
-+ _mm_storeu_ps(logmask+i+12,_mm_add_ps(_mm_loadu_ps(p->ath+i+12),att4));
-+ }
-+ for (;i+4<n;i+=4)
-+ _mm_storeu_ps(logmask+i,_mm_add_ps(_mm_loadu_ps(p->ath+i),att4));
-+ }
-+ for(;i<n;i++)
-+#else
- for(i=0;i<n;i++)
-+#endif
- logmask[i]=p->ath[i]+att;
-
- /* tone masking */
-@@ -833,7 +1010,21 @@
- int i,n=p->n;
- float toneatt=p->vi->tone_masteratt[offset_select];
-
-+ /* TODO hotspot */
-+#ifdef __SSE__
-+ register float* no=p->noiseoffset[offset_select];
-+ register __m128 toneatt4=_mm_set_ps1(toneatt);
-+ register __m128 noisemax4=_mm_set_ps1(p->vi->noisemaxsupp);
-+ for(i=0;i+4<n;i+=4) {
-+ register __m128 x=_mm_add_ps(_mm_loadu_ps(noise+i),_mm_loadu_ps(no+i));
-+ x=_mm_min_ps(x,noisemax4);
-+ x=_mm_max_ps(x,_mm_add_ps(_mm_loadu_ps(tone+i),toneatt4));
-+ _mm_storeu_ps(logmask+i,x);
-+ }
-+ for(;i<n;i++){
-+#else
- for(i=0;i<n;i++){
-+#endif
- float val= noise[i]+p->noiseoffset[offset_select][i];
- if(val>p->vi->noisemaxsupp)val=p->vi->noisemaxsupp;
- logmask[i]=max(val,tone[i]+toneatt);
-@@ -883,6 +1074,7 @@
- -0.159093, -0.175146, -0.192286, -0.210490,
- -0.229718, -0.249913, -0.271001, -0.292893};
-
-+/* minor hotspot */
- static void precomputed_couple_point(float premag,
- int floorA,int floorB,
- float *mag, float *ang){
-@@ -949,6 +1141,7 @@
- }
-
- /* this is for per-channel noise normalization */
-+/* TODO hotspot */
- static int apsort(const void *a, const void *b){
- if(fabs(**(float **)a)>fabs(**(float **)b))return -1;
- return 1;
-@@ -972,6 +1165,8 @@
- for(j=0;j<n;j+=partition){
- for(k=0;k<partition;k++)work[k]=mags[i]+k+j;
- qsort(work,partition,sizeof(*work),apsort);
-+ /* TODO hotspot */
-+ /* the obvious MMX version is not faster */
- for(k=0;k<partition;k++)ret[i][k+j]=work[k]-mags[i];
- }
- }
-@@ -1008,8 +1203,26 @@
- if(start>n)start=n;
-
- if(vi->normal_channel_p){
-+ /* TODO hotspot */
-+#ifdef __SSE__DISABLED
-+ /* this optimization does not make a difference */
-+ /* also, it appears to distort the results :( */
-+ register __m128 half4=_mm_set1_ps(0.5f);
-+ for(;j+4<start;j+=4) {
-+ register __m128 x=_mm_add_ps(_mm_loadu_ps(in+j),half4);
-+ register __m64 y=_mm_cvtps_pi32(x);
-+ register __m64 z=_mm_cvtps_pi32(_mm_shuffle_ps(x,x,0x1b));
-+ x=_mm_cvtpi32_ps(x,z);
-+ x=_mm_cvtpi32_ps(_mm_shuffle_ps(x,x,0x1b),y);
-+ _mm_storeu_ps(out+j,x);
-+ }
-+ _mm_empty();
-+ for(;j<start;j++)
-+ out[j]=rint(in[j]);
-+#else
- for(;j<start;j++)
- out[j]=rint(in[j]);
-+#endif
-
- for(;j+partition<=n;j+=partition){
- float acc=0.;
-@@ -1018,6 +1231,7 @@
- for(i=j;i<j+partition;i++)
- acc+=in[i]*in[i];
-
-+ /* TODO hotspot */
- for(i=0;i<partition;i++){
- k=sortedindex[i+j-start];
-
-@@ -1032,6 +1246,7 @@
- }
- }
-
-+ /* TODO hotspot */
- for(;i<partition;i++){
- k=sortedindex[i+j-start];
- out[k]=0.;
-@@ -1093,6 +1308,7 @@
- for(j=0;j<p->n;j+=partition){
- float acc=0.f;
-
-+ /* TODO hotspot */
- for(k=0;k<partition;k++){
- int l=k+j;
-
-@@ -1116,6 +1332,7 @@
- }
-
- if(p->vi->normal_point_p){
-+ /* TODO minor hotspot */
- for(k=0;k<partition && acc>=p->vi->normal_thresh;k++){
- int l=mag_sort[i][j+k];
- if(l<sliding_lowpass && l>=pointlimit && rint(qM[l])==0.f){
-diff -ur libvorbis-1.0/lib/vorbisfile.c libvorbis-1.0-simd/lib/vorbisfile.c
---- libvorbis-1.0/lib/vorbisfile.c 2002-07-06 06:20:03.000000000 +0200
-+++ libvorbis-1.0-simd/lib/vorbisfile.c 2003-04-26 21:55:49.000000000 +0200
-@@ -21,12 +21,19 @@
- #include <string.h>
- #include <math.h>
-
-+#include <assert.h>
-+
- #include "vorbis/codec.h"
- #include "vorbis/vorbisfile.h"
-
- #include "os.h"
- #include "misc.h"
-
-+#ifdef __SSE__
-+#include <xmmintrin.h>
-+#include <mmintrin.h>
-+#endif
-+
- /* A 'chained bitstream' is a Vorbis bitstream that contains more than
- one logical bitstream arranged end to end (the only form of Ogg
- multiplexing allowed in a Vorbis bitstream; grouping [parallel
-@@ -1500,7 +1507,72 @@
-
- if(host_endian==bigendianp){
- if(sgned){
--
-+#ifdef __SSE__
-+ /* Oh no! On my box, exactly one of pcm[0][j] and pcm[1][j]
-+ * is always misaligned! SSE required 16-byte alignment.
-+ * Also, the pcm[][] array layout is bad for vectorizing,
-+ * but we can fix that with mmx unpack magic for the common
-+ * case where channels==2. */
-+ if (channels==2 && samples>8) {
-+ register __m128 scale=_mm_set1_ps(32768.f);
-+ for (j=0; j+8<samples; j+=8) {
-+ register __m128 x=_mm_loadu_ps(pcm[0]+j);
-+ register __m128 y=_mm_loadu_ps(pcm[1]+j);
-+
-+ *(__m64*)buffer=_mm_cvtps_pi16(_mm_mul_ps(_mm_unpacklo_ps(x,y),scale));
-+ *(__m64*)(buffer+8)=_mm_cvtps_pi16(_mm_mul_ps(_mm_unpackhi_ps(x,y),scale));
-+
-+ x=_mm_loadu_ps(pcm[0]+j+4);
-+ y=_mm_loadu_ps(pcm[1]+j+4);
-+
-+ *(__m64*)(buffer+16)=_mm_cvtps_pi16(_mm_mul_ps(_mm_unpacklo_ps(x,y),scale));
-+ *(__m64*)(buffer+24)=_mm_cvtps_pi16(_mm_mul_ps(_mm_unpackhi_ps(x,y),scale));
-+
-+ buffer+=32;
-+ }
-+ for (; j+4<samples; j+=4) {
-+ register __m128 x=_mm_loadu_ps(pcm[0]+j);
-+ register __m128 y=_mm_loadu_ps(pcm[1]+j);
-+
-+ *(__m64*)buffer=_mm_cvtps_pi16(_mm_mul_ps(_mm_unpacklo_ps(x,y),scale));
-+ *(__m64*)(buffer+8)=_mm_cvtps_pi16(_mm_mul_ps(_mm_unpackhi_ps(x,y),scale));
-+
-+ buffer+=16;
-+ }
-+ _mm_empty();
-+
-+ for (; j<samples; ++j) {
-+ val=vorbis_ftoi(pcm[0][j]*32768.f);
-+ if(val>32767)val=32767;
-+ else if(val<-32768)val=-32768;
-+ *(short*)buffer=val;
-+ val=vorbis_ftoi(pcm[1][j]*32768.f);
-+ if(val>32767)val=32767;
-+ else if(val<-32768)val=-32768;
-+ *(short*)(buffer+2)=val;
-+ buffer+=4;
-+ }
-+ } else {
-+#elif defined(simd_3dn)
-+ if (channels==2) {
-+ static float scale[2]={32768.f,32768.f};
-+ for(j=0;j<samples;j+=2) {
-+ asm("movq %0,%%mm0\n\t" /* (pcm[0][j],pcm[0][j+1]) */
-+ "pfmul %1,%%mm0\n\t"
-+ "pf2id %%mm0,%%mm0\n\t"
-+ "packssdw %%mm0,%%mm0\n\t"
-+ "movq %3,%%mm1\n\t" /* (pcm[1][j],pcm[1][j+1]) */
-+ "pfmul %1,%%mm1\n\t"
-+ "pf2id %%mm1,%%mm1\n\t"
-+ "packssdw %%mm1,%%mm1\n\t"
-+ "punpckhwd %%mm1,%%mm0\n\t"
-+ "movq %%mm0,(%2)\n\t"
-+ : : "m" (pcm[0][j]), "m" (scale), "r" (buffer), "m" (pcm[1][j]) );
-+ buffer += 8;
-+ }
-+ asm volatile("femms\n\t");
-+ } else {
-+#endif
- vorbis_fpu_setround(&fpu);
- for(i=0;i<channels;i++) { /* It's faster in this order */
- float *src=pcm[i];
-@@ -1514,6 +1586,9 @@
- }
- }
- vorbis_fpu_restore(fpu);
-+#if defined(__SSE__) || defined(simd_3dn)
-+ }
-+#endif
-
- }else{
-
-@@ -1548,6 +1623,7 @@
-
- }else{
- int val;
-+ write(1,"a",1);
- vorbis_fpu_setround(&fpu);
- for(j=0;j<samples;j++)
- for(i=0;i<channels;i++){
-diff -ur libvorbis-1.0/lib/window.c libvorbis-1.0-simd/lib/window.c
---- libvorbis-1.0/lib/window.c 2002-03-23 04:17:34.000000000 +0100
-+++ libvorbis-1.0-simd/lib/window.c 2003-02-08 02:53:04.000000000 +0100
-@@ -17,9 +17,14 @@
-
- #include <stdlib.h>
- #include <math.h>
-+#include <stdio.h>
- #include "os.h"
- #include "misc.h"
-
-+#ifdef __SSE__
-+#include <xmmintrin.h>
-+#endif
-+
- float *_vorbis_window(int type, int left){
- float *ret=_ogg_calloc(left,sizeof(*ret));
- int i;
-@@ -67,8 +72,68 @@
- for(i=0;i<leftbegin;i++)
- d[i]=0.f;
-
-+#ifdef __SSE__
-+// printf("%p %p\n",d+i,window[lW]);
-+ /* alignment issues. Again. Who saw that one coming? :-/ */
-+ p=0;
-+ if (leftend-i>8) { /* make it worth our while */
-+ unsigned long _d=(long)(d+i)&15;
-+ unsigned long _win=(long)(window[lW])&15;
-+ register __m128* D,* WIN;
-+ if (_d) {
-+ d[i]*=window[lW][p];
-+ d[i+1]*=window[lW][p+1];
-+ i+=2; p+=2;
-+ }
-+ D=(__m128*)(d+i);
-+ WIN=(__m128*)(window[lW]+p);
-+ if (_d ^ _win) {
-+ /* one is properly aligned, the other is not */
-+ register __m128 a;
-+ WIN=(__m128*)((float*)WIN-2);
-+ a=WIN[0];
-+ for(;i+7<leftend;i+=8,p+=8) {
-+ /* now we need the upper most floats from a and the lower
-+ * most floats from b */
-+ register __m128 b=WIN[1];
-+ *D=_mm_mul_ps(_mm_movehl_ps(_mm_shuffle_ps(b,b,_MM_SHUFFLE(1,0,3,2)),a),*D);
-+ a=WIN[2];
-+ D[1]=_mm_mul_ps(_mm_movehl_ps(_mm_shuffle_ps(a,a,_MM_SHUFFLE(1,0,3,2)),b),D[1]);
-+ D+=2; WIN+=2;
-+ }
-+ } else {
-+ for(;i+3<leftend;i+=4,p+=4) {
-+ *D=_mm_mul_ps(*D,*WIN);
-+ ++D; ++WIN;
-+// d[i]*=window[lW][p];
-+ }
-+ }
-+ }
-+ for(;i<leftend;i++,p++)
-+ d[i]*=window[lW][p];
-+#elif defined(simd_3dn)
-+ if ((i&1) || ((leftend-i)&1)) { /* d[i] is unaligned */
-+ for(p=0;i<leftend;i++,p++)
-+ d[i]*=window[lW][p];
-+ } else {
-+ asm("orl %0,%0\n\t"
-+ "jbe 2f\n\t"
-+ "1: movq (%1),%%mm0\n\t"
-+ "pfmul (%2),%%mm0\n\t"
-+ "addl $8,%2\n\t"
-+ "movq %%mm0,(%1)\n\t"
-+ "addl $8,%1\n\t"
-+ "decl %0\n\t"
-+ "jz 2f\n\t"
-+ "jmp 1b\n\t"
-+ "2: femms\n\t"
-+ : : "r" ((leftend-i)/2), "r" (&d[i]), "r" (&window[lW][0]) : "memory" );
-+ i=leftend;
-+ }
-+#else
- for(p=0;i<leftend;i++,p++)
- d[i]*=window[lW][p];
-+#endif
-
- for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
- d[i]*=window[nW][p];
-
diff --git a/media-libs/libvorbis/libvorbis-1.0-r2.ebuild b/media-libs/libvorbis/libvorbis-1.0-r2.ebuild
deleted file mode 100644
index 983b457281b0..000000000000
--- a/media-libs/libvorbis/libvorbis-1.0-r2.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/libvorbis-1.0-r2.ebuild,v 1.9 2004/06/24 23:15:54 agriffis Exp $
-
-inherit libtool eutils
-
-DESCRIPTION="the Ogg Vorbis sound file format library"
-SRC_URI="http://fatpipe.vorbis.com/files/1.0/unix/${P}.tar.gz"
-HOMEPAGE="http://www.xiph.org/ogg/vorbis/index.html"
-
-DEPEND=">=media-libs/libogg-1.0"
-
-SLOT="0"
-LICENSE="as-is"
-KEYWORDS="x86 ppc sparc alpha hppa amd64 ia64"
-IUSE=""
-
-src_unpack() {
- unpack ${A}
-
- cd ${S}
- epatch ${FILESDIR}/${PN}-m4.patch || die "Patching failed"
- # Fix a gcc crash. With the new atexit patch to gcc, it
- # seems it do not handle -mno-ieee-fp too well.
- cp configure configure.orig
- sed -e "s:-mno-ieee-fp::g" \
- configure.orig >configure
-}
-
-src_compile() {
- elibtoolize
-
- export CFLAGS="${CFLAGS/-march=*/}"
-
- ./configure --prefix=/usr \
- --host=${CHOST} || die
-
- emake || die
-}
-
-src_install () {
- make DESTDIR=${D} install || die
-
- dosym /usr/lib/libvorbisfile.so.3.0.0 /usr/lib/libvorbisfile.so.0
- dosym /usr/lib/libvorbisenc.so.2.0.0 /usr/lib/libvorbisenc.so.0
-
- echo "Removing docs installed by make install"
- rm -rf ${D}/usr/share/doc
-
- dodoc AUTHORS COPYING README todo.txt
- docinto txt
- dodoc doc/*.txt
- dohtml -r doc
-}
-
-pkg_postinst() {
- einfo
- einfo "Note the 1.0 version of libvorbis has been installed"
- einfo "Applications that used pre-1.0 vorbis libraries will"
- einfo "need to be recompiled for the new version."
- einfo "Now that the vorbis folks have finalized the API"
- einfo "this should be the last time for a while that"
- einfo "recompilation is needed for these things."
- einfo
-}
diff --git a/media-libs/libvorbis/libvorbis-1.0-r3.ebuild b/media-libs/libvorbis/libvorbis-1.0-r3.ebuild
deleted file mode 100644
index fa13552417cc..000000000000
--- a/media-libs/libvorbis/libvorbis-1.0-r3.ebuild
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/libvorbis-1.0-r3.ebuild,v 1.6 2004/06/24 23:15:54 agriffis Exp $
-
-inherit libtool eutils
-
-DESCRIPTION="the Ogg Vorbis sound file format library"
-SRC_URI="http://fatpipe.vorbis.com/files/1.0/unix/${P}.tar.gz"
-HOMEPAGE="http://www.xiph.org/ogg/vorbis/index.html"
-
-IUSE="sse"
-DEPEND=">=media-libs/libogg-1.0"
-
-SLOT="0"
-LICENSE="as-is"
-KEYWORDS="~x86"
-
-IUSE=""
-
-src_unpack() {
- unpack ${A}
-
- cd ${S}
- if use x86 ; then
- use sse && epatch ${FILESDIR}/${PN}-simd.patch
- fi
-
- epatch ${FILESDIR}/${PN}-m4.patch || die "Patching failed"
- # Fix a gcc crash. With the new atexit patch to gcc, it
- # seems it do not handle -mno-ieee-fp too well.
- cp configure configure.orig
- sed -e "s:-mno-ieee-fp::g" \
- configure.orig >configure
-}
-
-src_compile() {
- elibtoolize
-
- #export CFLAGS="${CFLAGS/-march=*/}"
-
- ./configure --prefix=/usr \
- --host=${CHOST} || die
-
- emake || die
-}
-
-src_install () {
- make DESTDIR=${D} install || die
-
- dosym /usr/lib/libvorbisfile.so.3.0.0 /usr/lib/libvorbisfile.so.0
- dosym /usr/lib/libvorbisenc.so.2.0.0 /usr/lib/libvorbisenc.so.0
-
- echo "Removing docs installed by make install"
- rm -rf ${D}/usr/share/doc
-
- dodoc AUTHORS COPYING README todo.txt
- docinto txt
- dodoc doc/*.txt
- dohtml -r doc
-}
-
-pkg_postinst() {
- einfo
- einfo "Note the 1.0 version of libvorbis has been installed"
- einfo "Applications that used pre-1.0 vorbis libraries will"
- einfo "need to be recompiled for the new version."
- einfo "Now that the vorbis folks have finalized the API"
- einfo "this should be the last time for a while that"
- einfo "recompilation is needed for these things."
- einfo
-}
-
diff --git a/media-libs/libvorbis/libvorbis-1.0-r4.ebuild b/media-libs/libvorbis/libvorbis-1.0-r4.ebuild
deleted file mode 100644
index f74156261cad..000000000000
--- a/media-libs/libvorbis/libvorbis-1.0-r4.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/libvorbis-1.0-r4.ebuild,v 1.14 2004/06/24 23:15:54 agriffis Exp $
-
-inherit libtool eutils flag-o-matic
-
-DESCRIPTION="the Ogg Vorbis sound file format library"
-SRC_URI="http://fatpipe.vorbis.com/files/1.0/unix/${P}.tar.gz"
-HOMEPAGE="http://www.xiph.org/ogg/vorbis/index.html"
-
-IUSE="sse 3dnow"
-DEPEND=">=media-libs/libogg-1.0"
-
-SLOT="0"
-LICENSE="as-is"
-KEYWORDS="x86 amd64 ~mips hppa"
-
-IUSE=""
-
-src_unpack() {
- unpack ${A}
-
- cd ${S}
- if use x86 ; then
- if use sse; then
- epatch ${FILESDIR}/${PN}-simd.patch
- # patch doesn't support sse2. See #28439
- filter-flags "-msse2"
- fi
- use 3dnow && append-flags -Dsimd_3dn
- fi
-
- epatch ${FILESDIR}/${PN}-m4.patch || die "Patching failed"
- # Fix a gcc crash. With the new atexit patch to gcc, it
- # seems it do not handle -mno-ieee-fp too well.
- sed -i -e "s:-mno-ieee-fp::g" configure
-}
-
-src_compile() {
- elibtoolize
-
- # take out -fomit-frame-pointer from CFLAGS if k6-2
- is-flag "-march=k6-3" && filter-flags "-fomit-frame-pointer"
- is-flag "-march=k6-2" && filter-flags "-fomit-frame-pointer"
- is-flag "-march=k6" && filter-flags "-fomit-frame-pointer"
-
- # filter march, see bug #26463 for details
- filter-flags "-march=pentium?"
-
- ./configure --prefix=/usr \
- --host=${CHOST} || die
-
- emake || die
-}
-
-src_install () {
- make DESTDIR=${D} install || die
-
- dosym /usr/lib/libvorbisfile.so.3.0.0 /usr/lib/libvorbisfile.so.0
- dosym /usr/lib/libvorbisenc.so.2.0.0 /usr/lib/libvorbisenc.so.0
-
- echo "Removing docs installed by make install"
- rm -rf ${D}/usr/share/doc
-
- dodoc AUTHORS COPYING README todo.txt
- docinto txt
- dodoc doc/*.txt
- dohtml -r doc
-}
-
-pkg_postinst() {
- einfo
- einfo "Note the 1.0 version of libvorbis has been installed"
- einfo "Applications that used pre-1.0 vorbis libraries will"
- einfo "need to be recompiled for the new version."
- einfo "Now that the vorbis folks have finalized the API"
- einfo "this should be the last time for a while that"
- einfo "recompilation is needed for these things."
- einfo
-}
diff --git a/media-libs/libvorbis/libvorbis-1.0.1.ebuild b/media-libs/libvorbis/libvorbis-1.0.1.ebuild
deleted file mode 100644
index 0134d3e00f70..000000000000
--- a/media-libs/libvorbis/libvorbis-1.0.1.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 1999-2004 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/libvorbis-1.0.1.ebuild,v 1.11 2004/06/24 23:15:54 agriffis Exp $
-
-inherit libtool flag-o-matic gcc
-
-DESCRIPTION="the Ogg Vorbis sound file format library"
-HOMEPAGE="http://www.xiph.org/ogg/vorbis/index.html"
-SRC_URI="http://www.vorbis.com/files/${PV}/unix/${P}.tar.gz"
-
-LICENSE="as-is"
-SLOT="0"
-KEYWORDS="x86 ~amd64 ~mips sparc hppa"
-
-IUSE=""
-
-RDEPEND=">=media-libs/libogg-1.0"
-
-DEPEND="${RDEPEND}
- sys-apps/sed"
-
-src_unpack() {
- unpack ${A}
- cd ${S}
- # Fix a gcc crash. With the new atexit patch to gcc, it
- # seems it does not handle -mno-ieee-fp very well.
- sed -i -e "s:-mno-ieee-fp::g" configure
-}
-
-src_compile() {
- elibtoolize
-
- # Cannot compile with sse2 support it would seem #36104
- use x86 && [ $(gcc-major-version) -eq 3 ] && append-flags -mno-sse2
-
- # take out -fomit-frame-pointer from CFLAGS if k6-2
- is-flag -march=k6-3 && filter-flags -fomit-frame-pointer
- is-flag -march=k6-2 && filter-flags -fomit-frame-pointer
- is-flag -march=k6 && filter-flags -fomit-frame-pointer
-
- # over optimization causes horrible audio artifacts #26463
- filter-flags -march=pentium?
-
- # gcc on hppa causes issues when assembling
- use hppa && replace-flags -march=2.0 -march=1.0
-
- econf || die
- emake || die
-}
-
-src_install() {
- make DESTDIR=${D} install || die
- dosym /usr/lib/libvorbisfile.so.3.0.0 /usr/lib/libvorbisfile.so.0
- dosym /usr/lib/libvorbisenc.so.2.0.0 /usr/lib/libvorbisenc.so.0
-
- rm -rf ${D}/usr/share/doc
- dodoc AUTHORS COPYING README todo.txt
- docinto txt
- dodoc doc/*.txt
- dohtml -r doc
-}
diff --git a/media-libs/libvorbis/libvorbis-1.0.1-r1.ebuild b/media-libs/libvorbis/libvorbis-1.1.0.ebuild
index 2460611a39b4..4a3b48247001 100644
--- a/media-libs/libvorbis/libvorbis-1.0.1-r1.ebuild
+++ b/media-libs/libvorbis/libvorbis-1.1.0.ebuild
@@ -1,16 +1,16 @@
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/libvorbis-1.0.1-r1.ebuild,v 1.4 2004/06/24 23:15:54 agriffis Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-libs/libvorbis/libvorbis-1.1.0.ebuild,v 1.1 2004/09/22 20:51:58 eradicator Exp $
inherit libtool flag-o-matic gcc
DESCRIPTION="the Ogg Vorbis sound file format library"
HOMEPAGE="http://www.xiph.org/ogg/vorbis/index.html"
-SRC_URI="http://www.vorbis.com/files/${PV}/unix/${P}.tar.gz"
+SRC_URI="http://downloads.xiph.org/releases/vorbis/${P}.tar.gz"
-LICENSE="as-is"
+LICENSE="BSD"
SLOT="0"
-KEYWORDS="x86 ~amd64 ~mips sparc hppa alpha ia64"
+KEYWORDS="~x86 ~amd64 ~mips ~sparc ~hppa ~alpha ~ia64 ~ppc ~ppc64 ~macos ~ppc-macos"
IUSE=""
@@ -27,7 +27,13 @@ src_unpack() {
}
src_compile() {
- elibtoolize
+ # Fixes some strange sed-, libtool- and ranlib-errors on
+ # Mac OS X
+ if use macos || use ppc-macos; then
+ glibtoolize
+ else
+ elibtoolize
+ fi
# Cannot compile with sse2 support it would seem #36104
use x86 && [ $(gcc-major-version) -eq 3 ] && append-flags -mno-sse2
@@ -48,16 +54,26 @@ src_compile() {
append-ldflags -fPIC
econf || die
+ use macos && cd ${S} && sed -i -e 's/examples//' Makefile
+ use ppc-macos && cd ${S} && sed -i -e 's/examples//' Makefile
emake || die
}
src_install() {
make DESTDIR=${D} install || die
- dosym /usr/lib/libvorbisfile.so.3.0.0 /usr/lib/libvorbisfile.so.0
- dosym /usr/lib/libvorbisenc.so.2.0.0 /usr/lib/libvorbisenc.so.0
+ if use macos; then
+ dosym /usr/lib/libvorbisfile.3.1.0.dylib /usr/lib/libvorbisfile.0.dylib
+ dosym /usr/lib/libvorbisenc.2.0.0.dylib /usr/lib/libvorbisenc.0.dylib
+ elif use ppc-macos; then
+ dosym /usr/lib/libvorbisfile.3.1.0.dylib /usr/lib/libvorbisfile.0.dylib
+ dosym /usr/lib/libvorbisenc.2.0.0.dylib /usr/lib/libvorbisenc.0.dylib
+ else
+ dosym /usr/lib/libvorbisfile.so.3.1.0 /usr/lib/libvorbisfile.so.0
+ dosym /usr/lib/libvorbisenc.so.2.0.0 /usr/lib/libvorbisenc.so.0
+ fi
rm -rf ${D}/usr/share/doc
- dodoc AUTHORS COPYING README todo.txt
+ dodoc AUTHORS README todo.txt
docinto txt
dodoc doc/*.txt
dohtml -r doc