init commit
This commit is contained in:
+101
@@ -0,0 +1,101 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <memory.h>
|
||||
#include <time.h>
|
||||
#include "config.h"
|
||||
#ifdef HAVE_GETOPT_H
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
#include "fec.h"
|
||||
|
||||
#if HAVE_GETOPT_LONG
|
||||
struct option Options[] = {
|
||||
{"frame-length",1,NULL,'l'},
|
||||
{"frame-count",1,NULL,'n'},
|
||||
{"verbose",0,NULL,'v'},
|
||||
{"force-altivec",0,NULL,'a'},
|
||||
{"force-port",0,NULL,'p'},
|
||||
{"force-mmx",0,NULL,'m'},
|
||||
{"force-sse",0,NULL,'s'},
|
||||
{"force-sse2",0,NULL,'t'},
|
||||
{NULL},
|
||||
};
|
||||
#endif
|
||||
|
||||
int Verbose = 0;
|
||||
|
||||
int main(int argc,char *argv[]){
|
||||
signed short *buf;
|
||||
int i,d,trial,trials=10000;
|
||||
int bufsize = 2048;
|
||||
long long port_sum,simd_sum;
|
||||
time_t t;
|
||||
int timetrials=0;
|
||||
|
||||
find_cpu_mode();
|
||||
time(&t);
|
||||
srandom(t);
|
||||
|
||||
#if HAVE_GETOPT_LONG
|
||||
while((d = getopt_long(argc,argv,"vapmstl:n:T",Options,NULL)) != EOF){
|
||||
#else
|
||||
while((d = getopt(argc,argv,"vapmstl:n:T")) != EOF){
|
||||
#endif
|
||||
switch(d){
|
||||
case 'a':
|
||||
Cpu_mode = ALTIVEC;
|
||||
break;
|
||||
case 'p':
|
||||
Cpu_mode = PORT;
|
||||
break;
|
||||
case 'm':
|
||||
Cpu_mode = MMX;
|
||||
break;
|
||||
case 's':
|
||||
Cpu_mode = SSE;
|
||||
break;
|
||||
case 't':
|
||||
Cpu_mode = SSE2;
|
||||
break;
|
||||
case 'l':
|
||||
bufsize = atoi(optarg);
|
||||
break;
|
||||
case 'n':
|
||||
trials = atoi(optarg);
|
||||
break;
|
||||
case 'v':
|
||||
Verbose++;
|
||||
break;
|
||||
case 'T':
|
||||
timetrials++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
buf = (signed short *)calloc(bufsize,sizeof(signed short));
|
||||
if(timetrials){
|
||||
for(trial=0;trial<trials;trial++){
|
||||
(void)sumsq(buf,bufsize);
|
||||
}
|
||||
} else {
|
||||
for(trial=0;trial<trials;trial++){
|
||||
int length,offset;
|
||||
|
||||
offset = random() & 7;
|
||||
length = (random() % bufsize) - offset;
|
||||
if(length <= 0)
|
||||
continue;
|
||||
for(i=0;i<bufsize;i++)
|
||||
buf[i] = random();
|
||||
|
||||
port_sum = sumsq_port(buf+offset,length);
|
||||
simd_sum = sumsq(buf+offset,length);
|
||||
if(port_sum != simd_sum){
|
||||
printf("offset %d len %d port_sum = %lld simd_sum = %lld ",offset,length,port_sum,simd_sum);
|
||||
|
||||
printf("ERROR! diff = %lld\n",simd_sum-port_sum);
|
||||
}
|
||||
}
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
Reference in New Issue
Block a user