1*638691a0SAndroid Build Coastguard Worker /* Portable C version of peakval 2*638691a0SAndroid Build Coastguard Worker * Copyright 2004 Phil Karn, KA9Q 3*638691a0SAndroid Build Coastguard Worker */ 4*638691a0SAndroid Build Coastguard Worker #include <stdlib.h> 5*638691a0SAndroid Build Coastguard Worker #include "fec.h" 6*638691a0SAndroid Build Coastguard Worker 7*638691a0SAndroid Build Coastguard Worker int peakval_sse2_assist(signed short *,int); 8*638691a0SAndroid Build Coastguard Worker peakval_sse2(signed short * b,int cnt)9*638691a0SAndroid Build Coastguard Workerint peakval_sse2(signed short *b,int cnt){ 10*638691a0SAndroid Build Coastguard Worker int peak = 0; 11*638691a0SAndroid Build Coastguard Worker int a; 12*638691a0SAndroid Build Coastguard Worker 13*638691a0SAndroid Build Coastguard Worker while(((int)b & 15) != 0 && cnt != 0){ 14*638691a0SAndroid Build Coastguard Worker a = abs(*b); 15*638691a0SAndroid Build Coastguard Worker if(a > peak) 16*638691a0SAndroid Build Coastguard Worker peak = a; 17*638691a0SAndroid Build Coastguard Worker b++; 18*638691a0SAndroid Build Coastguard Worker cnt--; 19*638691a0SAndroid Build Coastguard Worker } 20*638691a0SAndroid Build Coastguard Worker a = peakval_sse2_assist(b,cnt); 21*638691a0SAndroid Build Coastguard Worker if(a > peak) 22*638691a0SAndroid Build Coastguard Worker peak = a; 23*638691a0SAndroid Build Coastguard Worker b += cnt & ~7; 24*638691a0SAndroid Build Coastguard Worker cnt &= 7; 25*638691a0SAndroid Build Coastguard Worker 26*638691a0SAndroid Build Coastguard Worker while(cnt != 0){ 27*638691a0SAndroid Build Coastguard Worker a = abs(*b); 28*638691a0SAndroid Build Coastguard Worker if(a > peak) 29*638691a0SAndroid Build Coastguard Worker peak = a; 30*638691a0SAndroid Build Coastguard Worker b++; 31*638691a0SAndroid Build Coastguard Worker cnt--; 32*638691a0SAndroid Build Coastguard Worker } 33*638691a0SAndroid Build Coastguard Worker return peak; 34*638691a0SAndroid Build Coastguard Worker } 35