41 lines
841 B
C
41 lines
841 B
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 __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 __VEC__
|
||
|
case ALTIVEC:
|
||
|
return sumsq_av(in,cnt);
|
||
|
#endif
|
||
|
}
|
||
|
}
|