[xiph-commits] r9360 - trunk/speex/libspeex
jm at motherfish-iii.xiph.org
jm at motherfish-iii.xiph.org
Sun Jun 5 00:17:47 PDT 2005
Author: jm
Date: 2005-06-05 00:17:44 -0700 (Sun, 05 Jun 2005)
New Revision: 9360
Added:
trunk/speex/libspeex/misc_bfin.h
Modified:
trunk/speex/libspeex/Makefile.am
trunk/speex/libspeex/misc.c
Log:
Blackfin assembly for speex_move()
Modified: trunk/speex/libspeex/Makefile.am
===================================================================
--- trunk/speex/libspeex/Makefile.am 2005-06-05 06:49:12 UTC (rev 9359)
+++ trunk/speex/libspeex/Makefile.am 2005-06-05 07:17:44 UTC (rev 9360)
@@ -61,6 +61,7 @@
sb_celp.h \
vbr.h \
misc.h \
+ misc_bfin.h \
ltp_sse.h \
ltp_arm4.h \
ltp_bfin.h \
Modified: trunk/speex/libspeex/misc.c
===================================================================
--- trunk/speex/libspeex/misc.c 2005-06-05 06:49:12 UTC (rev 9359)
+++ trunk/speex/libspeex/misc.c 2005-06-05 07:17:44 UTC (rev 9360)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Jean-Marc Valin
+/* Copyright (C) 2002-2005 Jean-Marc Valin
File: mics.c
Various utility routines for Speex
@@ -34,11 +34,15 @@
#include "config.h"
#endif
-#include "misc.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+#include "misc.h"
+#ifdef BFIN_ASM
+#include "misc_bfin.h"
+#endif
+
#ifndef RELEASE
void print_vec(float *vec, int len, char *name)
{
@@ -138,10 +142,12 @@
free(ptr);
}
+#ifndef OVERRIDE_SPEEX_MOVE
void *speex_move (void *dest, void *src, int n)
{
return memmove(dest,src,n);
}
+#endif
void speex_error(const char *str)
{
Added: trunk/speex/libspeex/misc_bfin.h
===================================================================
--- trunk/speex/libspeex/misc_bfin.h 2005-06-05 06:49:12 UTC (rev 9359)
+++ trunk/speex/libspeex/misc_bfin.h 2005-06-05 07:17:44 UTC (rev 9360)
@@ -0,0 +1,49 @@
+/* Copyright (C) 2005 Analog Devices
+ Author: Jean-Marc Valin
+ File: mics_bfin.h
+ Various utility routines for Speex
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of the Xiph.org Foundation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#define OVERRIDE_SPEEX_MOVE
+void *speex_move (void *dest, void *src, int n)
+{
+ __asm__ __volatile__
+ (
+ "LOOP move%= LC0 = %2;\n\t"
+ "LOOP_BEGIN move%=;\n\t"
+ "R0 = [%0++];\n\t"
+ "LOOP_END move%=;\n\t"
+ "[%1++] = R0;\n\t"
+ : "=a" (src), "=a" (dest)
+ : "a" (n>>2), "0" (src), "1" (dest)
+ : "R0", "memory"
+ );
+ return dest;
+}
More information about the commits
mailing list