/* 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 #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 } }