1/* Compute the sum of the squares of a vector of signed shorts
2
3 * Copyright 2004 Phil Karn, KA9Q
4 * May be used under the terms of the GNU Lesser General Public License (LGPL)
5 */
6
7#include <stdlib.h>
8#include "fec.h"
9
10unsigned long long sumsq_port(signed short *,int);
11
12#ifdef __i386__
13unsigned long long sumsq_mmx(signed short *,int);
14unsigned long long sumsq_sse(signed short *,int);
15unsigned long long sumsq_sse2(signed short *,int);
16#endif
17
18#ifdef __VEC__
19unsigned long long sumsq_av(signed short *,int);
20#endif
21
22unsigned long long sumsq(signed short *in,int cnt){
23  switch(Cpu_mode){
24  case PORT:
25  default:
26    return sumsq_port(in,cnt);
27#ifdef __i386__
28  case SSE:
29  case MMX:
30    return sumsq_mmx(in,cnt);
31  case SSE2:
32    return sumsq_sse2(in,cnt);
33#endif
34
35#ifdef __VEC__
36  case ALTIVEC:
37    return sumsq_av(in,cnt);
38#endif
39  }
40}
41