40 lines
571 B
C
40 lines
571 B
C
/* IA-32 SSE version of peakval
|
|
* Copyright 2004 Phil Karn, KA9Q
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include "fec.h"
|
|
|
|
int peakval_sse_assist(signed short *, int);
|
|
|
|
int peakval_sse(signed short *b, int cnt)
|
|
{
|
|
int peak = 0;
|
|
int a;
|
|
|
|
while (((int)b & 7) != 0 && cnt != 0) {
|
|
a = abs(*b);
|
|
if (a > peak) {
|
|
peak = a;
|
|
}
|
|
b++;
|
|
cnt--;
|
|
}
|
|
a = peakval_sse_assist(b, cnt);
|
|
if (a > peak) {
|
|
peak = a;
|
|
}
|
|
b += cnt & ~3;
|
|
cnt &= 3;
|
|
|
|
while (cnt != 0) {
|
|
a = abs(*b);
|
|
if (a > peak) {
|
|
peak = a;
|
|
}
|
|
b++;
|
|
cnt--;
|
|
}
|
|
return peak;
|
|
}
|