You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
841 B
40 lines
841 B
/* 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 |
|
} |
|
}
|
|
|