14e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* Compute the sum of the squares of a vector of signed shorts 24e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi 34e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * Copyright 2004 Phil Karn, KA9Q 44e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * May be used under the terms of the GNU Lesser General Public License (LGPL) 54e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi */ 64e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi 74e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#include <stdlib.h> 84e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#include "fec.h" 94e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi 104e213d510f437769f8a28578dd4f786fb7d16c4Bill Yiunsigned long long sumsq_port(signed short *,int); 114e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi 124e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#ifdef __i386__ 134e213d510f437769f8a28578dd4f786fb7d16c4Bill Yiunsigned long long sumsq_mmx(signed short *,int); 144e213d510f437769f8a28578dd4f786fb7d16c4Bill Yiunsigned long long sumsq_sse(signed short *,int); 154e213d510f437769f8a28578dd4f786fb7d16c4Bill Yiunsigned long long sumsq_sse2(signed short *,int); 164e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#endif 174e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi 184e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#ifdef __VEC__ 194e213d510f437769f8a28578dd4f786fb7d16c4Bill Yiunsigned long long sumsq_av(signed short *,int); 204e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#endif 214e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi 224e213d510f437769f8a28578dd4f786fb7d16c4Bill Yiunsigned long long sumsq(signed short *in,int cnt){ 234e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi switch(Cpu_mode){ 244e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi case PORT: 254e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi default: 264e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi return sumsq_port(in,cnt); 274e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#ifdef __i386__ 284e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi case SSE: 294e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi case MMX: 304e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi return sumsq_mmx(in,cnt); 314e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi case SSE2: 324e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi return sumsq_sse2(in,cnt); 334e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#endif 344e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi 354e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#ifdef __VEC__ 364e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi case ALTIVEC: 374e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi return sumsq_av(in,cnt); 384e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#endif 394e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi } 404e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} 41