On Wed, 2011-11-02 at 21:54 +0100, Maarten Bosmans wrote: > This code was never used and vectorization is handled by Orc anyway. > --- > src/.gitignore | 1 - > src/Makefile.am | 8 +--- > src/pulsecore/vector.h | 98 ----------------------------------------------- > src/tests/vector-test.c | 83 --------------------------------------- > 4 files changed, 1 insertions(+), 189 deletions(-) > delete mode 100644 src/pulsecore/vector.h > delete mode 100644 src/tests/vector-test.c > > diff --git a/src/.gitignore b/src/.gitignore > index e7e5880..4a66969 100644 > --- a/src/.gitignore > +++ b/src/.gitignore > @@ -69,5 +69,4 @@ thread-mainloop-test > thread-test > usergroup-test > utf8-test > -vector-test > volume-test > diff --git a/src/Makefile.am b/src/Makefile.am > index edeb6e3..a5cfe94 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -219,7 +219,6 @@ TESTS = \ > mainloop-test \ > strlist-test \ > close-test \ > - vector-test \ > memblockq-test \ > channelmap-test \ > thread-mainloop-test \ > @@ -407,11 +406,6 @@ volume_test_CFLAGS = $(AM_CFLAGS) > volume_test_LDADD = $(AM_LDADD) libpulse.la libpulsecommon- at PA_MAJORMINOR@.la > volume_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) > > -vector_test_SOURCES = tests/vector-test.c > -vector_test_CFLAGS = $(AM_CFLAGS) > -vector_test_LDADD = $(AM_LDADD) libpulsecore- at PA_MAJORMINOR@.la libpulse.la libpulsecommon- at PA_MAJORMINOR@.la > -vector_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) > - > channelmap_test_SOURCES = tests/channelmap-test.c > channelmap_test_CFLAGS = $(AM_CFLAGS) > channelmap_test_LDADD = $(AM_LDADD) libpulse.la libpulsecommon- at PA_MAJORMINOR@.la > @@ -570,7 +564,7 @@ libpulsecommon_ at PA_MAJORMINOR@_la_SOURCES = \ > pulsecore/lock-autospawn.c pulsecore/lock-autospawn.h \ > pulsecore/log.c pulsecore/log.h \ > pulsecore/ratelimit.c pulsecore/ratelimit.h \ > - pulsecore/macro.h pulsecore/vector.h \ > + pulsecore/macro.h \ > pulsecore/mcalign.c pulsecore/mcalign.h \ > pulsecore/memblock.c pulsecore/memblock.h \ > pulsecore/memblockq.c pulsecore/memblockq.h \ > diff --git a/src/pulsecore/vector.h b/src/pulsecore/vector.h > deleted file mode 100644 > index 2af79ec..0000000 > --- a/src/pulsecore/vector.h > +++ /dev/null > @@ -1,98 +0,0 @@ > -/*** > - This file is part of PulseAudio. > - > - Copyright 2004-2006 Lennart Poettering > - Copyright 2006 Pierre Ossman <ossman at cendio.se> for Cendio AB > - > - PulseAudio is free software; you can redistribute it and/or modify > - it under the terms of the GNU Lesser General Public License as published > - by the Free Software Foundation; either version 2.1 of the License, > - or (at your option) any later version. > - > - PulseAudio is distributed in the hope that it will be useful, but > - WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public License > - along with PulseAudio; if not, write to the Free Software > - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > - USA. > -***/ > - > -#include <inttypes.h> > - > -/* First, define HAVE_VECTOR if we have the gcc vector extensions at all */ > -#if defined(__SSE2__) > - /* || defined(__ALTIVEC__)*/ > -#define HAVE_VECTOR > - > - > -/* This is supposed to be portable to different SIMD instruction > - * sets. We define vector types for different base types: uint8_t, > - * int16_t, int32_t, float. The vector type is a union. The fields .i, > - * .u, .f are arrays for accessing the separate elements of a > - * vector. .v is a gcc vector type of the right format. .m is the > - * vector in the type the SIMD extension specific intrinsic API > - * expects. PA_xxx_VECTOR_SIZE is the size of the > - * entries. PA_xxxx_VECTOR_MAKE constructs a gcc vector variable with > - * the same value in all elements. */ > - > -#ifdef __SSE2__ > - > -#include <xmmintrin.h> > -#include <emmintrin.h> > - > -#define PA_UINT8_VECTOR_SIZE 16 > -#define PA_INT16_VECTOR_SIZE 8 > -#define PA_INT32_VECTOR_SIZE 4 > -#define PA_FLOAT_VECTOR_SIZE 4 > - > -#define PA_UINT8_VECTOR_MAKE(x) (pa_v16qi) { x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x } > -#define PA_INT16_VECTOR_MAKE(x) (pa_v8hi) { x, x, x, x, x, x, x, x } > -#define PA_INT32_VECTOR_MAKE(x) (pa_v4si) { x, x, x, x } > -#define PA_FLOAT_VECTOR_MAKE(x) (pa_v4fi) { x, x, x, x } > - > -#endif > - > -/* uint8_t vector */ > -typedef uint8_t pa_v16qi __attribute__ ((vector_size (PA_UINT8_VECTOR_SIZE * sizeof(uint8_t)))); > -typedef union pa_uint8_vector { > - uint8_t u[PA_UINT8_VECTOR_SIZE]; > - pa_v16qi v; > -#ifdef __SSE2__ > - __m128i m; > -#endif > -} pa_uint8_vector_t; > - > -/* int16_t vector*/ > -typedef int16_t pa_v8hi __attribute__ ((vector_size (PA_INT16_VECTOR_SIZE * sizeof(int16_t)))); > -typedef union pa_int16_vector { > - int16_t i[PA_INT16_VECTOR_SIZE]; > - pa_v8hi v; > -#ifdef __SSE2__ > - __m128i m; > -#endif > -} pa_int16_vector_t; > - > -/* int32_t vector */ > -typedef int32_t pa_v4si __attribute__ ((vector_size (PA_INT32_VECTOR_SIZE * sizeof(int32_t)))); > -typedef union pa_int32_vector { > - int32_t i[PA_INT32_VECTOR_SIZE]; > - pa_v4si v; > -#ifdef __SSE2__ > - __m128i m; > -#endif > -} pa_int32_vector_t; > - > -/* float vector */ > -typedef float pa_v4sf __attribute__ ((vector_size (PA_FLOAT_VECTOR_SIZE * sizeof(float)))); > -typedef union pa_float_vector { > - float f[PA_FLOAT_VECTOR_SIZE]; > - pa_v4sf v; > -#ifdef __SSE2__ > - __m128 m; > -#endif > -} pa_float_vector_t; > - > -#endif > diff --git a/src/tests/vector-test.c b/src/tests/vector-test.c > deleted file mode 100644 > index 7494348..0000000 > --- a/src/tests/vector-test.c > +++ /dev/null > @@ -1,83 +0,0 @@ > -/*** > - This file is part of PulseAudio. > - > - Copyright 2009 Lennart Poettering > - > - PulseAudio is free software; you can redistribute it and/or modify > - it under the terms of the GNU Lesser General Public License as > - published by the Free Software Foundation; either version 2.1 of the > - License, or (at your option) any later version. > - > - PulseAudio is distributed in the hope that it will be useful, but > - WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with PulseAudio; if not, write to the Free Software > - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > - USA. > -***/ > - > -#ifdef HAVE_CONFIG_H > -#include <config.h> > -#endif > - > -#include <pulsecore/vector.h> > -#include <pulsecore/log.h> > - > -int main(int argc, char *argv[]) { > - > -#ifdef __SSE2__ > - pa_int16_vector_t input, zero; > - pa_int32_vector_t unpacked1, unpacked2; > - pa_int32_vector_t volume1, volume2, volume1_hi, volume1_lo, volume2_hi, volume2_lo, reduce, mask; > - pa_int16_vector_t output; > - > - unsigned u; > - > - zero.v = PA_INT16_VECTOR_MAKE(0); > - reduce.v = PA_INT32_VECTOR_MAKE(0x10000); > - volume1.v = volume2.v = PA_INT32_VECTOR_MAKE(0x10000*2+7); > - mask.v = PA_INT32_VECTOR_MAKE(0xFFFF); > - > - volume1_lo.m = _mm_and_si128(volume1.m, mask.m); > - volume2_lo.m = _mm_and_si128(volume2.m, mask.m); > - volume1_hi.m = _mm_srli_epi32(volume1.m, 16); > - volume2_hi.m = _mm_srli_epi32(volume2.m, 16); > - > - input.v = PA_INT16_VECTOR_MAKE(32000); > - > - for (u = 0; u < PA_INT16_VECTOR_SIZE; u++) > - pa_log("input=%i\n", input.i[u]); > - > - unpacked1.m = _mm_unpackhi_epi16(zero.m, input.m); > - unpacked2.m = _mm_unpacklo_epi16(zero.m, input.m); > - > - for (u = 0; u < PA_INT32_VECTOR_SIZE; u++) > - pa_log("unpacked1=%i\n", unpacked1.i[u]); > - > - unpacked1.v /= reduce.v; > - unpacked2.v /= reduce.v; > - > - for (u = 0; u < PA_INT32_VECTOR_SIZE; u++) > - pa_log("unpacked1=%i\n", unpacked1.i[u]); > - > - for (u = 0; u < PA_INT32_VECTOR_SIZE; u++) > - pa_log("volume1=%i\n", volume1.i[u]); > - > - unpacked1.v = (unpacked1.v * volume1_lo.v) / reduce.v + unpacked1.v * volume1_hi.v; > - unpacked2.v = (unpacked2.v * volume2_lo.v) / reduce.v + unpacked2.v * volume2_hi.v; > - > - for (u = 0; u < PA_INT32_VECTOR_SIZE; u++) > - pa_log("unpacked1=%i\n", unpacked1.i[u]); > - > - output.m = _mm_packs_epi32(unpacked1.m, unpacked2.m); > - > - for (u = 0; u < PA_INT16_VECTOR_SIZE; u++) > - pa_log("output=%i\n", output.i[u]); > - > -#endif > - > - return 0; > -} Pulled. -- Arun