gr-satnogs/lib/libfec/sumsq.c

52 lines
1.0 KiB
C

/* Compute the sum of the squares of a vector of signed shorts
* Copyright 2004 Phil Karn, KA9Q
* May be used under the terms of the GNU Lesser General Public License (LGPL)
*/
#include <stdlib.h>
#include "fec.h"
unsigned long long sumsq_port(signed short *, int);
#ifdef __i386__
unsigned long long sumsq_mmx(signed short *, int);
unsigned long long sumsq_sse(signed short *, int);
unsigned long long sumsq_sse2(signed short *, int);
#endif
#ifdef __x86_64__
unsigned long long sumsq_sse2(signed short *, int);
#endif
#ifdef __VEC__
unsigned long long sumsq_av(signed short *, int);
#endif
unsigned long long sumsq(signed short *in, int cnt)
{
switch (Cpu_mode) {
case PORT:
default:
return sumsq_port(in, cnt);
#ifdef __i386__
case SSE:
case MMX:
return sumsq_mmx(in, cnt);
case SSE2:
return sumsq_sse2(in, cnt);
#endif
#ifdef __x86_64__
case SSE2:
return sumsq_port(in, cnt);
//return sumsq_sse2(in,cnt);
#endif
#ifdef __VEC__
case ALTIVEC:
return sumsq_av(in, cnt);
#endif
}
}