aboutsummaryrefslogtreecommitdiffstats
path: root/test/c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2016-07-24 16:09:47 +0200
committerXavier Leroy <xavier.leroy@inria.fr>2016-07-24 16:09:47 +0200
commit04941b3cb8712cee9c3b0806cfe7aa76287c40e8 (patch)
tree54f8cb441d348c3c06821ff288086d2cde19c9a2 /test/c
parent8a9bb1e699d62a8b5c88a54440ee2149acf7021a (diff)
downloadcompcert-kvx-04941b3cb8712cee9c3b0806cfe7aa76287c40e8.tar.gz
compcert-kvx-04941b3cb8712cee9c3b0806cfe7aa76287c40e8.zip
Updates to the local test suite
- Adjust parameters to bring the running time of each test closer to 1 second - compression/arcode.c: array access one past - "inline" -> "static inline" - Remove cchecklink support
Diffstat (limited to 'test/c')
-rw-r--r--test/c/Makefile12
-rw-r--r--test/c/Results/fannkuch62
-rw-r--r--test/c/Results/fib2
-rw-r--r--test/c/fannkuch.c2
-rw-r--r--test/c/fft.c36
-rw-r--r--test/c/fftsp.c36
-rw-r--r--test/c/fftw.c6
-rw-r--r--test/c/fib.c2
-rw-r--r--test/c/knucleotide.c22
-rw-r--r--test/c/lists.c2
-rw-r--r--test/c/nsieve.c16
-rw-r--r--test/c/nsievebits.c5
-rw-r--r--test/c/qsort.c24
-rw-r--r--test/c/sha1.c2
-rw-r--r--test/c/sha3.c2
-rw-r--r--test/c/siphash24.c1
-rw-r--r--test/c/spectral.c2
-rw-r--r--test/c/vmach.c4
18 files changed, 125 insertions, 113 deletions
diff --git a/test/c/Makefile b/test/c/Makefile
index 59a0d834..c0794ff3 100644
--- a/test/c/Makefile
+++ b/test/c/Makefile
@@ -1,11 +1,7 @@
include ../../Makefile.config
CCOMP=../../ccomp
-CCOMPFLAGS=-stdlib ../../runtime -dc -dclight -dasm
-ifeq ($(CCHECKLINK),true)
-CCHECK=../../cchecklink
-CCOMPFLAGS+= -sdump
-endif
+CCOMPFLAGS=$(CCOMPOPTS) -stdlib ../../runtime -dc -dclight -dasm
CFLAGS=-O1 -Wall
@@ -42,12 +38,6 @@ test:
fi; \
done
-ccheck:
- @for i in $(PROGS); do \
- echo "---- $$i"; \
- $(CCHECK) -exe $$i.compcert $$i.sdump; \
- done
-
test_gcc:
@for i in $(PROGS); do \
if ./$$i.gcc | cmp -s - Results/$$i; \
diff --git a/test/c/Results/fannkuch b/test/c/Results/fannkuch
index be1815d4..15d56d61 100644
--- a/test/c/Results/fannkuch
+++ b/test/c/Results/fannkuch
@@ -1,31 +1,31 @@
-12345678910
-21345678910
-23145678910
-32145678910
-31245678910
-13245678910
-23415678910
-32415678910
-34215678910
-43215678910
-42315678910
-24315678910
-34125678910
-43125678910
-41325678910
-14325678910
-13425678910
-31425678910
-41235678910
-14235678910
-12435678910
-21435678910
-24135678910
-42135678910
-23451678910
-32451678910
-34251678910
-43251678910
-42351678910
-24351678910
-Pfannkuchen(10) = 38
+1234567891011
+2134567891011
+2314567891011
+3214567891011
+3124567891011
+1324567891011
+2341567891011
+3241567891011
+3421567891011
+4321567891011
+4231567891011
+2431567891011
+3412567891011
+4312567891011
+4132567891011
+1432567891011
+1342567891011
+3142567891011
+4123567891011
+1423567891011
+1243567891011
+2143567891011
+2413567891011
+4213567891011
+2345167891011
+3245167891011
+3425167891011
+4325167891011
+4235167891011
+2435167891011
+Pfannkuchen(11) = 51
diff --git a/test/c/Results/fib b/test/c/Results/fib
index 3ed84615..53a71233 100644
--- a/test/c/Results/fib
+++ b/test/c/Results/fib
@@ -1 +1 @@
-fib(36) = 24157817
+fib(40) = 165580141
diff --git a/test/c/fannkuch.c b/test/c/fannkuch.c
index 9cc7a693..7feaf6d7 100644
--- a/test/c/fannkuch.c
+++ b/test/c/fannkuch.c
@@ -98,7 +98,7 @@ fannkuch( int n )
int
main( int argc, char* argv[] )
{
- int n = (argc>1) ? atoi(argv[1]) : 10;
+ int n = (argc>1) ? atoi(argv[1]) : 11;
printf("Pfannkuchen(%d) = %ld\n", n, fannkuch(n));
return 0;
diff --git a/test/c/fft.c b/test/c/fft.c
index 884a8568..a4755044 100644
--- a/test/c/fft.c
+++ b/test/c/fft.c
@@ -143,13 +143,13 @@ int dfft(double x[], double y[], int np)
/* Test harness */
-double * xr, * xi;
+#define NRUNS 20
int main(int argc, char ** argv)
{
- int n, np, npm, n2, i, j;
+ int n, np, npm, n2, i, j, nruns;
double enp, t, y, z, zr, zi, zm, a;
- double * pxr, * pxi;
+ double * xr, * xi, * pxr, * pxi;
if (argc >= 2) n = atoi(argv[1]); else n = 18;
np = 1 << n;
@@ -160,21 +160,23 @@ int main(int argc, char ** argv)
xi = calloc(np, sizeof(double));
pxr = xr;
pxi = xi;
- *pxr = (enp - 1.0) * 0.5;
- *pxi = 0.0;
- n2 = np / 2;
- *(pxr+n2) = -0.5;
- *(pxi+n2) = 0.0;
- for (i = 1; i <= npm; i++) {
- j = np - i;
- *(pxr+i) = -0.5;
- *(pxr+j) = -0.5;
- z = t * (double)i;
- y = -0.5*(cos(z)/sin(z));
- *(pxi+i) = y;
- *(pxi+j) = -y;
+ for (nruns = 0; nruns < NRUNS; nruns++) {
+ *pxr = (enp - 1.0) * 0.5;
+ *pxi = 0.0;
+ n2 = np / 2;
+ *(pxr+n2) = -0.5;
+ *(pxi+n2) = 0.0;
+ for (i = 1; i <= npm; i++) {
+ j = np - i;
+ *(pxr+i) = -0.5;
+ *(pxr+j) = -0.5;
+ z = t * (double)i;
+ y = -0.5*(cos(z)/sin(z));
+ *(pxi+i) = y;
+ *(pxi+j) = -y;
+ }
+ dfft(xr,xi,np);
}
- dfft(xr,xi,np);
zr = 0.0;
zi = 0.0;
npm = np-1;
diff --git a/test/c/fftsp.c b/test/c/fftsp.c
index 3c7c23c3..f83bd41f 100644
--- a/test/c/fftsp.c
+++ b/test/c/fftsp.c
@@ -145,13 +145,13 @@ int dfft(float x[], float y[], int np)
/* Test harness */
-float * xr, * xi;
+#define NRUNS 3000
int main(int argc, char ** argv)
{
- int n, np, npm, n2, i, j;
+ int n, np, npm, n2, i, j, nruns;
float enp, t, y, z, zr, zi, zm, a;
- float * pxr, * pxi;
+ float * xr, * xi, * pxr, * pxi;
if (argc >= 2) n = atoi(argv[1]); else n = 12;
np = 1 << n;
@@ -162,21 +162,23 @@ int main(int argc, char ** argv)
xi = calloc(np, sizeof(float));
pxr = xr;
pxi = xi;
- *pxr = (enp - 1.0) * 0.5f;
- *pxi = 0.0;
- n2 = np / 2;
- *(pxr+n2) = -0.5;
- *(pxi+n2) = 0.0;
- for (i = 1; i <= npm; i++) {
- j = np - i;
- *(pxr+i) = -0.5;
- *(pxr+j) = -0.5;
- z = t * (float)i;
- y = -0.5f*(cosf(z)/sinf(z));
- *(pxi+i) = y;
- *(pxi+j) = -y;
+ for (nruns = 0; nruns < NRUNS; nruns++) {
+ *pxr = (enp - 1.0) * 0.5f;
+ *pxi = 0.0;
+ n2 = np / 2;
+ *(pxr+n2) = -0.5;
+ *(pxi+n2) = 0.0;
+ for (i = 1; i <= npm; i++) {
+ j = np - i;
+ *(pxr+i) = -0.5;
+ *(pxr+j) = -0.5;
+ z = t * (float)i;
+ y = -0.5f*(cosf(z)/sinf(z));
+ *(pxi+i) = y;
+ *(pxi+j) = -y;
+ }
+ dfft(xr,xi,np);
}
- dfft(xr,xi,np);
zr = 0.0;
zi = 0.0;
npm = np-1;
diff --git a/test/c/fftw.c b/test/c/fftw.c
index 0b414956..40648257 100644
--- a/test/c/fftw.c
+++ b/test/c/fftw.c
@@ -74,14 +74,16 @@ const E KP1_847759065 = ((E) +1.847759065022573512256366378793576573644833252);
/* Test harness */
+#define NRUNS (1024 * 1024)
+
int main()
{
- INT s[8] = { 0,1,2,3,4,5,6,7 };
+ static INT s[8] = { 0,1,2,3,4,5,6,7 };
static R i[1024];
static R o[1024];
int k;
for (k = 0; k < 1024; ++k) i[k] = k;
- for (k = 0; k < 1024 * 1024 * 2; ++k)
+ for (k = 0; k < NRUNS; ++k)
e01_8(i, o, s, s, 64, 8, 8);
for (k = 0; k < 16; ++k)
printf("o[%d] = %.6e\n", k, o[k]);
diff --git a/test/c/fib.c b/test/c/fib.c
index a9052029..23460a1d 100644
--- a/test/c/fib.c
+++ b/test/c/fib.c
@@ -12,7 +12,7 @@ int fib(int n)
int main(int argc, char ** argv)
{
int n, r;
- if (argc >= 2) n = atoi(argv[1]); else n = 36;
+ if (argc >= 2) n = atoi(argv[1]); else n = 40;
r = fib(n);
printf("fib(%d) = %d\n", n, r);
return 0;
diff --git a/test/c/knucleotide.c b/test/c/knucleotide.c
index 6bd0e9e7..ef909e0e 100644
--- a/test/c/knucleotide.c
+++ b/test/c/knucleotide.c
@@ -41,15 +41,15 @@ struct ht_ht {
#endif /* HT_DEBUG */
};
-/*inline*/ int ht_val(struct ht_node *node) {
+static inline int ht_val(struct ht_node *node) {
return(node->val);
}
-/*inline*/ char *ht_key(struct ht_node *node) {
+static inline char *ht_key(struct ht_node *node) {
return(node->key);
}
-/*inline*/ int ht_hashcode(struct ht_ht *ht, char *key) {
+static inline int ht_hashcode(struct ht_ht *ht, char *key) {
unsigned long val = 0;
for (; *key; ++key) val = 5 * val + *key;
return(val % ht->size);
@@ -129,7 +129,7 @@ void ht_destroy(struct ht_ht *ht) {
#endif /* HT_DEBUG */
}
-/*inline*/ struct ht_node *ht_find(struct ht_ht *ht, char *key) {
+struct ht_node *ht_find(struct ht_ht *ht, char *key) {
int hash_code = ht_hashcode(ht, key);
struct ht_node *node = ht->tbl[hash_code];
while (node) {
@@ -139,7 +139,7 @@ void ht_destroy(struct ht_ht *ht) {
return((struct ht_node *)NULL);
}
-/*inline*/ struct ht_node *ht_find_new(struct ht_ht *ht, char *key) {
+struct ht_node *ht_find_new(struct ht_ht *ht, char *key) {
int hash_code = ht_hashcode(ht, key);
struct ht_node *prev = 0, *node = ht->tbl[hash_code];
while (node) {
@@ -161,7 +161,7 @@ void ht_destroy(struct ht_ht *ht) {
/*
* Hash Table iterator data/functions
*/
-/*inline*/ struct ht_node *ht_next(struct ht_ht *ht) {
+struct ht_node *ht_next(struct ht_ht *ht) {
unsigned long index;
struct ht_node *node = ht->iter_next;
if (node) {
@@ -179,13 +179,13 @@ void ht_destroy(struct ht_ht *ht) {
return((struct ht_node *)NULL);
}
-/*inline*/ struct ht_node *ht_first(struct ht_ht *ht) {
+struct ht_node *ht_first(struct ht_ht *ht) {
ht->iter_index = 0;
ht->iter_next = (struct ht_node *)NULL;
return(ht_next(ht));
}
-/*inline*/ int ht_count(struct ht_ht *ht) {
+static inline int ht_count(struct ht_ht *ht) {
return(ht->items);
}
@@ -281,6 +281,8 @@ write_count (char *searchFor, char *buffer, long buflen)
ht_destroy (ht);
}
+#define NRUNS 500
+
int
main ()
{
@@ -347,6 +349,10 @@ main ()
write_count ("GGTATT", buffer, seqlen);
write_count ("GGTATTTTAATT", buffer, seqlen);
write_count ("GGTATTTTAATTTATAGT", buffer, seqlen);
+ for (i = 0; i < NRUNS; i++) {
+ struct ht_ht * ht = generate_frequencies (6, buffer, seqlen);
+ ht_destroy(ht);
+ }
free (buffer);
fclose (f);
return 0;
diff --git a/test/c/lists.c b/test/c/lists.c
index 350d1f0a..fc974539 100644
--- a/test/c/lists.c
+++ b/test/c/lists.c
@@ -59,7 +59,7 @@ int main(int argc, char ** argv)
struct list * l;
if (argc >= 2) n = atoi(argv[1]); else n = 1000;
- if (argc >= 3) niter = atoi(argv[1]); else niter = 100000;
+ if (argc >= 3) niter = atoi(argv[1]); else niter = 200000;
l = buildlist(n);
if (checklist(n, reverselist(l))) {
printf("OK\n");
diff --git a/test/c/nsieve.c b/test/c/nsieve.c
index d0d59b2b..79e95024 100644
--- a/test/c/nsieve.c
+++ b/test/c/nsieve.c
@@ -10,7 +10,7 @@
typedef unsigned char boolean;
-static void nsieve(int m) {
+static unsigned int nsieve(int m) {
unsigned int count = 0, i, j;
boolean * flags = (boolean *) malloc(m * sizeof(boolean));
memset(flags, 1, m);
@@ -23,14 +23,20 @@ static void nsieve(int m) {
}
free(flags);
- printf("Primes up to %8u %8u\n", m, count);
+ return count;
}
+#define NITER 10
+
int main(int argc, char * argv[]) {
int m = argc < 2 ? 9 : atoi(argv[1]);
- int i;
- for (i = 0; i < 3; i++)
- nsieve(10000 << (m-i));
+ int i, j;
+ for (i = 0; i < 3; i++) {
+ int n = 10000 << (m-i);
+ unsigned count;
+ for (j = 0; j < NITER; j++) { count = nsieve(n); }
+ printf("Primes up to %8d %8u\n", n, count);
+ }
return 0;
}
diff --git a/test/c/nsievebits.c b/test/c/nsievebits.c
index 9ce6aaa0..ed9cde52 100644
--- a/test/c/nsievebits.c
+++ b/test/c/nsievebits.c
@@ -30,13 +30,16 @@ nsieve(unsigned int m)
return (count);
}
+#define NITER 10
+
static void
test(unsigned int n)
{
unsigned int count, m;
+ int i;
m = (1 << n) * 10000;
- count = nsieve(m);
+ for (i = 0; i < NITER; i++) { count = nsieve(m); }
printf("Primes up to %8u %8u\n", m, count);
}
diff --git a/test/c/qsort.c b/test/c/qsort.c
index 802ef9ce..50b60be6 100644
--- a/test/c/qsort.c
+++ b/test/c/qsort.c
@@ -27,24 +27,24 @@ int cmpint(const void * i, const void * j)
return 1;
}
+#define NITER 100
+
int main(int argc, char ** argv)
{
- int n, i;
+ int n, i, j;
int * a, * b;
- int bench = 0;
- if (argc >= 2) n = atoi(argv[1]); else n = 1000000;
- if (argc >= 3) bench = 1;
+ if (argc >= 2) n = atoi(argv[1]); else n = 100000;
a = malloc(n * sizeof(int));
b = malloc(n * sizeof(int));
- for (i = 0; i < n; i++) b[i] = a[i] = rand() & 0xFFFF;
- quicksort(0, n - 1, a);
- if (!bench) {
- qsort(b, n, sizeof(int), cmpint);
- for (i = 0; i < n; i++) {
- if (a[i] != b[i]) { printf("Bug!\n"); return 2; }
- }
- printf("OK\n");
+ for (j = 0; j < NITER; j++) {
+ for (i = 0; i < n; i++) b[i] = a[i] = rand() & 0xFFFF;
+ quicksort(0, n - 1, a);
+ }
+ qsort(b, n, sizeof(int), cmpint);
+ for (i = 0; i < n; i++) {
+ if (a[i] != b[i]) { printf("Bug!\n"); return 2; }
}
+ printf("OK\n");
return 0;
}
diff --git a/test/c/sha1.c b/test/c/sha1.c
index 84d0072c..dff32a8e 100644
--- a/test/c/sha1.c
+++ b/test/c/sha1.c
@@ -231,6 +231,6 @@ int main(int argc, char ** argv)
}
do_test(test_input_1, test_output_1);
do_test(test_input_2, test_output_2);
- do_bench(1000000);
+ do_bench(2000000);
return 0;
}
diff --git a/test/c/sha3.c b/test/c/sha3.c
index 29b8769e..93b8ba4a 100644
--- a/test/c/sha3.c
+++ b/test/c/sha3.c
@@ -191,7 +191,7 @@ test_triplet_t testvec[4] = {
};
#define DATALEN 100000
-#define NITER 1000
+#define NITER 250
int main()
{
diff --git a/test/c/siphash24.c b/test/c/siphash24.c
index 0ed1841f..3af4aa04 100644
--- a/test/c/siphash24.c
+++ b/test/c/siphash24.c
@@ -242,6 +242,7 @@ int speed_test(void)
for(i = 0; i < 16; ++i ) k[i] = i;
for(i = 0; i < 10000000; i++) {
+ testdata[99] = (u8) i;
crypto_auth(out, testdata, 100, k);
}
return out[0];
diff --git a/test/c/spectral.c b/test/c/spectral.c
index 29499fd8..aa1bf397 100644
--- a/test/c/spectral.c
+++ b/test/c/spectral.c
@@ -10,7 +10,7 @@
#include <stdlib.h>
#include <math.h>
-inline double eval_A(int i, int j) { return 1.0/((i+j)*(i+j+1)/2+i+1); }
+static inline double eval_A(int i, int j) { return 1.0/((i+j)*(i+j+1)/2+i+1); }
void eval_A_times_u(int N, const double u[], double Au[])
{
diff --git a/test/c/vmach.c b/test/c/vmach.c
index 49c120dd..84ab1f94 100644
--- a/test/c/vmach.c
+++ b/test/c/vmach.c
@@ -207,8 +207,8 @@ int main(int argc, char ** argv)
printf("fib(30) = %ld\n", wordcode_interp(wordcode_fib));
printf("tak(18, 12, 6) = %ld\n", wordcode_interp(wordcode_tak));
- for (i = 0; i < 20; i++) (void) wordcode_interp(wordcode_fib);
- for (i = 0; i < 1000; i++) (void) wordcode_interp(wordcode_tak);
+ for (i = 0; i < 10; i++) (void) wordcode_interp(wordcode_fib);
+ for (i = 0; i < 500; i++) (void) wordcode_interp(wordcode_tak);
return 0;
}