Home | History | Annotate | Download | only in fec
      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 
     10 unsigned long long sumsq_port(signed short *,int);
     11 
     12 #ifdef __i386__
     13 unsigned long long sumsq_mmx(signed short *,int);
     14 unsigned long long sumsq_sse(signed short *,int);
     15 unsigned long long sumsq_sse2(signed short *,int);
     16 #endif
     17 
     18 #ifdef __VEC__
     19 unsigned long long sumsq_av(signed short *,int);
     20 #endif
     21 
     22 unsigned 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