From 4f5ec2ec310a78940b29f18e51dd598a9dfe401d Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Fri, 9 Nov 2018 15:17:52 +0100 Subject: Fixing k1-gcc becoming k1-mbr-gcc --- test/mppa/generate.sh | 2 +- test/mppa/lib/Makefile | 2 +- test/mppa/mmult/Makefile | 6 +++--- test/mppa/sort/Makefile | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) (limited to 'test/mppa') diff --git a/test/mppa/generate.sh b/test/mppa/generate.sh index 765128d4..a883b8f5 100644 --- a/test/mppa/generate.sh +++ b/test/mppa/generate.sh @@ -13,5 +13,5 @@ mkdir -p $(dirname $writefile) #sed -n "s/^.*\/\*\s*RETURN VALUE:\s*\([0-9]*\)\s*\*\//\1/p" $1 > $2 tmpbin=/tmp/k1-$(basename $1)-bin -k1-gcc -O0 $1 -o $tmpbin +k1-mbr-gcc -O0 $1 -o $tmpbin (k1-cluster -- $tmpbin; echo $? > $2) diff --git a/test/mppa/lib/Makefile b/test/mppa/lib/Makefile index 7aeab9f3..74e7ca8b 100644 --- a/test/mppa/lib/Makefile +++ b/test/mppa/lib/Makefile @@ -2,7 +2,7 @@ prng-test-x86: prng.c gcc -D__UNIT_TEST_PRNG__ -O2 -std=c99 $< -o $@ prng-test-k1c: prng.c - k1-gcc -D__UNIT_TEST_PRNG__ -O2 -std=c99 $< -o $@ + k1-mbr-gcc -D__UNIT_TEST_PRNG__ -O2 -std=c99 $< -o $@ .PHONY: test: test-x86 test-k1c diff --git a/test/mppa/mmult/Makefile b/test/mppa/mmult/Makefile index 23b31d49..9c00f8b0 100644 --- a/test/mppa/mmult/Makefile +++ b/test/mppa/mmult/Makefile @@ -9,19 +9,19 @@ all: $(ALL) gcc -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ %-test-k1c: %.c $(PRNG) - k1-gcc -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ + k1-mbr-gcc -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ test-x86: mmult.c $(PRNG) gcc -O2 -std=c99 $^ -o $@ test-k1c: mmult.c $(PRNG) - k1-gcc -O2 -std=c99 $^ -o $@ + k1-mbr-gcc -O2 -std=c99 $^ -o $@ %.s: %.c $(CCOMP) ccomp -O2 -S $< -o $@ test-ccomp: mmult.s $(subst .c,.s,$(PRNG)) - k1-gcc $^ -o $@ + k1-mbr-gcc $^ -o $@ .PHONY: unittest: unittest-x86 unittest-k1c diff --git a/test/mppa/sort/Makefile b/test/mppa/sort/Makefile index f94fe6b8..26c597be 100644 --- a/test/mppa/sort/Makefile +++ b/test/mppa/sort/Makefile @@ -13,19 +13,19 @@ all: $(ALL) gcc -g -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ %-test-k1c: %.c $(PRNG) - k1-gcc -g -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ + k1-mbr-gcc -g -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ test-x86: selection.c merge.c insertion.c test.c $(PRNG) gcc -g -O2 -std=c99 $^ -o $@ test-k1c: selection.c merge.c insertion.c test.c $(PRNG) - k1-gcc -g -O2 -std=c99 $^ -o $@ + k1-mbr-gcc -g -O2 -std=c99 $^ -o $@ %.s: %.c $(CCOMP) ccomp -O2 -S $< -o $@ test-ccomp: selection.s merge.s insertion.s test.s $(subst .c,.s,$(PRNG)) - k1-gcc $^ -o $@ + k1-mbr-gcc $^ -o $@ .PHONY: unittest: unittest-x86 unittest-k1c -- cgit From 622a211d4ebd47feb4d2c7dfe590d10c6d6ae834 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Fri, 9 Nov 2018 15:19:04 +0100 Subject: Fixing PRNG test --- test/mppa/lib/prng.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'test/mppa') diff --git a/test/mppa/lib/prng.c b/test/mppa/lib/prng.c index 59ec7ca6..af3903d6 100644 --- a/test/mppa/lib/prng.c +++ b/test/mppa/lib/prng.c @@ -29,14 +29,11 @@ char bytewise_sum(uint64_t to_check){ int main(void){ srand(42); - if (bytewise_sum(0xdeadbeefb00b1355ULL) != 91) - return 1; - for (int i = 0 ; i < 1000 ; i++) randlong(); uint64_t last = randlong(); - return !((unsigned char)bytewise_sum(last) == 251); + return !((unsigned char)bytewise_sum(last) == 155); } #endif // __UNIT_TEST_PRNG__ -- cgit From f24d303df6cb125ca19b953bb364955cc6e8c246 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Fri, 9 Nov 2018 17:07:13 +0100 Subject: Fixed consistency between the different tests mmult, prng and sort --- test/mppa/lib/.gitignore | 2 -- test/mppa/lib/Makefile | 30 ---------------- test/mppa/lib/prng.c | 39 --------------------- test/mppa/lib/prng.h | 10 ------ test/mppa/lib/types.h | 7 ---- test/mppa/mmult/Makefile | 72 ++++++++++++-------------------------- test/mppa/mmult/README.md | 17 +++++++++ test/mppa/mmult/mmult.c | 44 +++++++++++++---------- test/mppa/prng/.gitignore | 2 ++ test/mppa/prng/Makefile | 49 ++++++++++++++++++++++++++ test/mppa/prng/README.md | 17 +++++++++ test/mppa/prng/prng.c | 41 ++++++++++++++++++++++ test/mppa/prng/prng.h | 10 ++++++ test/mppa/prng/types.h | 7 ++++ test/mppa/sort/Makefile | 87 ++++++++++++++++++++-------------------------- test/mppa/sort/README.md | 17 +++++++++ test/mppa/sort/insertion.c | 17 +++++---- test/mppa/sort/main.c | 34 ++++++++++++++++++ test/mppa/sort/merge.c | 25 +++++++------ test/mppa/sort/selection.c | 21 ++++++----- test/mppa/sort/test.c | 33 ------------------ 21 files changed, 315 insertions(+), 266 deletions(-) delete mode 100644 test/mppa/lib/.gitignore delete mode 100644 test/mppa/lib/Makefile delete mode 100644 test/mppa/lib/prng.c delete mode 100644 test/mppa/lib/prng.h delete mode 100644 test/mppa/lib/types.h create mode 100644 test/mppa/mmult/README.md create mode 100644 test/mppa/prng/.gitignore create mode 100644 test/mppa/prng/Makefile create mode 100644 test/mppa/prng/README.md create mode 100644 test/mppa/prng/prng.c create mode 100644 test/mppa/prng/prng.h create mode 100644 test/mppa/prng/types.h create mode 100644 test/mppa/sort/README.md create mode 100644 test/mppa/sort/main.c delete mode 100644 test/mppa/sort/test.c (limited to 'test/mppa') diff --git a/test/mppa/lib/.gitignore b/test/mppa/lib/.gitignore deleted file mode 100644 index 1879eaee..00000000 --- a/test/mppa/lib/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -prng-test-k1c -prng-test-x86 diff --git a/test/mppa/lib/Makefile b/test/mppa/lib/Makefile deleted file mode 100644 index 74e7ca8b..00000000 --- a/test/mppa/lib/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -prng-test-x86: prng.c - gcc -D__UNIT_TEST_PRNG__ -O2 -std=c99 $< -o $@ - -prng-test-k1c: prng.c - k1-mbr-gcc -D__UNIT_TEST_PRNG__ -O2 -std=c99 $< -o $@ - -.PHONY: -test: test-x86 test-k1c - -.PHONY: -test-x86: prng-test-x86 - @if ! ./$<; then\ - >&2 echo "ERROR: $< failed";\ - exit;\ - else\ - echo "x86: Test Succeeded";\ - fi - -.PHONY: -test-k1c: prng-test-k1c - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR: $< failed";\ - exit;\ - else\ - echo "k1c: Test Succeeded";\ - fi - -.PHONY: -clean: - rm -f prng-test-x86 prng-test-k1c diff --git a/test/mppa/lib/prng.c b/test/mppa/lib/prng.c deleted file mode 100644 index af3903d6..00000000 --- a/test/mppa/lib/prng.c +++ /dev/null @@ -1,39 +0,0 @@ -// https://en.wikipedia.org/wiki/Linear_congruential_generator -> MMIX Donald Knuth -// modulo 2^64 = no need to do it explicitly - -#include "types.h" - -#define MULTIPLIER 6364136223846793005LL -#define INCREMENT 1442695040888963407LL - -static uint64_t current; - -void srand(uint64_t seed){ - current = seed; -} - -uint64_t randlong(void){ - return (current = MULTIPLIER * current + INCREMENT); -} - -#ifdef __UNIT_TEST_PRNG__ -char bytewise_sum(uint64_t to_check){ - char sum = 0; - - for (int i = 0 ; i < 8 ; i++) - sum += (to_check & (uint64_t)(0xFFULL << i*8)) >> i*8; - - return sum; -} - -int main(void){ - srand(42); - - for (int i = 0 ; i < 1000 ; i++) - randlong(); - - uint64_t last = randlong(); - - return !((unsigned char)bytewise_sum(last) == 155); -} -#endif // __UNIT_TEST_PRNG__ diff --git a/test/mppa/lib/prng.h b/test/mppa/lib/prng.h deleted file mode 100644 index 6abdb45a..00000000 --- a/test/mppa/lib/prng.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __PRNG_H__ -#define __PRNG_H__ - -#include "types.h" - -void srand(uint64_t seed); - -uint64_t randlong(void); - -#endif // __PRNG_H__ diff --git a/test/mppa/lib/types.h b/test/mppa/lib/types.h deleted file mode 100644 index 584023e3..00000000 --- a/test/mppa/lib/types.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __TYPES_H__ -#define __TYPES_H__ - -#define uint64_t unsigned long long -#define int64_t signed long long - -#endif // __TYPES_H__ diff --git a/test/mppa/mmult/Makefile b/test/mppa/mmult/Makefile index 9c00f8b0..2e077f5e 100644 --- a/test/mppa/mmult/Makefile +++ b/test/mppa/mmult/Makefile @@ -1,44 +1,28 @@ -PRNG=../lib/prng.c -CCOMP=../../../ccomp +K1CC ?= k1-mbr-gcc +CC ?= gcc +CCOMP ?= ccomp +CFLAGS ?= -O2 -ALL= mmult-test-x86 mmult-test-k1c\ +PRNG=../prng/prng.c -all: $(ALL) - -%-test-x86: %.c $(PRNG) - gcc -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ - -%-test-k1c: %.c $(PRNG) - k1-mbr-gcc -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ - -test-x86: mmult.c $(PRNG) - gcc -O2 -std=c99 $^ -o $@ - -test-k1c: mmult.c $(PRNG) - k1-mbr-gcc -O2 -std=c99 $^ -o $@ +ALL= mmult-test-gcc-x86 mmult-test-gcc-k1c mmult-test-ccomp-k1c\ -%.s: %.c $(CCOMP) - ccomp -O2 -S $< -o $@ +all: $(ALL) -test-ccomp: mmult.s $(subst .c,.s,$(PRNG)) - k1-mbr-gcc $^ -o $@ +mmult-test-gcc-x86: mmult.c $(PRNG) + $(CC) $(CFLAGS) $^ -o $@ -.PHONY: -unittest: unittest-x86 unittest-k1c +mmult-test-gcc-k1c: mmult.c $(PRNG) + $(K1CC) $(CFLAGS) $^ -o $@ -.PHONY: -check: check-x86 check-k1c +mmult-test-ccomp-k1c: mmult.c $(PRNG) + $(CCOMP) $(CFLAGS) $^ -o $@ .PHONY: -compc-check: test-ccomp - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR k1c: mmult $< failed";\ - else\ - echo "k1c: Test mmult $< succeeded";\ - fi +test: test-x86 test-k1c .PHONY: -check-x86: test-x86 +test-x86: mmult-test-gcc-x86 @if ! ./$<; then\ >&2 echo "ERROR x86: $< failed";\ else\ @@ -46,7 +30,7 @@ check-x86: test-x86 fi .PHONY: -check-k1c: test-k1c +test-k1c: mmult-test-gcc-k1c @if ! k1-cluster -- ./$<; then\ >&2 echo "ERROR k1c: $< failed";\ else\ @@ -54,24 +38,12 @@ check-k1c: test-k1c fi .PHONY: -unittest-x86: mmult-test-x86 - @for test in $^; do\ - if ! ./$$test; then\ - >&2 echo "ERROR x86: $$test failed";\ - else\ - echo "x86: Test $$test Succeeded";\ - fi;\ - done - -.PHONY: -unittest-k1c: mmult-test-k1c - @for test in $^; do\ - if ! k1-cluster -- ./$$test; then\ - >&2 echo "ERROR k1c: $$test failed";\ - else\ - echo "k1c: Test $$test Succeeded";\ - fi;\ - done +check: mmult-test-ccomp-k1c + @if ! k1-cluster -- ./$<; then\ + >&2 echo "ERROR k1c: mmult $< failed";\ + else\ + echo "k1c: Test mmult $< succeeded";\ + fi .PHONY: clean: diff --git a/test/mppa/mmult/README.md b/test/mppa/mmult/README.md new file mode 100644 index 00000000..ef2bff7e --- /dev/null +++ b/test/mppa/mmult/README.md @@ -0,0 +1,17 @@ +MMULT +===== + +Examples of matrix multiplication using different methods. + +We compute matrix multiplication using column-based matrix multiplication, then row-based, and finally block based. + +The test verifies that the result is the same on the three methods. If it is the same, 0 will be returned. + +The following commands can be run inside the folder: + +- `make`: produces the unitary test binaries + - `mmult-test-gcc-x86` : binary from gcc on x86 + - `mmult-test-k1c-x86` : binary from gcc on k1c + - `mmult-test-ccomp-x86` : binary from ccomp on k1c +- `make test`: tests the return value of the binaries produced by gcc. +- `make check`: tests the return value of the binary produced by CompCert. diff --git a/test/mppa/mmult/mmult.c b/test/mppa/mmult/mmult.c index b674ca80..aeb91d48 100644 --- a/test/mppa/mmult/mmult.c +++ b/test/mppa/mmult/mmult.c @@ -1,5 +1,5 @@ -#include "../lib/types.h" -#include "../lib/prng.h" +#include "../prng/types.h" +#include "../prng/prng.h" #define __UNIT_TEST_MMULT__ @@ -10,24 +10,28 @@ #endif void mmult_row(uint64_t C[][SIZE], uint64_t A[][SIZE], uint64_t B[][SIZE]){ - for (int i = 0 ; i < SIZE ; i++) - for (int j = 0 ; j < SIZE ; j++) + int i, j, k; + + for (i = 0 ; i < SIZE ; i++) + for (j = 0 ; j < SIZE ; j++) C[i][j] = 0; - for (int i = 0 ; i < SIZE ; i++) - for (int j = 0 ; j < SIZE ; j++) - for (int k = 0 ; k < SIZE ; k++) + for (i = 0 ; i < SIZE ; i++) + for (j = 0 ; j < SIZE ; j++) + for (k = 0 ; k < SIZE ; k++) C[i][j] += A[i][k] * B[k][j]; } void mmult_col(uint64_t C[][SIZE], uint64_t A[][SIZE], uint64_t B[][SIZE]){ - for (int i = 0 ; i < SIZE ; i++) - for (int j = 0 ; j < SIZE ; j++) + int i, j, k; + + for (i = 0 ; i < SIZE ; i++) + for (j = 0 ; j < SIZE ; j++) C[i][j] = 0; - for (int k = 0 ; k < SIZE ; k++) - for (int i = 0 ; i < SIZE ; i++) - for (int j = 0 ; j < SIZE ; j++) + for (k = 0 ; k < SIZE ; k++) + for (i = 0 ; i < SIZE ; i++) + for (j = 0 ; j < SIZE ; j++) C[i][j] += A[i][k] * B[k][j]; } @@ -41,10 +45,11 @@ typedef struct mblock { void divac_mul(mblock *C, const mblock *A, const mblock *B){ const int size = C->imax - C->imin; + int i, j, k; - for (int i = 0 ; i < size ; i++) - for (int j = 0 ; j < size ; j++) - for (int k = 0 ; k < size ; k++) + for (i = 0 ; i < size ; i++) + for (j = 0 ; j < size ; j++) + for (k = 0 ; k < size ; k++) MAT_IJ(C, i, j) += MAT_IJ(A, i, k) * MAT_IJ(B, k, j); } @@ -119,9 +124,10 @@ static uint64_t A[SIZE][SIZE], B[SIZE][SIZE]; int main(void){ srand(42); + int i, j; - for (int i = 0 ; i < SIZE ; i++) - for (int j = 0 ; j < SIZE ; j++){ + for (i = 0 ; i < SIZE ; i++) + for (j = 0 ; j < SIZE ; j++){ A[i][j] = randlong(); B[i][j] = randlong(); } @@ -130,8 +136,8 @@ int main(void){ mmult_col(C2, A, B); mmult_divac(C3, A, B); - for (int i = 0 ; i < SIZE ; i++) - for (int j = 0 ; j < SIZE ; j++) + for (i = 0 ; i < SIZE ; i++) + for (j = 0 ; j < SIZE ; j++) if (!(C1[i][j] == C2[i][j] && C1[i][j] == C3[i][j])) return -1; diff --git a/test/mppa/prng/.gitignore b/test/mppa/prng/.gitignore new file mode 100644 index 00000000..1879eaee --- /dev/null +++ b/test/mppa/prng/.gitignore @@ -0,0 +1,2 @@ +prng-test-k1c +prng-test-x86 diff --git a/test/mppa/prng/Makefile b/test/mppa/prng/Makefile new file mode 100644 index 00000000..481a3fca --- /dev/null +++ b/test/mppa/prng/Makefile @@ -0,0 +1,49 @@ +K1CC ?= k1-mbr-gcc +CC ?= gcc +CCOMP ?= ccomp +CFLAGS ?= -O2 + +all: prng-test-gcc-x86 prng-test-gcc-k1c prng-test-ccomp-k1c + +prng-test-gcc-x86: prng.c + $(CC) -D__UNIT_TEST_PRNG__ $(CFLAGS) $< -o $@ + +prng-test-gcc-k1c: prng.c + $(K1CC) -D__UNIT_TEST_PRNG__ $(CFLAGS) $< -o $@ + +prng-test-ccomp-k1c: prng.c + $(CCOMP) -D__UNIT_TEST_PRNG__ $(CFLAGS) $< -o $@ + +.PHONY: +test: test-x86 test-k1c + +.PHONY: +test-x86: prng-test-gcc-x86 + @if ! ./$<; then\ + >&2 echo "ERROR: $< failed";\ + exit;\ + else\ + echo "$< Succeeded";\ + fi + +.PHONY: +test-k1c: prng-test-gcc-k1c + @if ! k1-cluster -- ./$<; then\ + >&2 echo "ERROR: $< failed";\ + exit;\ + else\ + echo "$< Succeeded";\ + fi + +.PHONY: +check: prng-test-ccomp-k1c + @if ! k1-cluster -- ./$<; then\ + >&2 echo "ERROR: $< failed";\ + exit;\ + else\ + echo "$< Succeeded";\ + fi + +.PHONY: +clean: + rm -f prng-test-gcc-x86 prng-test-gcc-k1c prng-test-ccomp-k1c diff --git a/test/mppa/prng/README.md b/test/mppa/prng/README.md new file mode 100644 index 00000000..b4c2279b --- /dev/null +++ b/test/mppa/prng/README.md @@ -0,0 +1,17 @@ +PRNG +==== + +This is a simple Pseudo Random Number Generator. + +`prng.c` contains a simple unitary test that compares the sum of the "bytewise sum" +of 1000 generated numbers to a hardcoded result, that is the one obtained with +`gcc -O2` on a x86 processor, and returns 0 if the result is correct. + +The following commands can be run inside that folder: + +- `make`: produces the unitary test binaries + - `prng-test-gcc-x86` : binary from gcc on x86 + - `prng-test-k1c-x86` : binary from gcc on k1c + - `prng-test-ccomp-x86` : binary from ccomp on k1c +- `make test`: tests the return value of the binaries produced by gcc. +- `make check`: tests the return value of the binary produced by CompCert. diff --git a/test/mppa/prng/prng.c b/test/mppa/prng/prng.c new file mode 100644 index 00000000..71de1dc3 --- /dev/null +++ b/test/mppa/prng/prng.c @@ -0,0 +1,41 @@ +// https://en.wikipedia.org/wiki/Linear_congruential_generator -> MMIX Donald Knuth +// modulo 2^64 = no need to do it explicitly + +#include "types.h" + +#define MULTIPLIER 6364136223846793005LL +#define INCREMENT 1442695040888963407LL + +static uint64_t current; + +void srand(uint64_t seed){ + current = seed; +} + +uint64_t randlong(void){ + return (current = MULTIPLIER * current + INCREMENT); +} + +#ifdef __UNIT_TEST_PRNG__ +char bytewise_sum(uint64_t to_check){ + char sum = 0; + int i; + + for (i = 0 ; i < 8 ; i++) + sum += (to_check & (uint64_t)(0xFFULL << i*8)) >> i*8; + + return sum; +} + +int main(void){ + srand(42); + int i; + + for (i = 0 ; i < 1000 ; i++) + randlong(); + + uint64_t last = randlong(); + + return !((unsigned char)bytewise_sum(last) == 155); +} +#endif // __UNIT_TEST_PRNG__ diff --git a/test/mppa/prng/prng.h b/test/mppa/prng/prng.h new file mode 100644 index 00000000..6abdb45a --- /dev/null +++ b/test/mppa/prng/prng.h @@ -0,0 +1,10 @@ +#ifndef __PRNG_H__ +#define __PRNG_H__ + +#include "types.h" + +void srand(uint64_t seed); + +uint64_t randlong(void); + +#endif // __PRNG_H__ diff --git a/test/mppa/prng/types.h b/test/mppa/prng/types.h new file mode 100644 index 00000000..584023e3 --- /dev/null +++ b/test/mppa/prng/types.h @@ -0,0 +1,7 @@ +#ifndef __TYPES_H__ +#define __TYPES_H__ + +#define uint64_t unsigned long long +#define int64_t signed long long + +#endif // __TYPES_H__ diff --git a/test/mppa/sort/Makefile b/test/mppa/sort/Makefile index 26c597be..c0c9347d 100644 --- a/test/mppa/sort/Makefile +++ b/test/mppa/sort/Makefile @@ -1,64 +1,40 @@ -PRNG=../lib/prng.c -CCOMP=../../../ccomp +K1CC ?= k1-mbr-gcc +CC ?= gcc +CCOMP ?= ccomp +CFLAGS ?= -O2 -ALL= insertion-test-x86 insertion-test-k1c\ - selection-test-x86 selection-test-k1c\ - merge-test-x86 merge-test-k1c\ - test-x86 test-k1c\ - test-ccomp +PRNG=../prng/prng.c -all: $(ALL) - -%-test-x86: %.c $(PRNG) - gcc -g -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ +CFILES=insertion.c merge.c selection.c main.c -%-test-k1c: %.c $(PRNG) - k1-mbr-gcc -g -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ -O2 -std=c99 $^ -o $@ +ALL= insertion-test-gcc-x86 insertion-test-gcc-k1c\ + selection-test-gcc-x86 selection-test-gcc-k1c\ + merge-test-gcc-x86 merge-test-gcc-k1c\ + main-test-gcc-x86 main-test-gcc-k1c\ + main-test-ccomp-k1c -test-x86: selection.c merge.c insertion.c test.c $(PRNG) - gcc -g -O2 -std=c99 $^ -o $@ +all: $(ALL) -test-k1c: selection.c merge.c insertion.c test.c $(PRNG) - k1-mbr-gcc -g -O2 -std=c99 $^ -o $@ +main-test-gcc-x86: $(CFILES) $(PRNG) + $(CC) $(CFLAGS) $^ -o $@ -%.s: %.c $(CCOMP) - ccomp -O2 -S $< -o $@ +%-test-gcc-x86: %.c $(PRNG) + $(CC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $^ -o $@ -test-ccomp: selection.s merge.s insertion.s test.s $(subst .c,.s,$(PRNG)) - k1-mbr-gcc $^ -o $@ +main-test-gcc-k1c: $(CFILES) $(PRNG) + $(K1CC) $(CFLAGS) $^ -o $@ -.PHONY: -unittest: unittest-x86 unittest-k1c +%-test-gcc-k1c: %.c $(PRNG) + $(K1CC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $^ -o $@ -.PHONY: -check: check-x86 check-k1c +main-test-ccomp-k1c: $(CFILES) $(PRNG) + $(CCOMP) $(CFLAGS) $^ -o $@ -.PHONY: -compc-check: test-ccomp - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR k1c: sort $< failed";\ - else\ - echo "k1c: Test sort $< succeeded";\ - fi - -.PHONY: -check-x86: test-x86 - @if ! ./$<; then\ - >&2 echo "ERROR x86: $< failed";\ - else\ - echo "x86: Test $< succeeded";\ - fi +%-test-ccomp-k1c: %.c $(PRNG) + $(CCOMP) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $^ -o $@ .PHONY: -check-k1c: test-k1c - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR k1c: $< failed";\ - else\ - echo "k1c: Test $< succeeded";\ - fi - -.PHONY: -unittest-x86: insertion-test-x86 selection-test-x86 merge-test-x86 +test-x86: insertion-test-gcc-x86 selection-test-gcc-x86 merge-test-gcc-x86 main-test-gcc-x86 @for test in $^; do\ if ! ./$$test; then\ >&2 echo "ERROR x86: $$test failed";\ @@ -68,7 +44,7 @@ unittest-x86: insertion-test-x86 selection-test-x86 merge-test-x86 done .PHONY: -unittest-k1c: insertion-test-k1c selection-test-k1c merge-test-k1c +test-k1c: insertion-test-gcc-k1c selection-test-gcc-k1c merge-test-gcc-k1c main-test-gcc-k1c @for test in $^; do\ if ! k1-cluster -- ./$$test; then\ >&2 echo "ERROR k1c: $$test failed";\ @@ -77,6 +53,17 @@ unittest-k1c: insertion-test-k1c selection-test-k1c merge-test-k1c fi;\ done +.PHONY: +test: test-x86 test-k1c + +.PHONY: +check: main-test-ccomp-k1c + @if ! k1-cluster -- ./$<; then\ + >&2 echo "ERROR k1c: sort $< failed";\ + else\ + echo "k1c: Test sort $< succeeded";\ + fi + .PHONY: clean: rm -f $(ALL) diff --git a/test/mppa/sort/README.md b/test/mppa/sort/README.md new file mode 100644 index 00000000..b4c2279b --- /dev/null +++ b/test/mppa/sort/README.md @@ -0,0 +1,17 @@ +PRNG +==== + +This is a simple Pseudo Random Number Generator. + +`prng.c` contains a simple unitary test that compares the sum of the "bytewise sum" +of 1000 generated numbers to a hardcoded result, that is the one obtained with +`gcc -O2` on a x86 processor, and returns 0 if the result is correct. + +The following commands can be run inside that folder: + +- `make`: produces the unitary test binaries + - `prng-test-gcc-x86` : binary from gcc on x86 + - `prng-test-k1c-x86` : binary from gcc on k1c + - `prng-test-ccomp-x86` : binary from ccomp on k1c +- `make test`: tests the return value of the binaries produced by gcc. +- `make check`: tests the return value of the binary produced by CompCert. diff --git a/test/mppa/sort/insertion.c b/test/mppa/sort/insertion.c index 88093b64..bca09599 100644 --- a/test/mppa/sort/insertion.c +++ b/test/mppa/sort/insertion.c @@ -1,5 +1,5 @@ -#include "../lib/prng.h" -#include "../lib/types.h" +#include "../prng/prng.h" +#include "../prng/types.h" #ifdef __UNIT_TEST_INSERTION__ #define SIZE 100 @@ -14,16 +14,18 @@ void swap_ins(uint64_t *a, uint64_t *b){ } int insert_sort(uint64_t *res, const uint64_t *T){ + int i, j; + if (SIZE <= 0) return -1; - for (int i = 0 ; i < SIZE ; i++) + for (i = 0 ; i < SIZE ; i++) res[i] = T[i]; - for (int i = 0 ; i < SIZE-1 ; i++){ + for (i = 0 ; i < SIZE-1 ; i++){ if (res[i] > res[i+1]){ swap_ins(&res[i], &res[i+1]); - for (int j = i ; j > 0 ; j--) + for (j = i ; j > 0 ; j--) if (res[j-1] > res[j]) swap_ins(&res[j-1], &res[j]); } @@ -36,9 +38,10 @@ int insert_sort(uint64_t *res, const uint64_t *T){ int main(void){ uint64_t T[SIZE]; uint64_t res[SIZE]; + int i; srand(42); - for (int i = 0 ; i < SIZE ; i++) + for (i = 0 ; i < SIZE ; i++) T[i] = randlong(); /* Sorting the table */ @@ -46,7 +49,7 @@ int main(void){ /* Computing max(T) */ uint64_t max = T[0]; - for (int i = 1 ; i < SIZE ; i++) + for (i = 1 ; i < SIZE ; i++) if (T[i] > max) max = T[i]; diff --git a/test/mppa/sort/main.c b/test/mppa/sort/main.c new file mode 100644 index 00000000..aef419aa --- /dev/null +++ b/test/mppa/sort/main.c @@ -0,0 +1,34 @@ +#include "../prng/prng.h" +#include "../prng/types.h" + +#include "test.h" +#include "insertion.h" +#include "selection.h" +#include "merge.h" + +int main(void){ + uint64_t T[SIZE]; + uint64_t res1[SIZE], res2[SIZE], res3[SIZE]; + int i; + srand(42); + + for (i = 0 ; i < SIZE ; i++) + T[i] = randlong(); + + /* insertion sort */ + if (insert_sort(res1, T) < 0) return -1; + + /* selection sort */ + if (select_sort(res2, T) < 0) return -2; + + /* merge sort */ + if (merge_sort(res3, T) < 0) return -3; + + /* We should have: res1[i] == res2[i] == res3[i] */ + for (i = 0 ; i < SIZE ; i++){ + if (!(res1[i] == res2[i] && res2[i] == res3[i])) + return -4; + } + + return 0; +} diff --git a/test/mppa/sort/merge.c b/test/mppa/sort/merge.c index b2d41ce3..99f8ba85 100644 --- a/test/mppa/sort/merge.c +++ b/test/mppa/sort/merge.c @@ -1,5 +1,5 @@ -#include "../lib/prng.h" -#include "../lib/types.h" +#include "../prng/prng.h" +#include "../prng/types.h" //https://en.wikipedia.org/wiki/Merge_sort @@ -15,8 +15,8 @@ int min(int a, int b){ void BottomUpMerge(const uint64_t *A, int iLeft, int iRight, int iEnd, uint64_t *B) { - int i = iLeft, j = iRight; - for (int k = iLeft; k < iEnd; k++) { + int i = iLeft, j = iRight, k; + for (k = iLeft; k < iEnd; k++) { if (i < iRight && (j >= iEnd || A[i] <= A[j])) { B[k] = A[i]; i = i + 1; @@ -30,18 +30,20 @@ void BottomUpMerge(const uint64_t *A, int iLeft, int iRight, int iEnd, uint64_t void CopyArray(uint64_t *to, const uint64_t *from) { const int n = SIZE; + int i; - for(int i = 0; i < n; i++) + for(i = 0; i < n; i++) to[i] = from[i]; } void BottomUpMergeSort(uint64_t *A, uint64_t *B) { const int n = SIZE; + int width, i; - for (int width = 1; width < n; width = 2 * width) + for (width = 1; width < n; width = 2 * width) { - for (int i = 0; i < n; i = i + 2 * width) + for (i = 0; i < n; i = i + 2 * width) { BottomUpMerge(A, i, min(i+width, n), min(i+2*width, n), B); } @@ -50,12 +52,14 @@ void BottomUpMergeSort(uint64_t *A, uint64_t *B) } int merge_sort(uint64_t *res, const uint64_t *T){ + int i; + if (SIZE <= 0) return -1; uint64_t B[SIZE]; uint64_t *A = res; - for (int i = 0 ; i < SIZE ; i++) + for (i = 0 ; i < SIZE ; i++) A[i] = T[i]; BottomUpMergeSort(A, B); @@ -67,9 +71,10 @@ int merge_sort(uint64_t *res, const uint64_t *T){ int main(void){ uint64_t T[SIZE]; uint64_t res[SIZE]; + int i; srand(42); - for (int i = 0 ; i < SIZE ; i++) + for (i = 0 ; i < SIZE ; i++) T[i] = randlong(); /* Sorting the table */ @@ -77,7 +82,7 @@ int main(void){ /* Computing max(T) */ uint64_t max = T[0]; - for (int i = 1 ; i < SIZE ; i++) + for (i = 1 ; i < SIZE ; i++) if (T[i] > max) max = T[i]; diff --git a/test/mppa/sort/selection.c b/test/mppa/sort/selection.c index 89bc2c65..df4be04f 100644 --- a/test/mppa/sort/selection.c +++ b/test/mppa/sort/selection.c @@ -1,5 +1,5 @@ -#include "../lib/prng.h" -#include "../lib/types.h" +#include "../prng/prng.h" +#include "../prng/types.h" #ifdef __UNIT_TEST_SELECTION__ #define SIZE 100 @@ -14,15 +14,16 @@ void swap_sel(uint64_t *a, uint64_t *b){ } int select_sort(uint64_t *res, const uint64_t *T){ + int i, j, iMin; + if (SIZE <= 0) return -1; - for (int i = 0 ; i < SIZE ; i++) + for (i = 0 ; i < SIZE ; i++) res[i] = T[i]; - for (int j = 0 ; j < SIZE ; j++){ - int i; - int iMin = j; + for (j = 0 ; j < SIZE ; j++){ + iMin = j; for (i = j+1 ; i < SIZE ; i++) if (res[i] < res[iMin]) iMin = i; @@ -38,17 +39,19 @@ int select_sort(uint64_t *res, const uint64_t *T){ int main(void){ uint64_t T[SIZE]; uint64_t res[SIZE]; + uint64_t max; + int i; srand(42); - for (int i = 0 ; i < SIZE ; i++) + for (i = 0 ; i < SIZE ; i++) T[i] = randlong(); /* Sorting the table */ if (select_sort(res, T) < 0) return -1; /* Computing max(T) */ - uint64_t max = T[0]; - for (int i = 1 ; i < SIZE ; i++) + max = T[0]; + for (i = 1 ; i < SIZE ; i++) if (T[i] > max) max = T[i]; diff --git a/test/mppa/sort/test.c b/test/mppa/sort/test.c deleted file mode 100644 index e5e14fef..00000000 --- a/test/mppa/sort/test.c +++ /dev/null @@ -1,33 +0,0 @@ -#include "../lib/prng.h" -#include "../lib/types.h" - -#include "test.h" -#include "insertion.h" -#include "selection.h" -#include "merge.h" - -int main(void){ - uint64_t T[SIZE]; - uint64_t res1[SIZE], res2[SIZE], res3[SIZE]; - srand(42); - - for (int i = 0 ; i < SIZE ; i++) - T[i] = randlong(); - - /* insertion sort */ - if (insert_sort(res1, T) < 0) return -1; - - /* selection sort */ - if (select_sort(res2, T) < 0) return -2; - - /* merge sort */ - if (merge_sort(res3, T) < 0) return -3; - - /* We should have: res1[i] == res2[i] == res3[i] */ - for (int i = 0 ; i < SIZE ; i++){ - if (!(res1[i] == res2[i] && res2[i] == res3[i])) - return -4; - } - - return 0; -} -- cgit From d15b2c014daf547e10504278ae42d4651dc71319 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Tue, 13 Nov 2018 11:44:56 +0100 Subject: Revamped the instruction testsuite (all instructions work except umodd and udivd) --- test/mppa/Makefile | 161 ++++++++++++++++++++++++++---------------- test/mppa/builtins/clzll.c | 7 ++ test/mppa/builtins/stsud.c | 7 ++ test/mppa/check.sh | 32 --------- test/mppa/general/.gitignore | 1 - test/mppa/general/addw.c | 5 -- test/mppa/general/andd.c | 5 -- test/mppa/general/andw.c | 5 -- test/mppa/general/branch.c | 10 --- test/mppa/general/branchz.c | 10 --- test/mppa/general/branchzu.c | 11 --- test/mppa/general/call.c | 16 ----- test/mppa/general/cb.deqz.c | 10 --- test/mppa/general/cb.dgez.c | 10 --- test/mppa/general/cb.dgtz.c | 10 --- test/mppa/general/cb.dlez.c | 10 --- test/mppa/general/cb.dltz.c | 10 --- test/mppa/general/cb.dnez.c | 10 --- test/mppa/general/cb.wgez.c | 10 --- test/mppa/general/cb.wgtz.c | 10 --- test/mppa/general/cb.wlez.c | 10 --- test/mppa/general/cb.wltz.c | 10 --- test/mppa/general/clzll.c | 7 -- test/mppa/general/compd.eq.c | 7 -- test/mppa/general/compd.geu.c | 7 -- test/mppa/general/compd.gt.c | 7 -- test/mppa/general/compd.gtu.c | 7 -- test/mppa/general/compd.le.c | 7 -- test/mppa/general/compd.leu.c | 7 -- test/mppa/general/compd.lt.c | 7 -- test/mppa/general/compd.ltu.c | 7 -- test/mppa/general/compd.ne.c | 7 -- test/mppa/general/compw.eq.c | 7 -- test/mppa/general/compw.geu.c | 7 -- test/mppa/general/compw.gt.c | 7 -- test/mppa/general/compw.gtu.c | 7 -- test/mppa/general/compw.le.c | 7 -- test/mppa/general/compw.leu.c | 7 -- test/mppa/general/compw.lt.c | 7 -- test/mppa/general/compw.ltu.c | 7 -- test/mppa/general/compw.ne.c | 7 -- test/mppa/general/div2.c | 7 -- test/mppa/general/for.c | 9 --- test/mppa/general/forvar.c | 9 --- test/mppa/general/forvarl.c | 10 --- test/mppa/general/framework.h | 26 ------- test/mppa/general/lbs.c | 9 --- test/mppa/general/lbz.c | 9 --- test/mppa/general/muld.c | 7 -- test/mppa/general/mulw.c | 7 -- test/mppa/general/negd.c | 7 -- test/mppa/general/ord.c | 7 -- test/mppa/general/sbfd.c | 7 -- test/mppa/general/sbfw.c | 7 -- test/mppa/general/simple.c | 7 -- test/mppa/general/sllw.c | 7 -- test/mppa/general/srad.c | 7 -- test/mppa/general/srld.c | 7 -- test/mppa/general/stsud.c | 7 -- test/mppa/general/udivd.c | 7 -- test/mppa/general/umodd.c | 7 -- test/mppa/general/xord.c | 7 -- test/mppa/generate.sh | 17 ----- test/mppa/instr/.gitignore | 1 + test/mppa/instr/addw.c | 5 ++ test/mppa/instr/andd.c | 5 ++ test/mppa/instr/andw.c | 5 ++ test/mppa/instr/branch.c | 10 +++ test/mppa/instr/branchz.c | 10 +++ test/mppa/instr/branchzu.c | 11 +++ test/mppa/instr/call.c | 16 +++++ test/mppa/instr/cb.deqz.c | 10 +++ test/mppa/instr/cb.dgez.c | 10 +++ test/mppa/instr/cb.dgtz.c | 10 +++ test/mppa/instr/cb.dlez.c | 10 +++ test/mppa/instr/cb.dltz.c | 10 +++ test/mppa/instr/cb.dnez.c | 10 +++ test/mppa/instr/cb.wgez.c | 10 +++ test/mppa/instr/cb.wgtz.c | 10 +++ test/mppa/instr/cb.wlez.c | 10 +++ test/mppa/instr/cb.wltz.c | 10 +++ test/mppa/instr/compd.eq.c | 7 ++ test/mppa/instr/compd.geu.c | 7 ++ test/mppa/instr/compd.gt.c | 7 ++ test/mppa/instr/compd.gtu.c | 7 ++ test/mppa/instr/compd.le.c | 7 ++ test/mppa/instr/compd.leu.c | 7 ++ test/mppa/instr/compd.lt.c | 7 ++ test/mppa/instr/compd.ltu.c | 7 ++ test/mppa/instr/compd.ne.c | 7 ++ test/mppa/instr/compw.eq.c | 7 ++ test/mppa/instr/compw.geu.c | 7 ++ test/mppa/instr/compw.gt.c | 7 ++ test/mppa/instr/compw.gtu.c | 7 ++ test/mppa/instr/compw.le.c | 7 ++ test/mppa/instr/compw.leu.c | 7 ++ test/mppa/instr/compw.lt.c | 7 ++ test/mppa/instr/compw.ltu.c | 7 ++ test/mppa/instr/compw.ne.c | 7 ++ test/mppa/instr/div2.c | 7 ++ test/mppa/instr/for.c | 9 +++ test/mppa/instr/forvar.c | 9 +++ test/mppa/instr/forvarl.c | 10 +++ test/mppa/instr/framework.h | 26 +++++++ test/mppa/instr/lbs.c | 9 +++ test/mppa/instr/lbz.c | 9 +++ test/mppa/instr/muld.c | 7 ++ test/mppa/instr/mulw.c | 7 ++ test/mppa/instr/negd.c | 7 ++ test/mppa/instr/ord.c | 7 ++ test/mppa/instr/sbfd.c | 7 ++ test/mppa/instr/sbfw.c | 7 ++ test/mppa/instr/simple.c | 7 ++ test/mppa/instr/sllw.c | 7 ++ test/mppa/instr/srad.c | 7 ++ test/mppa/instr/srld.c | 7 ++ test/mppa/instr/udivd.c | 7 ++ test/mppa/instr/umodd.c | 7 ++ test/mppa/instr/xord.c | 7 ++ 119 files changed, 574 insertions(+), 582 deletions(-) create mode 100644 test/mppa/builtins/clzll.c create mode 100644 test/mppa/builtins/stsud.c delete mode 100644 test/mppa/check.sh delete mode 100644 test/mppa/general/.gitignore delete mode 100644 test/mppa/general/addw.c delete mode 100644 test/mppa/general/andd.c delete mode 100644 test/mppa/general/andw.c delete mode 100644 test/mppa/general/branch.c delete mode 100644 test/mppa/general/branchz.c delete mode 100644 test/mppa/general/branchzu.c delete mode 100644 test/mppa/general/call.c delete mode 100644 test/mppa/general/cb.deqz.c delete mode 100644 test/mppa/general/cb.dgez.c delete mode 100644 test/mppa/general/cb.dgtz.c delete mode 100644 test/mppa/general/cb.dlez.c delete mode 100644 test/mppa/general/cb.dltz.c delete mode 100644 test/mppa/general/cb.dnez.c delete mode 100644 test/mppa/general/cb.wgez.c delete mode 100644 test/mppa/general/cb.wgtz.c delete mode 100644 test/mppa/general/cb.wlez.c delete mode 100644 test/mppa/general/cb.wltz.c delete mode 100644 test/mppa/general/clzll.c delete mode 100644 test/mppa/general/compd.eq.c delete mode 100644 test/mppa/general/compd.geu.c delete mode 100644 test/mppa/general/compd.gt.c delete mode 100644 test/mppa/general/compd.gtu.c delete mode 100644 test/mppa/general/compd.le.c delete mode 100644 test/mppa/general/compd.leu.c delete mode 100644 test/mppa/general/compd.lt.c delete mode 100644 test/mppa/general/compd.ltu.c delete mode 100644 test/mppa/general/compd.ne.c delete mode 100644 test/mppa/general/compw.eq.c delete mode 100644 test/mppa/general/compw.geu.c delete mode 100644 test/mppa/general/compw.gt.c delete mode 100644 test/mppa/general/compw.gtu.c delete mode 100644 test/mppa/general/compw.le.c delete mode 100644 test/mppa/general/compw.leu.c delete mode 100644 test/mppa/general/compw.lt.c delete mode 100644 test/mppa/general/compw.ltu.c delete mode 100644 test/mppa/general/compw.ne.c delete mode 100644 test/mppa/general/div2.c delete mode 100644 test/mppa/general/for.c delete mode 100644 test/mppa/general/forvar.c delete mode 100644 test/mppa/general/forvarl.c delete mode 100644 test/mppa/general/framework.h delete mode 100644 test/mppa/general/lbs.c delete mode 100644 test/mppa/general/lbz.c delete mode 100644 test/mppa/general/muld.c delete mode 100644 test/mppa/general/mulw.c delete mode 100644 test/mppa/general/negd.c delete mode 100644 test/mppa/general/ord.c delete mode 100644 test/mppa/general/sbfd.c delete mode 100644 test/mppa/general/sbfw.c delete mode 100644 test/mppa/general/simple.c delete mode 100644 test/mppa/general/sllw.c delete mode 100644 test/mppa/general/srad.c delete mode 100644 test/mppa/general/srld.c delete mode 100644 test/mppa/general/stsud.c delete mode 100644 test/mppa/general/udivd.c delete mode 100644 test/mppa/general/umodd.c delete mode 100644 test/mppa/general/xord.c delete mode 100644 test/mppa/generate.sh create mode 100644 test/mppa/instr/.gitignore create mode 100644 test/mppa/instr/addw.c create mode 100644 test/mppa/instr/andd.c create mode 100644 test/mppa/instr/andw.c create mode 100644 test/mppa/instr/branch.c create mode 100644 test/mppa/instr/branchz.c create mode 100644 test/mppa/instr/branchzu.c create mode 100644 test/mppa/instr/call.c create mode 100644 test/mppa/instr/cb.deqz.c create mode 100644 test/mppa/instr/cb.dgez.c create mode 100644 test/mppa/instr/cb.dgtz.c create mode 100644 test/mppa/instr/cb.dlez.c create mode 100644 test/mppa/instr/cb.dltz.c create mode 100644 test/mppa/instr/cb.dnez.c create mode 100644 test/mppa/instr/cb.wgez.c create mode 100644 test/mppa/instr/cb.wgtz.c create mode 100644 test/mppa/instr/cb.wlez.c create mode 100644 test/mppa/instr/cb.wltz.c create mode 100644 test/mppa/instr/compd.eq.c create mode 100644 test/mppa/instr/compd.geu.c create mode 100644 test/mppa/instr/compd.gt.c create mode 100644 test/mppa/instr/compd.gtu.c create mode 100644 test/mppa/instr/compd.le.c create mode 100644 test/mppa/instr/compd.leu.c create mode 100644 test/mppa/instr/compd.lt.c create mode 100644 test/mppa/instr/compd.ltu.c create mode 100644 test/mppa/instr/compd.ne.c create mode 100644 test/mppa/instr/compw.eq.c create mode 100644 test/mppa/instr/compw.geu.c create mode 100644 test/mppa/instr/compw.gt.c create mode 100644 test/mppa/instr/compw.gtu.c create mode 100644 test/mppa/instr/compw.le.c create mode 100644 test/mppa/instr/compw.leu.c create mode 100644 test/mppa/instr/compw.lt.c create mode 100644 test/mppa/instr/compw.ltu.c create mode 100644 test/mppa/instr/compw.ne.c create mode 100644 test/mppa/instr/div2.c create mode 100644 test/mppa/instr/for.c create mode 100644 test/mppa/instr/forvar.c create mode 100644 test/mppa/instr/forvarl.c create mode 100644 test/mppa/instr/framework.h create mode 100644 test/mppa/instr/lbs.c create mode 100644 test/mppa/instr/lbz.c create mode 100644 test/mppa/instr/muld.c create mode 100644 test/mppa/instr/mulw.c create mode 100644 test/mppa/instr/negd.c create mode 100644 test/mppa/instr/ord.c create mode 100644 test/mppa/instr/sbfd.c create mode 100644 test/mppa/instr/sbfw.c create mode 100644 test/mppa/instr/simple.c create mode 100644 test/mppa/instr/sllw.c create mode 100644 test/mppa/instr/srad.c create mode 100644 test/mppa/instr/srld.c create mode 100644 test/mppa/instr/udivd.c create mode 100644 test/mppa/instr/umodd.c create mode 100644 test/mppa/instr/xord.c (limited to 'test/mppa') diff --git a/test/mppa/Makefile b/test/mppa/Makefile index 5b312475..148b16b3 100644 --- a/test/mppa/Makefile +++ b/test/mppa/Makefile @@ -1,70 +1,111 @@ -DIR=general -BINDIR=bin -ASMDIR=asm +K1CC ?= k1-mbr-gcc +CC ?= gcc +CCOMP ?= ccomp +CFLAGS ?= -O2 +SIMU ?= k1-cluster +TIMEOUT ?= 10s + +DIR=instr +SRCDIR=$(DIR) +OUTDIR=$(DIR)/out +BINDIR=$(DIR)/bin +ASMDIR=$(DIR)/asm + +## +# Intended flow : .c -> .gcc.s -> .gcc.bin -> .gcc.out +# -> .ccomp.s -> .ccomp.bin -> .ccomp.out +## + +K1CCPATH=$(shell which $(K1CC)) +CCPATH=$(shell which $(CC)) +CCOMPPATH=$(shell which $(CCOMP)) +SIMUPATH=$(shell which $(SIMU)) + TESTNAMES=$(notdir $(subst .c,,$(wildcard $(DIR)/*.c))) +X86_GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .x86-gcc.out,$(TESTNAMES))) +GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .gcc.out,$(TESTNAMES))) +CCOMP_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .ccomp.out,$(TESTNAMES))) -CCOMP=../../ccomp -#TESTS=$(addprefix $(DIR)/,$(TESTNAMES)) -ELF=$(addprefix $(DIR)/$(BINDIR)/,$(addsuffix .bin,$(TESTNAMES))) -TOK=$(addprefix $(DIR)/$(BINDIR)/,$(addsuffix .tok,$(TESTNAMES))) -ASM=$(addprefix $(DIR)/$(ASMDIR)/,$(addsuffix .s,$(TESTNAMES))) -DEBUG:=$(if $(DEBUG),"-dall",) +OUT=$(X86_GCC_OUT) $(GCC_OUT) $(CCOMP_OUT) +BIN=$(addprefix $(BINDIR)/,$(addsuffix .x86-gcc.bin,$(TESTNAMES)))\ + $(addprefix $(BINDIR)/,$(addsuffix .gcc.bin,$(TESTNAMES)))\ + $(addprefix $(BINDIR)/,$(addsuffix .ccomp.bin,$(TESTNAMES))) -.PHONY: all -all: $(ELF) +## +# Targets +## -nobin: $(ASM) +all: $(BIN) -$(DIR)/$(BINDIR)/%.bin: $(DIR)/$(ASMDIR)/%.s - @mkdir -p $(@D) - ccomp $< -o $@ +.PHONY: +test: $(X86_GCC_OUT) $(GCC_OUT) + @echo "Comparing x86 gcc output to k1 gcc.." + @for test in $(TESTNAMES); do\ + x86out=$(OUTDIR)/$$test.x86-gcc.out;\ + gccout=$(OUTDIR)/$$test.gcc.out;\ + if ! diff $$x86out $$gccout; then\ + >&2 echo "ERROR: $$x86out and $$gccout differ";\ + else\ + echo "GOOD: $$x86out and $$gccout concur";\ + fi;\ + done + +.PHONY: +check: $(GCC_OUT) $(CCOMP_OUT) + @echo "Comparing k1 gcc output to ccomp.." + @for test in $(TESTNAMES); do\ + gccout=$(OUTDIR)/$$test.gcc.out;\ + ccompout=$(OUTDIR)/$$test.ccomp.out;\ + if ! diff $$ccompout $$gccout; then\ + >&2 echo "ERROR: $$ccompout and $$gccout differ";\ + else\ + echo "GOOD: $$ccompout and $$gccout concur";\ + fi;\ + done + +## +# Rules +## .SECONDARY: -$(DIR)/$(ASMDIR)/%.s: $(DIR)/%.c $(CCOMP) +# Generating output + +$(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin + @mkdir -p $(@D) + timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ + +$(OUTDIR)/%.gcc.out: $(BINDIR)/%.gcc.bin $(SIMUPATH) + @mkdir -p $(@D) + timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + +$(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) + @mkdir -p $(@D) + timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + +# Assembly to binary + +$(BINDIR)/%.x86-gcc.bin: $(ASMDIR)/%.x86-gcc.s $(CCPATH) + @mkdir -p $(@D) + $(CC) $(CFLAGS) $< -o $@ + +$(BINDIR)/%.gcc.bin: $(ASMDIR)/%.gcc.s $(K1CCPATH) + @mkdir -p $(@D) + $(K1CC) $(CFLAGS) $< -o $@ + +$(BINDIR)/%.ccomp.bin: $(ASMDIR)/%.ccomp.s $(CCOMPPATH) + @mkdir -p $(@D) + $(CCOMP) $(CFLAGS) $< -o $@ + +# Source to assembly + +$(ASMDIR)/%.x86-gcc.s: $(SRCDIR)/%.c $(CCPATH) + @mkdir -p $(@D) + $(CC) $(CFLAGS) -S $< -o $@ + +$(ASMDIR)/%.gcc.s: $(SRCDIR)/%.c $(K1CCPATH) @mkdir -p $(@D) - ccomp $(DEBUG) -O0 -v -S $< -o $@ + $(K1CC) $(CFLAGS) -S $< -o $@ -$(DIR)/$(BINDIR)/%.tok: $(DIR)/$(BINDIR)/%.bin $(DIR)/output/%.bin.exp +$(ASMDIR)/%.ccomp.s: $(SRCDIR)/%.c $(CCOMPPATH) @mkdir -p $(@D) - @bash check.sh $< $@ - -$(DIR)/output/%.bin.exp: $(DIR)/%.c - @bash generate.sh $< $@ - -.PHONY: FORCE -FORCE: - -.PHONY: check -check: $(TOK) sort mmult - -.PHONY: coverage -coverage: $(ASM) - bash coverage.sh $(DIR)/$(ASMDIR) - - -.PHONY: sort -sort: FORCE - (cd sort && make compc-check) - -.PHONY: mmult -mmult: FORCE - (cd mmult && make compc-check) - -.PHONY: clean -clean: - rm -f $(DIR)/*.alloctrace - rm -f $(DIR)/*.cm - rm -f $(DIR)/*.compcert.c - rm -f $(DIR)/*.i - rm -f $(DIR)/*.light.c - rm -f $(DIR)/*.ltl - rm -f $(DIR)/*.mach - rm -f $(DIR)/*.parsed.c - rm -f $(DIR)/*.rtl.? - rm -f $(DIR)/$(ASMDIR)/*.s - rm -f $(DIR)/$(BINDIR)/*.bin - rm -f $(DIR)/$(BINDIR)/*.tok - rm -f $(DIR)/output/*.out - rm -f $(DIR)/output/*.exp - rm -rf $(DIR)/profile/ - rm -f $(ELF) + $(CCOMP) $(CFLAGS) -S $< -o $@ diff --git a/test/mppa/builtins/clzll.c b/test/mppa/builtins/clzll.c new file mode 100644 index 00000000..13905cba --- /dev/null +++ b/test/mppa/builtins/clzll.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = __builtin_clzll(a); +} +END_TEST() diff --git a/test/mppa/builtins/stsud.c b/test/mppa/builtins/stsud.c new file mode 100644 index 00000000..81fb6e6d --- /dev/null +++ b/test/mppa/builtins/stsud.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = __builtin_k1_stsud(a, b); +} +END_TEST() diff --git a/test/mppa/check.sh b/test/mppa/check.sh deleted file mode 100644 index dd9691be..00000000 --- a/test/mppa/check.sh +++ /dev/null @@ -1,32 +0,0 @@ -# $1: binary file to check -# $2: output check token - -elffile="$1" -token="$2" - -if [ ! -f $elffile ]; then - >&2 echo "ERROR: $elffile not found" - shift; continue -fi - -dir="$(dirname $elffile)" -elf="$(basename $elffile)" - -exp="$dir/../output/$elf.exp" -out="$dir/../output/$elf.out" -if [ ! -f $exp ]; then - >&2 echo "ERROR: $exp not found" - exit -fi - -k1-cluster -- $elffile > $out -echo $? >> $out - -if ! diff $exp $out; then - >&2 echo "ERROR: $exp and $out differ" - exit -fi - -echo "PASSED: $elf" -touch $token -#shift diff --git a/test/mppa/general/.gitignore b/test/mppa/general/.gitignore deleted file mode 100644 index ea1472ec..00000000 --- a/test/mppa/general/.gitignore +++ /dev/null @@ -1 +0,0 @@ -output/ diff --git a/test/mppa/general/addw.c b/test/mppa/general/addw.c deleted file mode 100644 index be8afc67..00000000 --- a/test/mppa/general/addw.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) - c = a+b; -END_TEST() diff --git a/test/mppa/general/andd.c b/test/mppa/general/andd.c deleted file mode 100644 index 4f503764..00000000 --- a/test/mppa/general/andd.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) - return a&b; -END_TEST() diff --git a/test/mppa/general/andw.c b/test/mppa/general/andw.c deleted file mode 100644 index 99de0049..00000000 --- a/test/mppa/general/andw.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) - c = a&b; -END_TEST() diff --git a/test/mppa/general/branch.c b/test/mppa/general/branch.c deleted file mode 100644 index 72e7e20e..00000000 --- a/test/mppa/general/branch.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - if ((a & 0x1) == 1) - c = 0; - else - c = 1; -} -END_TEST() diff --git a/test/mppa/general/branchz.c b/test/mppa/general/branchz.c deleted file mode 100644 index fb86d357..00000000 --- a/test/mppa/general/branchz.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - if (a & 0x1 == 0) - c = 0; - else - c = 1; -} -END_TEST() diff --git a/test/mppa/general/branchzu.c b/test/mppa/general/branchzu.c deleted file mode 100644 index 97adb605..00000000 --- a/test/mppa/general/branchzu.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - b = !(a & 0x01); - if (!b) - c = 0; - else - c = 1; -} -END_TEST() diff --git a/test/mppa/general/call.c b/test/mppa/general/call.c deleted file mode 100644 index 727cef63..00000000 --- a/test/mppa/general/call.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "framework.h" - -int sum(int a, int b){ - return a+b; -} - -int make(int a){ - return a; -} - -BEGIN_TEST(int) -{ - c = sum(make(a), make(b)); -} -END_TEST() -/* RETURN VALUE: 60 */ diff --git a/test/mppa/general/cb.deqz.c b/test/mppa/general/cb.deqz.c deleted file mode 100644 index c56733f0..00000000 --- a/test/mppa/general/cb.deqz.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - if (0 != (a & 0x1LL)) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.dgez.c b/test/mppa/general/cb.dgez.c deleted file mode 100644 index abb6ec57..00000000 --- a/test/mppa/general/cb.dgez.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - if (0 > (a & 0x1LL)) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.dgtz.c b/test/mppa/general/cb.dgtz.c deleted file mode 100644 index d4271845..00000000 --- a/test/mppa/general/cb.dgtz.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - if (0 >= (a & 0x1LL) - 1) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.dlez.c b/test/mppa/general/cb.dlez.c deleted file mode 100644 index 18e67f06..00000000 --- a/test/mppa/general/cb.dlez.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - if (a & 0x1LL > 0) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.dltz.c b/test/mppa/general/cb.dltz.c deleted file mode 100644 index 366aea49..00000000 --- a/test/mppa/general/cb.dltz.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - if ((a & 0x1LL) - 1 >= 0) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.dnez.c b/test/mppa/general/cb.dnez.c deleted file mode 100644 index 81c2cd29..00000000 --- a/test/mppa/general/cb.dnez.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - if (0 == (a & 0x1LL)) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.wgez.c b/test/mppa/general/cb.wgez.c deleted file mode 100644 index 477f4bc6..00000000 --- a/test/mppa/general/cb.wgez.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - if (0 > (a & 0x1) - 1) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.wgtz.c b/test/mppa/general/cb.wgtz.c deleted file mode 100644 index c9ab9a06..00000000 --- a/test/mppa/general/cb.wgtz.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - if (0 >= (a & 0x1)) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.wlez.c b/test/mppa/general/cb.wlez.c deleted file mode 100644 index c3069fda..00000000 --- a/test/mppa/general/cb.wlez.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - if ((a & 0x1) > 0) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/cb.wltz.c b/test/mppa/general/cb.wltz.c deleted file mode 100644 index 6cf5fcf0..00000000 --- a/test/mppa/general/cb.wltz.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - if ((a & 0x1) - 1 >= 0) - c = 1; - else - c = 0; -} -END_TEST() diff --git a/test/mppa/general/clzll.c b/test/mppa/general/clzll.c deleted file mode 100644 index 13905cba..00000000 --- a/test/mppa/general/clzll.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = __builtin_clzll(a); -} -END_TEST() diff --git a/test/mppa/general/compd.eq.c b/test/mppa/general/compd.eq.c deleted file mode 100644 index d19a4d20..00000000 --- a/test/mppa/general/compd.eq.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = ((a & 0x1LL) == (b & 0x1LL)); -} -END_TEST() diff --git a/test/mppa/general/compd.geu.c b/test/mppa/general/compd.geu.c deleted file mode 100644 index edc31183..00000000 --- a/test/mppa/general/compd.geu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = (a >= b); -} -END_TEST() diff --git a/test/mppa/general/compd.gt.c b/test/mppa/general/compd.gt.c deleted file mode 100644 index 24147779..00000000 --- a/test/mppa/general/compd.gt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = (a > b); -} -END_TEST() diff --git a/test/mppa/general/compd.gtu.c b/test/mppa/general/compd.gtu.c deleted file mode 100644 index 5ce82569..00000000 --- a/test/mppa/general/compd.gtu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = (a > b); -} -END_TEST() diff --git a/test/mppa/general/compd.le.c b/test/mppa/general/compd.le.c deleted file mode 100644 index a84aad97..00000000 --- a/test/mppa/general/compd.le.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = (a <= b); -} -END_TEST() diff --git a/test/mppa/general/compd.leu.c b/test/mppa/general/compd.leu.c deleted file mode 100644 index e386bc27..00000000 --- a/test/mppa/general/compd.leu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = (a <= b); -} -END_TEST() diff --git a/test/mppa/general/compd.lt.c b/test/mppa/general/compd.lt.c deleted file mode 100644 index df07a708..00000000 --- a/test/mppa/general/compd.lt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = (a < b); -} -END_TEST() diff --git a/test/mppa/general/compd.ltu.c b/test/mppa/general/compd.ltu.c deleted file mode 100644 index dfaa8921..00000000 --- a/test/mppa/general/compd.ltu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = (a < b); -} -END_TEST() diff --git a/test/mppa/general/compd.ne.c b/test/mppa/general/compd.ne.c deleted file mode 100644 index 19ce0a69..00000000 --- a/test/mppa/general/compd.ne.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = ((a & 0x1ULL) != (b & 0x1ULL)); -} -END_TEST() diff --git a/test/mppa/general/compw.eq.c b/test/mppa/general/compw.eq.c deleted file mode 100644 index dc7a3ab1..00000000 --- a/test/mppa/general/compw.eq.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = ((a & 0x1) == (b & 0x1)); -} -END_TEST() diff --git a/test/mppa/general/compw.geu.c b/test/mppa/general/compw.geu.c deleted file mode 100644 index d72ca56c..00000000 --- a/test/mppa/general/compw.geu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned int) -{ - c = (a >= b); -} -END_TEST() diff --git a/test/mppa/general/compw.gt.c b/test/mppa/general/compw.gt.c deleted file mode 100644 index 9ad02610..00000000 --- a/test/mppa/general/compw.gt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = (a > b); -} -END_TEST() diff --git a/test/mppa/general/compw.gtu.c b/test/mppa/general/compw.gtu.c deleted file mode 100644 index 77f04989..00000000 --- a/test/mppa/general/compw.gtu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned int) -{ - c = (a > b); -} -END_TEST() diff --git a/test/mppa/general/compw.le.c b/test/mppa/general/compw.le.c deleted file mode 100644 index b7a7a432..00000000 --- a/test/mppa/general/compw.le.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = (a <= b); -} -END_TEST() diff --git a/test/mppa/general/compw.leu.c b/test/mppa/general/compw.leu.c deleted file mode 100644 index 4892f06c..00000000 --- a/test/mppa/general/compw.leu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned int) -{ - c = (a <= b); -} -END_TEST() diff --git a/test/mppa/general/compw.lt.c b/test/mppa/general/compw.lt.c deleted file mode 100644 index 2cc151bf..00000000 --- a/test/mppa/general/compw.lt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = (a < b); -} -END_TEST() diff --git a/test/mppa/general/compw.ltu.c b/test/mppa/general/compw.ltu.c deleted file mode 100644 index b524127f..00000000 --- a/test/mppa/general/compw.ltu.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned int) -{ - c = (a < b); -} -END_TEST() diff --git a/test/mppa/general/compw.ne.c b/test/mppa/general/compw.ne.c deleted file mode 100644 index 433b0b86..00000000 --- a/test/mppa/general/compw.ne.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned int) -{ - c = ((a & 0x1U) != (b & 0x1U)); -} -END_TEST() diff --git a/test/mppa/general/div2.c b/test/mppa/general/div2.c deleted file mode 100644 index 01a4b575..00000000 --- a/test/mppa/general/div2.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = (a + b) / 2; -} -END_TEST() diff --git a/test/mppa/general/for.c b/test/mppa/general/for.c deleted file mode 100644 index d6870afb..00000000 --- a/test/mppa/general/for.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - int j; - for (j = 0 ; j < 10 ; j++) - c += a; -} -END_TEST() diff --git a/test/mppa/general/forvar.c b/test/mppa/general/forvar.c deleted file mode 100644 index 57548274..00000000 --- a/test/mppa/general/forvar.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - int j; - for (j = 0 ; j < (b & 0x8) ; j++) - c += a; -} -END_TEST() diff --git a/test/mppa/general/forvarl.c b/test/mppa/general/forvarl.c deleted file mode 100644 index 30717a51..00000000 --- a/test/mppa/general/forvarl.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long int) -{ - int j; - - for (j = 0 ; j < (b & 0x8LL) ; j++) - c += a; -} -END_TEST() diff --git a/test/mppa/general/framework.h b/test/mppa/general/framework.h deleted file mode 100644 index 78f2617e..00000000 --- a/test/mppa/general/framework.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __FRAMEWORK_H__ -#define __FRAMEWORK_H__ - -#include "../lib/prng.c" - -#define BEGIN_TEST(type)\ - int main(void){\ - type a, b, c, i, S;\ - srand(0);\ - S = 0;\ - for (i = 0 ; i < 100 ; i++){\ - c = randlong();\ - a = randlong();\ - b = randlong(); - /* END BEGIN_TEST */ - -/* In between BEGIN_TEST and END_TEST : definition of c */ - -#define END_TEST()\ - S += c;\ - }\ - return S;\ - } - /* END END_TEST */ - -#endif diff --git a/test/mppa/general/lbs.c b/test/mppa/general/lbs.c deleted file mode 100644 index f104d62b..00000000 --- a/test/mppa/general/lbs.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - char s[] = "Tome and Cherry at the playa\n"; - - c = s[(a & (sizeof(s)-1))]; -} -END_TEST() diff --git a/test/mppa/general/lbz.c b/test/mppa/general/lbz.c deleted file mode 100644 index 2deeaebe..00000000 --- a/test/mppa/general/lbz.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - unsigned char s[] = "Tim is sorry at the playa\n"; - - c = s[a & (sizeof(s) - 1)]; -} -END_TEST() diff --git a/test/mppa/general/muld.c b/test/mppa/general/muld.c deleted file mode 100644 index 9a40f389..00000000 --- a/test/mppa/general/muld.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = a*b; -} -END_TEST() diff --git a/test/mppa/general/mulw.c b/test/mppa/general/mulw.c deleted file mode 100644 index bf517ce8..00000000 --- a/test/mppa/general/mulw.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = a * b; -} -END_TEST() diff --git a/test/mppa/general/negd.c b/test/mppa/general/negd.c deleted file mode 100644 index a8e8ff45..00000000 --- a/test/mppa/general/negd.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = -a; -} -END_TEST() diff --git a/test/mppa/general/ord.c b/test/mppa/general/ord.c deleted file mode 100644 index eaedcb28..00000000 --- a/test/mppa/general/ord.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = a | b; -} -END_TEST() diff --git a/test/mppa/general/sbfd.c b/test/mppa/general/sbfd.c deleted file mode 100644 index 912f1fdb..00000000 --- a/test/mppa/general/sbfd.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = a-b; -} -END_TEST() diff --git a/test/mppa/general/sbfw.c b/test/mppa/general/sbfw.c deleted file mode 100644 index feffd497..00000000 --- a/test/mppa/general/sbfw.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = a-b; -} -END_TEST() diff --git a/test/mppa/general/simple.c b/test/mppa/general/simple.c deleted file mode 100644 index 89bba27e..00000000 --- a/test/mppa/general/simple.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = a+b; -} -END_TEST() diff --git a/test/mppa/general/sllw.c b/test/mppa/general/sllw.c deleted file mode 100644 index df55c9e8..00000000 --- a/test/mppa/general/sllw.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(int) -{ - c = a << (b & 0x8); -} -END_TEST() diff --git a/test/mppa/general/srad.c b/test/mppa/general/srad.c deleted file mode 100644 index b4047bc7..00000000 --- a/test/mppa/general/srad.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = a >> (b & 0x8LL); -} -END_TEST() diff --git a/test/mppa/general/srld.c b/test/mppa/general/srld.c deleted file mode 100644 index 71e82b2a..00000000 --- a/test/mppa/general/srld.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = a >> (b & 0x8ULL); -} -END_TEST() diff --git a/test/mppa/general/stsud.c b/test/mppa/general/stsud.c deleted file mode 100644 index 81fb6e6d..00000000 --- a/test/mppa/general/stsud.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = __builtin_k1_stsud(a, b); -} -END_TEST() diff --git a/test/mppa/general/udivd.c b/test/mppa/general/udivd.c deleted file mode 100644 index 52e0d412..00000000 --- a/test/mppa/general/udivd.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = a/b; -} -END_TEST() diff --git a/test/mppa/general/umodd.c b/test/mppa/general/umodd.c deleted file mode 100644 index e7dd506f..00000000 --- a/test/mppa/general/umodd.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(unsigned long long) -{ - c = a%b; -} -END_TEST() diff --git a/test/mppa/general/xord.c b/test/mppa/general/xord.c deleted file mode 100644 index b9d86f06..00000000 --- a/test/mppa/general/xord.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "framework.h" - -BEGIN_TEST(long long) -{ - c = a^b; -} -END_TEST() diff --git a/test/mppa/generate.sh b/test/mppa/generate.sh deleted file mode 100644 index a883b8f5..00000000 --- a/test/mppa/generate.sh +++ /dev/null @@ -1,17 +0,0 @@ -# $1: c file to examine -# $2: write file - -cfile="$1" -writefile="$2" - -if [ ! -f $cfile ]; then - >&2 echo "ERROR: $cfile not found" - shift; continue -fi - -mkdir -p $(dirname $writefile) - -#sed -n "s/^.*\/\*\s*RETURN VALUE:\s*\([0-9]*\)\s*\*\//\1/p" $1 > $2 -tmpbin=/tmp/k1-$(basename $1)-bin -k1-mbr-gcc -O0 $1 -o $tmpbin -(k1-cluster -- $tmpbin; echo $? > $2) diff --git a/test/mppa/instr/.gitignore b/test/mppa/instr/.gitignore new file mode 100644 index 00000000..ea1472ec --- /dev/null +++ b/test/mppa/instr/.gitignore @@ -0,0 +1 @@ +output/ diff --git a/test/mppa/instr/addw.c b/test/mppa/instr/addw.c new file mode 100644 index 00000000..be8afc67 --- /dev/null +++ b/test/mppa/instr/addw.c @@ -0,0 +1,5 @@ +#include "framework.h" + +BEGIN_TEST(int) + c = a+b; +END_TEST() diff --git a/test/mppa/instr/andd.c b/test/mppa/instr/andd.c new file mode 100644 index 00000000..4f503764 --- /dev/null +++ b/test/mppa/instr/andd.c @@ -0,0 +1,5 @@ +#include "framework.h" + +BEGIN_TEST(long long) + return a&b; +END_TEST() diff --git a/test/mppa/instr/andw.c b/test/mppa/instr/andw.c new file mode 100644 index 00000000..99de0049 --- /dev/null +++ b/test/mppa/instr/andw.c @@ -0,0 +1,5 @@ +#include "framework.h" + +BEGIN_TEST(int) + c = a&b; +END_TEST() diff --git a/test/mppa/instr/branch.c b/test/mppa/instr/branch.c new file mode 100644 index 00000000..72e7e20e --- /dev/null +++ b/test/mppa/instr/branch.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + if ((a & 0x1) == 1) + c = 0; + else + c = 1; +} +END_TEST() diff --git a/test/mppa/instr/branchz.c b/test/mppa/instr/branchz.c new file mode 100644 index 00000000..fb86d357 --- /dev/null +++ b/test/mppa/instr/branchz.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + if (a & 0x1 == 0) + c = 0; + else + c = 1; +} +END_TEST() diff --git a/test/mppa/instr/branchzu.c b/test/mppa/instr/branchzu.c new file mode 100644 index 00000000..97adb605 --- /dev/null +++ b/test/mppa/instr/branchzu.c @@ -0,0 +1,11 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + b = !(a & 0x01); + if (!b) + c = 0; + else + c = 1; +} +END_TEST() diff --git a/test/mppa/instr/call.c b/test/mppa/instr/call.c new file mode 100644 index 00000000..727cef63 --- /dev/null +++ b/test/mppa/instr/call.c @@ -0,0 +1,16 @@ +#include "framework.h" + +int sum(int a, int b){ + return a+b; +} + +int make(int a){ + return a; +} + +BEGIN_TEST(int) +{ + c = sum(make(a), make(b)); +} +END_TEST() +/* RETURN VALUE: 60 */ diff --git a/test/mppa/instr/cb.deqz.c b/test/mppa/instr/cb.deqz.c new file mode 100644 index 00000000..c56733f0 --- /dev/null +++ b/test/mppa/instr/cb.deqz.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + if (0 != (a & 0x1LL)) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.dgez.c b/test/mppa/instr/cb.dgez.c new file mode 100644 index 00000000..abb6ec57 --- /dev/null +++ b/test/mppa/instr/cb.dgez.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + if (0 > (a & 0x1LL)) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.dgtz.c b/test/mppa/instr/cb.dgtz.c new file mode 100644 index 00000000..d4271845 --- /dev/null +++ b/test/mppa/instr/cb.dgtz.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + if (0 >= (a & 0x1LL) - 1) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.dlez.c b/test/mppa/instr/cb.dlez.c new file mode 100644 index 00000000..18e67f06 --- /dev/null +++ b/test/mppa/instr/cb.dlez.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + if (a & 0x1LL > 0) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.dltz.c b/test/mppa/instr/cb.dltz.c new file mode 100644 index 00000000..366aea49 --- /dev/null +++ b/test/mppa/instr/cb.dltz.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + if ((a & 0x1LL) - 1 >= 0) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.dnez.c b/test/mppa/instr/cb.dnez.c new file mode 100644 index 00000000..81c2cd29 --- /dev/null +++ b/test/mppa/instr/cb.dnez.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + if (0 == (a & 0x1LL)) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.wgez.c b/test/mppa/instr/cb.wgez.c new file mode 100644 index 00000000..477f4bc6 --- /dev/null +++ b/test/mppa/instr/cb.wgez.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + if (0 > (a & 0x1) - 1) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.wgtz.c b/test/mppa/instr/cb.wgtz.c new file mode 100644 index 00000000..c9ab9a06 --- /dev/null +++ b/test/mppa/instr/cb.wgtz.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + if (0 >= (a & 0x1)) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.wlez.c b/test/mppa/instr/cb.wlez.c new file mode 100644 index 00000000..c3069fda --- /dev/null +++ b/test/mppa/instr/cb.wlez.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + if ((a & 0x1) > 0) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/cb.wltz.c b/test/mppa/instr/cb.wltz.c new file mode 100644 index 00000000..6cf5fcf0 --- /dev/null +++ b/test/mppa/instr/cb.wltz.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + if ((a & 0x1) - 1 >= 0) + c = 1; + else + c = 0; +} +END_TEST() diff --git a/test/mppa/instr/compd.eq.c b/test/mppa/instr/compd.eq.c new file mode 100644 index 00000000..d19a4d20 --- /dev/null +++ b/test/mppa/instr/compd.eq.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = ((a & 0x1LL) == (b & 0x1LL)); +} +END_TEST() diff --git a/test/mppa/instr/compd.geu.c b/test/mppa/instr/compd.geu.c new file mode 100644 index 00000000..edc31183 --- /dev/null +++ b/test/mppa/instr/compd.geu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = (a >= b); +} +END_TEST() diff --git a/test/mppa/instr/compd.gt.c b/test/mppa/instr/compd.gt.c new file mode 100644 index 00000000..24147779 --- /dev/null +++ b/test/mppa/instr/compd.gt.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = (a > b); +} +END_TEST() diff --git a/test/mppa/instr/compd.gtu.c b/test/mppa/instr/compd.gtu.c new file mode 100644 index 00000000..5ce82569 --- /dev/null +++ b/test/mppa/instr/compd.gtu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = (a > b); +} +END_TEST() diff --git a/test/mppa/instr/compd.le.c b/test/mppa/instr/compd.le.c new file mode 100644 index 00000000..a84aad97 --- /dev/null +++ b/test/mppa/instr/compd.le.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = (a <= b); +} +END_TEST() diff --git a/test/mppa/instr/compd.leu.c b/test/mppa/instr/compd.leu.c new file mode 100644 index 00000000..e386bc27 --- /dev/null +++ b/test/mppa/instr/compd.leu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = (a <= b); +} +END_TEST() diff --git a/test/mppa/instr/compd.lt.c b/test/mppa/instr/compd.lt.c new file mode 100644 index 00000000..df07a708 --- /dev/null +++ b/test/mppa/instr/compd.lt.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = (a < b); +} +END_TEST() diff --git a/test/mppa/instr/compd.ltu.c b/test/mppa/instr/compd.ltu.c new file mode 100644 index 00000000..dfaa8921 --- /dev/null +++ b/test/mppa/instr/compd.ltu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = (a < b); +} +END_TEST() diff --git a/test/mppa/instr/compd.ne.c b/test/mppa/instr/compd.ne.c new file mode 100644 index 00000000..19ce0a69 --- /dev/null +++ b/test/mppa/instr/compd.ne.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = ((a & 0x1ULL) != (b & 0x1ULL)); +} +END_TEST() diff --git a/test/mppa/instr/compw.eq.c b/test/mppa/instr/compw.eq.c new file mode 100644 index 00000000..dc7a3ab1 --- /dev/null +++ b/test/mppa/instr/compw.eq.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = ((a & 0x1) == (b & 0x1)); +} +END_TEST() diff --git a/test/mppa/instr/compw.geu.c b/test/mppa/instr/compw.geu.c new file mode 100644 index 00000000..d72ca56c --- /dev/null +++ b/test/mppa/instr/compw.geu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned int) +{ + c = (a >= b); +} +END_TEST() diff --git a/test/mppa/instr/compw.gt.c b/test/mppa/instr/compw.gt.c new file mode 100644 index 00000000..9ad02610 --- /dev/null +++ b/test/mppa/instr/compw.gt.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = (a > b); +} +END_TEST() diff --git a/test/mppa/instr/compw.gtu.c b/test/mppa/instr/compw.gtu.c new file mode 100644 index 00000000..77f04989 --- /dev/null +++ b/test/mppa/instr/compw.gtu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned int) +{ + c = (a > b); +} +END_TEST() diff --git a/test/mppa/instr/compw.le.c b/test/mppa/instr/compw.le.c new file mode 100644 index 00000000..b7a7a432 --- /dev/null +++ b/test/mppa/instr/compw.le.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = (a <= b); +} +END_TEST() diff --git a/test/mppa/instr/compw.leu.c b/test/mppa/instr/compw.leu.c new file mode 100644 index 00000000..4892f06c --- /dev/null +++ b/test/mppa/instr/compw.leu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned int) +{ + c = (a <= b); +} +END_TEST() diff --git a/test/mppa/instr/compw.lt.c b/test/mppa/instr/compw.lt.c new file mode 100644 index 00000000..2cc151bf --- /dev/null +++ b/test/mppa/instr/compw.lt.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = (a < b); +} +END_TEST() diff --git a/test/mppa/instr/compw.ltu.c b/test/mppa/instr/compw.ltu.c new file mode 100644 index 00000000..b524127f --- /dev/null +++ b/test/mppa/instr/compw.ltu.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned int) +{ + c = (a < b); +} +END_TEST() diff --git a/test/mppa/instr/compw.ne.c b/test/mppa/instr/compw.ne.c new file mode 100644 index 00000000..433b0b86 --- /dev/null +++ b/test/mppa/instr/compw.ne.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned int) +{ + c = ((a & 0x1U) != (b & 0x1U)); +} +END_TEST() diff --git a/test/mppa/instr/div2.c b/test/mppa/instr/div2.c new file mode 100644 index 00000000..01a4b575 --- /dev/null +++ b/test/mppa/instr/div2.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = (a + b) / 2; +} +END_TEST() diff --git a/test/mppa/instr/for.c b/test/mppa/instr/for.c new file mode 100644 index 00000000..d6870afb --- /dev/null +++ b/test/mppa/instr/for.c @@ -0,0 +1,9 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + int j; + for (j = 0 ; j < 10 ; j++) + c += a; +} +END_TEST() diff --git a/test/mppa/instr/forvar.c b/test/mppa/instr/forvar.c new file mode 100644 index 00000000..57548274 --- /dev/null +++ b/test/mppa/instr/forvar.c @@ -0,0 +1,9 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + int j; + for (j = 0 ; j < (b & 0x8) ; j++) + c += a; +} +END_TEST() diff --git a/test/mppa/instr/forvarl.c b/test/mppa/instr/forvarl.c new file mode 100644 index 00000000..30717a51 --- /dev/null +++ b/test/mppa/instr/forvarl.c @@ -0,0 +1,10 @@ +#include "framework.h" + +BEGIN_TEST(long long int) +{ + int j; + + for (j = 0 ; j < (b & 0x8LL) ; j++) + c += a; +} +END_TEST() diff --git a/test/mppa/instr/framework.h b/test/mppa/instr/framework.h new file mode 100644 index 00000000..f6077c46 --- /dev/null +++ b/test/mppa/instr/framework.h @@ -0,0 +1,26 @@ +#ifndef __FRAMEWORK_H__ +#define __FRAMEWORK_H__ + +#include "../prng/prng.c" + +#define BEGIN_TEST(type)\ + int main(void){\ + type a, b, c, i, S;\ + srand(0);\ + S = 0;\ + for (i = 0 ; i < 100 ; i++){\ + c = randlong();\ + a = randlong();\ + b = randlong(); + /* END BEGIN_TEST */ + +/* In between BEGIN_TEST and END_TEST : definition of c */ + +#define END_TEST()\ + S += c;\ + }\ + return S;\ + } + /* END END_TEST */ + +#endif diff --git a/test/mppa/instr/lbs.c b/test/mppa/instr/lbs.c new file mode 100644 index 00000000..f104d62b --- /dev/null +++ b/test/mppa/instr/lbs.c @@ -0,0 +1,9 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + char s[] = "Tome and Cherry at the playa\n"; + + c = s[(a & (sizeof(s)-1))]; +} +END_TEST() diff --git a/test/mppa/instr/lbz.c b/test/mppa/instr/lbz.c new file mode 100644 index 00000000..2deeaebe --- /dev/null +++ b/test/mppa/instr/lbz.c @@ -0,0 +1,9 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + unsigned char s[] = "Tim is sorry at the playa\n"; + + c = s[a & (sizeof(s) - 1)]; +} +END_TEST() diff --git a/test/mppa/instr/muld.c b/test/mppa/instr/muld.c new file mode 100644 index 00000000..9a40f389 --- /dev/null +++ b/test/mppa/instr/muld.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = a*b; +} +END_TEST() diff --git a/test/mppa/instr/mulw.c b/test/mppa/instr/mulw.c new file mode 100644 index 00000000..bf517ce8 --- /dev/null +++ b/test/mppa/instr/mulw.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = a * b; +} +END_TEST() diff --git a/test/mppa/instr/negd.c b/test/mppa/instr/negd.c new file mode 100644 index 00000000..a8e8ff45 --- /dev/null +++ b/test/mppa/instr/negd.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = -a; +} +END_TEST() diff --git a/test/mppa/instr/ord.c b/test/mppa/instr/ord.c new file mode 100644 index 00000000..eaedcb28 --- /dev/null +++ b/test/mppa/instr/ord.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = a | b; +} +END_TEST() diff --git a/test/mppa/instr/sbfd.c b/test/mppa/instr/sbfd.c new file mode 100644 index 00000000..912f1fdb --- /dev/null +++ b/test/mppa/instr/sbfd.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = a-b; +} +END_TEST() diff --git a/test/mppa/instr/sbfw.c b/test/mppa/instr/sbfw.c new file mode 100644 index 00000000..feffd497 --- /dev/null +++ b/test/mppa/instr/sbfw.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = a-b; +} +END_TEST() diff --git a/test/mppa/instr/simple.c b/test/mppa/instr/simple.c new file mode 100644 index 00000000..89bba27e --- /dev/null +++ b/test/mppa/instr/simple.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = a+b; +} +END_TEST() diff --git a/test/mppa/instr/sllw.c b/test/mppa/instr/sllw.c new file mode 100644 index 00000000..df55c9e8 --- /dev/null +++ b/test/mppa/instr/sllw.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(int) +{ + c = a << (b & 0x8); +} +END_TEST() diff --git a/test/mppa/instr/srad.c b/test/mppa/instr/srad.c new file mode 100644 index 00000000..b4047bc7 --- /dev/null +++ b/test/mppa/instr/srad.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = a >> (b & 0x8LL); +} +END_TEST() diff --git a/test/mppa/instr/srld.c b/test/mppa/instr/srld.c new file mode 100644 index 00000000..71e82b2a --- /dev/null +++ b/test/mppa/instr/srld.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = a >> (b & 0x8ULL); +} +END_TEST() diff --git a/test/mppa/instr/udivd.c b/test/mppa/instr/udivd.c new file mode 100644 index 00000000..52e0d412 --- /dev/null +++ b/test/mppa/instr/udivd.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = a/b; +} +END_TEST() diff --git a/test/mppa/instr/umodd.c b/test/mppa/instr/umodd.c new file mode 100644 index 00000000..e7dd506f --- /dev/null +++ b/test/mppa/instr/umodd.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(unsigned long long) +{ + c = a%b; +} +END_TEST() diff --git a/test/mppa/instr/xord.c b/test/mppa/instr/xord.c new file mode 100644 index 00000000..b9d86f06 --- /dev/null +++ b/test/mppa/instr/xord.c @@ -0,0 +1,7 @@ +#include "framework.h" + +BEGIN_TEST(long long) +{ + c = a^b; +} +END_TEST() -- cgit From 0c28f0900dae418d5beed6a82f7c72f88de83567 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Tue, 13 Nov 2018 13:44:55 +0100 Subject: Lancement des tests à partir d'un même script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/mppa/Makefile | 111 --------------------------------------------- test/mppa/check.sh | 6 +++ test/mppa/do_test.sh | 33 ++++++++++++++ test/mppa/instr/Makefile | 111 +++++++++++++++++++++++++++++++++++++++++++++ test/mppa/mmult/.gitignore | 6 +-- test/mppa/prng/.gitignore | 5 +- test/mppa/sort/.gitignore | 18 ++++---- test/mppa/test.sh | 6 +++ 8 files changed, 171 insertions(+), 125 deletions(-) delete mode 100644 test/mppa/Makefile create mode 100755 test/mppa/check.sh create mode 100644 test/mppa/do_test.sh create mode 100644 test/mppa/instr/Makefile create mode 100755 test/mppa/test.sh (limited to 'test/mppa') diff --git a/test/mppa/Makefile b/test/mppa/Makefile deleted file mode 100644 index 148b16b3..00000000 --- a/test/mppa/Makefile +++ /dev/null @@ -1,111 +0,0 @@ -K1CC ?= k1-mbr-gcc -CC ?= gcc -CCOMP ?= ccomp -CFLAGS ?= -O2 -SIMU ?= k1-cluster -TIMEOUT ?= 10s - -DIR=instr -SRCDIR=$(DIR) -OUTDIR=$(DIR)/out -BINDIR=$(DIR)/bin -ASMDIR=$(DIR)/asm - -## -# Intended flow : .c -> .gcc.s -> .gcc.bin -> .gcc.out -# -> .ccomp.s -> .ccomp.bin -> .ccomp.out -## - -K1CCPATH=$(shell which $(K1CC)) -CCPATH=$(shell which $(CC)) -CCOMPPATH=$(shell which $(CCOMP)) -SIMUPATH=$(shell which $(SIMU)) - -TESTNAMES=$(notdir $(subst .c,,$(wildcard $(DIR)/*.c))) -X86_GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .x86-gcc.out,$(TESTNAMES))) -GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .gcc.out,$(TESTNAMES))) -CCOMP_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .ccomp.out,$(TESTNAMES))) - -OUT=$(X86_GCC_OUT) $(GCC_OUT) $(CCOMP_OUT) -BIN=$(addprefix $(BINDIR)/,$(addsuffix .x86-gcc.bin,$(TESTNAMES)))\ - $(addprefix $(BINDIR)/,$(addsuffix .gcc.bin,$(TESTNAMES)))\ - $(addprefix $(BINDIR)/,$(addsuffix .ccomp.bin,$(TESTNAMES))) - -## -# Targets -## - -all: $(BIN) - -.PHONY: -test: $(X86_GCC_OUT) $(GCC_OUT) - @echo "Comparing x86 gcc output to k1 gcc.." - @for test in $(TESTNAMES); do\ - x86out=$(OUTDIR)/$$test.x86-gcc.out;\ - gccout=$(OUTDIR)/$$test.gcc.out;\ - if ! diff $$x86out $$gccout; then\ - >&2 echo "ERROR: $$x86out and $$gccout differ";\ - else\ - echo "GOOD: $$x86out and $$gccout concur";\ - fi;\ - done - -.PHONY: -check: $(GCC_OUT) $(CCOMP_OUT) - @echo "Comparing k1 gcc output to ccomp.." - @for test in $(TESTNAMES); do\ - gccout=$(OUTDIR)/$$test.gcc.out;\ - ccompout=$(OUTDIR)/$$test.ccomp.out;\ - if ! diff $$ccompout $$gccout; then\ - >&2 echo "ERROR: $$ccompout and $$gccout differ";\ - else\ - echo "GOOD: $$ccompout and $$gccout concur";\ - fi;\ - done - -## -# Rules -## - -.SECONDARY: -# Generating output - -$(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin - @mkdir -p $(@D) - timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ - -$(OUTDIR)/%.gcc.out: $(BINDIR)/%.gcc.bin $(SIMUPATH) - @mkdir -p $(@D) - timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ - -$(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) - @mkdir -p $(@D) - timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ - -# Assembly to binary - -$(BINDIR)/%.x86-gcc.bin: $(ASMDIR)/%.x86-gcc.s $(CCPATH) - @mkdir -p $(@D) - $(CC) $(CFLAGS) $< -o $@ - -$(BINDIR)/%.gcc.bin: $(ASMDIR)/%.gcc.s $(K1CCPATH) - @mkdir -p $(@D) - $(K1CC) $(CFLAGS) $< -o $@ - -$(BINDIR)/%.ccomp.bin: $(ASMDIR)/%.ccomp.s $(CCOMPPATH) - @mkdir -p $(@D) - $(CCOMP) $(CFLAGS) $< -o $@ - -# Source to assembly - -$(ASMDIR)/%.x86-gcc.s: $(SRCDIR)/%.c $(CCPATH) - @mkdir -p $(@D) - $(CC) $(CFLAGS) -S $< -o $@ - -$(ASMDIR)/%.gcc.s: $(SRCDIR)/%.c $(K1CCPATH) - @mkdir -p $(@D) - $(K1CC) $(CFLAGS) -S $< -o $@ - -$(ASMDIR)/%.ccomp.s: $(SRCDIR)/%.c $(CCOMPPATH) - @mkdir -p $(@D) - $(CCOMP) $(CFLAGS) -S $< -o $@ diff --git a/test/mppa/check.sh b/test/mppa/check.sh new file mode 100755 index 00000000..8db50f1b --- /dev/null +++ b/test/mppa/check.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Tests the execution of the binaries produced by CompCert + +source do_test.sh + +do_test check diff --git a/test/mppa/do_test.sh b/test/mppa/do_test.sh new file mode 100644 index 00000000..ee7cbcf7 --- /dev/null +++ b/test/mppa/do_test.sh @@ -0,0 +1,33 @@ +do_test () { +cat << EOF + +## +# PRNG tests +## +EOF +(cd prng && make $1 -j8) + +cat << EOF + +## +# Matrix Multiplication tests +## +EOF +(cd mmult && make $1 -j8) + +cat << EOF + +## +# List sort tests +## +EOF +(cd sort && make $1 -j8) + +cat << EOF + +## +# Instruction unit tests +## +EOF +(cd instr && make $1 -j8) +} diff --git a/test/mppa/instr/Makefile b/test/mppa/instr/Makefile new file mode 100644 index 00000000..4744ba23 --- /dev/null +++ b/test/mppa/instr/Makefile @@ -0,0 +1,111 @@ +K1CC ?= k1-mbr-gcc +CC ?= gcc +CCOMP ?= ccomp +CFLAGS ?= -O2 +SIMU ?= k1-cluster +TIMEOUT ?= 10s + +DIR=./ +SRCDIR=$(DIR) +OUTDIR=$(DIR)/out +BINDIR=$(DIR)/bin +ASMDIR=$(DIR)/asm + +## +# Intended flow : .c -> .gcc.s -> .gcc.bin -> .gcc.out +# -> .ccomp.s -> .ccomp.bin -> .ccomp.out +## + +K1CCPATH=$(shell which $(K1CC)) +CCPATH=$(shell which $(CC)) +CCOMPPATH=$(shell which $(CCOMP)) +SIMUPATH=$(shell which $(SIMU)) + +TESTNAMES=$(notdir $(subst .c,,$(wildcard $(DIR)/*.c))) +X86_GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .x86-gcc.out,$(TESTNAMES))) +GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .gcc.out,$(TESTNAMES))) +CCOMP_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .ccomp.out,$(TESTNAMES))) + +OUT=$(X86_GCC_OUT) $(GCC_OUT) $(CCOMP_OUT) +BIN=$(addprefix $(BINDIR)/,$(addsuffix .x86-gcc.bin,$(TESTNAMES)))\ + $(addprefix $(BINDIR)/,$(addsuffix .gcc.bin,$(TESTNAMES)))\ + $(addprefix $(BINDIR)/,$(addsuffix .ccomp.bin,$(TESTNAMES))) + +## +# Targets +## + +all: $(BIN) + +.PHONY: +test: $(X86_GCC_OUT) $(GCC_OUT) + @echo "Comparing x86 gcc output to k1 gcc.." + @for test in $(TESTNAMES); do\ + x86out=$(OUTDIR)/$$test.x86-gcc.out;\ + gccout=$(OUTDIR)/$$test.gcc.out;\ + if ! diff $$x86out $$gccout; then\ + >&2 echo "ERROR: $$x86out and $$gccout differ";\ + else\ + echo "GOOD: $$x86out and $$gccout concur";\ + fi;\ + done + +.PHONY: +check: $(GCC_OUT) $(CCOMP_OUT) + @echo "Comparing k1 gcc output to ccomp.." + @for test in $(TESTNAMES); do\ + gccout=$(OUTDIR)/$$test.gcc.out;\ + ccompout=$(OUTDIR)/$$test.ccomp.out;\ + if ! diff $$ccompout $$gccout; then\ + >&2 echo "ERROR: $$ccompout and $$gccout differ";\ + else\ + echo "GOOD: $$ccompout and $$gccout concur";\ + fi;\ + done + +## +# Rules +## + +.SECONDARY: +# Generating output + +$(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin + @mkdir -p $(@D) + timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ + +$(OUTDIR)/%.gcc.out: $(BINDIR)/%.gcc.bin $(SIMUPATH) + @mkdir -p $(@D) + timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + +$(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) + @mkdir -p $(@D) + timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + +# Assembly to binary + +$(BINDIR)/%.x86-gcc.bin: $(ASMDIR)/%.x86-gcc.s $(CCPATH) + @mkdir -p $(@D) + $(CC) $(CFLAGS) $< -o $@ + +$(BINDIR)/%.gcc.bin: $(ASMDIR)/%.gcc.s $(K1CCPATH) + @mkdir -p $(@D) + $(K1CC) $(CFLAGS) $< -o $@ + +$(BINDIR)/%.ccomp.bin: $(ASMDIR)/%.ccomp.s $(CCOMPPATH) + @mkdir -p $(@D) + $(CCOMP) $(CFLAGS) $< -o $@ + +# Source to assembly + +$(ASMDIR)/%.x86-gcc.s: $(SRCDIR)/%.c $(CCPATH) + @mkdir -p $(@D) + $(CC) $(CFLAGS) -S $< -o $@ + +$(ASMDIR)/%.gcc.s: $(SRCDIR)/%.c $(K1CCPATH) + @mkdir -p $(@D) + $(K1CC) $(CFLAGS) -S $< -o $@ + +$(ASMDIR)/%.ccomp.s: $(SRCDIR)/%.c $(CCOMPPATH) + @mkdir -p $(@D) + $(CCOMP) $(CFLAGS) -S $< -o $@ diff --git a/test/mppa/mmult/.gitignore b/test/mppa/mmult/.gitignore index 5883d367..4d68861b 100644 --- a/test/mppa/mmult/.gitignore +++ b/test/mppa/mmult/.gitignore @@ -1,3 +1,3 @@ -mmult-test-k1c -mmult-test-x86 -test-ccomp +mmult-test-ccomp-k1c +mmult-test-gcc-k1c +mmult-test-gcc-x86 diff --git a/test/mppa/prng/.gitignore b/test/mppa/prng/.gitignore index 1879eaee..0792a78b 100644 --- a/test/mppa/prng/.gitignore +++ b/test/mppa/prng/.gitignore @@ -1,2 +1,3 @@ -prng-test-k1c -prng-test-x86 +prng-test-ccomp-k1c +prng-test-gcc-x86 +prng-test-gcc-k1c diff --git a/test/mppa/sort/.gitignore b/test/mppa/sort/.gitignore index c8f4f4e5..a8d6921c 100644 --- a/test/mppa/sort/.gitignore +++ b/test/mppa/sort/.gitignore @@ -1,9 +1,9 @@ -insertion-test-k1c -insertion-test-x86 -merge-test-k1c -selection-test-k1c -test-k1c -merge-test-x86 -selection-test-x86 -test-x86 -test-ccomp +main-test-ccomp-k1c +main-test-gcc-k1c +main-test-gcc-x86 +merge-test-gcc-k1c +merge-test-gcc-x86 +selection-test-gcc-k1c +selection-test-gcc-x86 +insertion-test-gcc-k1c +insertion-test-gcc-x86 diff --git a/test/mppa/test.sh b/test/mppa/test.sh new file mode 100755 index 00000000..dfeb153a --- /dev/null +++ b/test/mppa/test.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Tests the validity of the tests + +source do_test.sh + +do_test test -- cgit From 6e1ff91536ce40e16e0f6af7f2d032ffda2f752c Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Tue, 13 Nov 2018 18:15:42 +0100 Subject: Changed mmult to avoid recomputing + fixed potential source of bug in instr --- test/mppa/instr/Makefile | 6 +++--- test/mppa/mmult/.gitignore | 1 + test/mppa/mmult/Makefile | 53 ++++++++++++++++++++++++++++++---------------- 3 files changed, 39 insertions(+), 21 deletions(-) (limited to 'test/mppa') diff --git a/test/mppa/instr/Makefile b/test/mppa/instr/Makefile index 4744ba23..2be69db2 100644 --- a/test/mppa/instr/Makefile +++ b/test/mppa/instr/Makefile @@ -72,15 +72,15 @@ check: $(GCC_OUT) $(CCOMP_OUT) $(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin @mkdir -p $(@D) - timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ $(OUTDIR)/%.gcc.out: $(BINDIR)/%.gcc.bin $(SIMUPATH) @mkdir -p $(@D) - timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ $(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) @mkdir -p $(@D) - timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ # Assembly to binary diff --git a/test/mppa/mmult/.gitignore b/test/mppa/mmult/.gitignore index 4d68861b..c9cd4c65 100644 --- a/test/mppa/mmult/.gitignore +++ b/test/mppa/mmult/.gitignore @@ -1,3 +1,4 @@ mmult-test-ccomp-k1c mmult-test-gcc-k1c mmult-test-gcc-x86 +.zero diff --git a/test/mppa/mmult/Makefile b/test/mppa/mmult/Makefile index 2e077f5e..263ed276 100644 --- a/test/mppa/mmult/Makefile +++ b/test/mppa/mmult/Makefile @@ -2,49 +2,66 @@ K1CC ?= k1-mbr-gcc CC ?= gcc CCOMP ?= ccomp CFLAGS ?= -O2 +SIMU ?= k1-cluster +TIMEOUT ?= 10s + +K1CCPATH=$(shell which $(K1CC)) +CCPATH=$(shell which $(CC)) +CCOMPPATH=$(shell which $(CCOMP)) +SIMUPATH=$(shell which $(SIMU)) PRNG=../prng/prng.c -ALL= mmult-test-gcc-x86 mmult-test-gcc-k1c mmult-test-ccomp-k1c\ +ALL= mmult-test-gcc-x86 mmult-test-gcc-k1c mmult-test-ccomp-k1c +CCOMP_OUT= mmult-test-ccomp-k1c.out +GCC_OUT= mmult-test-gcc-k1c.out +X86_GCC_OUT= mmult-test-gcc-x86.out +STUB_OUT=.zero all: $(ALL) -mmult-test-gcc-x86: mmult.c $(PRNG) +mmult-test-gcc-x86: mmult.c $(PRNG) $(CCPATH) $(CC) $(CFLAGS) $^ -o $@ -mmult-test-gcc-k1c: mmult.c $(PRNG) +mmult-test-gcc-k1c: mmult.c $(PRNG) $(K1CCPATH) $(K1CC) $(CFLAGS) $^ -o $@ -mmult-test-ccomp-k1c: mmult.c $(PRNG) +mmult-test-ccomp-k1c: mmult.c $(PRNG) $(CCOMPPATH) $(CCOMP) $(CFLAGS) $^ -o $@ +.SECONDARY: +%k1c.out: %k1c $(SIMUPATH) + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + +%x86.out: %x86 + ret=0; timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ + +.zero: + @echo "0" > $@ + .PHONY: test: test-x86 test-k1c .PHONY: -test-x86: mmult-test-gcc-x86 - @if ! ./$<; then\ +test-x86: $(X86_GCC_OUT) $(STUB_OUT) + @if ! diff $< $(STUB_OUT); then\ >&2 echo "ERROR x86: $< failed";\ else\ - echo "x86: Test $< succeeded";\ + echo "GOOD x86: $< succeeded";\ fi .PHONY: -test-k1c: mmult-test-gcc-k1c - @if ! k1-cluster -- ./$<; then\ +test-k1c: $(GCC_OUT) $(STUB_OUT) + @if ! diff $< $(STUB_OUT); then\ >&2 echo "ERROR k1c: $< failed";\ else\ - echo "k1c: Test $< succeeded";\ + echo "GOOD k1c: $< succeeded";\ fi .PHONY: -check: mmult-test-ccomp-k1c - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR k1c: mmult $< failed";\ +check: $(CCOMP_OUT) $(STUB_OUT) + @if ! diff $< $(STUB_OUT); then\ + >&2 echo "ERROR k1c: $< failed";\ else\ - echo "k1c: Test mmult $< succeeded";\ + echo "GOOD k1c: $< succeeded";\ fi - -.PHONY: -clean: - rm -f $(ALL) -- cgit From 154230f3d9cad4f8de59e8fcaa9d0fe4ae151a98 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Wed, 14 Nov 2018 11:18:45 +0100 Subject: Updated Sort Makefile + fixed compilation command bug --- test/mppa/.gitignore | 19 ++++++++++ test/mppa/instr/Makefile | 6 ++-- test/mppa/mmult/Makefile | 10 +++--- test/mppa/prng/Makefile | 58 ++++++++++++++++++++---------- test/mppa/sort/Makefile | 92 ++++++++++++++++++++++++++++++------------------ 5 files changed, 123 insertions(+), 62 deletions(-) (limited to 'test/mppa') diff --git a/test/mppa/.gitignore b/test/mppa/.gitignore index f03fc12c..e8ebeff8 100644 --- a/test/mppa/.gitignore +++ b/test/mppa/.gitignore @@ -1 +1,20 @@ check +asm_coverage +instr/Makefile +mmult/Makefile +prng/Makefile +sort/Makefile +prng/.zero +sort/.zero +sort/insertion-ccomp-k1c +sort/insertion-gcc-k1c +sort/insertion-gcc-x86 +sort/main-ccomp-k1c +sort/main-gcc-k1c +sort/main-gcc-x86 +sort/merge-ccomp-k1c +sort/merge-gcc-k1c +sort/merge-gcc-x86 +sort/selection-ccomp-k1c +sort/selection-gcc-k1c +sort/selection-gcc-x86 diff --git a/test/mppa/instr/Makefile b/test/mppa/instr/Makefile index 2be69db2..89ff9a73 100644 --- a/test/mppa/instr/Makefile +++ b/test/mppa/instr/Makefile @@ -72,15 +72,15 @@ check: $(GCC_OUT) $(CCOMP_OUT) $(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin @mkdir -p $(@D) - ret=0; timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) ./$< > $@ || { ret=$$?; }; echo $$ret >> $@ $(OUTDIR)/%.gcc.out: $(BINDIR)/%.gcc.bin $(SIMUPATH) @mkdir -p $(@D) - ret=0; timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@ $(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) @mkdir -p $(@D) - ret=0; timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@ # Assembly to binary diff --git a/test/mppa/mmult/Makefile b/test/mppa/mmult/Makefile index 263ed276..cf82e359 100644 --- a/test/mppa/mmult/Makefile +++ b/test/mppa/mmult/Makefile @@ -21,20 +21,20 @@ STUB_OUT=.zero all: $(ALL) mmult-test-gcc-x86: mmult.c $(PRNG) $(CCPATH) - $(CC) $(CFLAGS) $^ -o $@ + $(CC) $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@ mmult-test-gcc-k1c: mmult.c $(PRNG) $(K1CCPATH) - $(K1CC) $(CFLAGS) $^ -o $@ + $(K1CC) $(CFLAGS) $(filter-out $(K1CCPATH),$^) -o $@ mmult-test-ccomp-k1c: mmult.c $(PRNG) $(CCOMPPATH) - $(CCOMP) $(CFLAGS) $^ -o $@ + $(CCOMP) $(CFLAGS) $(filter-out $(CCOMPPATH),$^) -o $@ .SECONDARY: %k1c.out: %k1c $(SIMUPATH) - ret=0; timeout $(TIMEOUT) $(SIMU) -- $< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@ %x86.out: %x86 - ret=0; timeout $(TIMEOUT) ./$< || { ret=$$?; } > $@; echo $$ret >> $@ + ret=0; timeout $(TIMEOUT) ./$< > $@ || { ret=$$?; }; echo $$ret >> $@ .zero: @echo "0" > $@ diff --git a/test/mppa/prng/Makefile b/test/mppa/prng/Makefile index 481a3fca..5580cd8e 100644 --- a/test/mppa/prng/Makefile +++ b/test/mppa/prng/Makefile @@ -2,46 +2,66 @@ K1CC ?= k1-mbr-gcc CC ?= gcc CCOMP ?= ccomp CFLAGS ?= -O2 +SIMU ?= k1-cluster +TIMEOUT ?= 10s -all: prng-test-gcc-x86 prng-test-gcc-k1c prng-test-ccomp-k1c +K1CCPATH=$(shell which $(K1CC)) +CCPATH=$(shell which $(CC)) +CCOMPPATH=$(shell which $(CCOMP)) +SIMUPATH=$(shell which $(SIMU)) -prng-test-gcc-x86: prng.c +ALL= prng-test-gcc-x86 prng-test-gcc-k1c prng-test-ccomp-k1c +CCOMP_OUT= prng-test-ccomp-k1c.out +GCC_OUT= prng-test-gcc-k1c.out +X86_GCC_OUT= prng-test-gcc-x86.out +STUB_OUT=.zero + +all: $(ALL) + +prng-test-gcc-x86: prng.c $(CCPATH) $(CC) -D__UNIT_TEST_PRNG__ $(CFLAGS) $< -o $@ -prng-test-gcc-k1c: prng.c +prng-test-gcc-k1c: prng.c $(K1CCPATH) $(K1CC) -D__UNIT_TEST_PRNG__ $(CFLAGS) $< -o $@ -prng-test-ccomp-k1c: prng.c +prng-test-ccomp-k1c: prng.c $(CCOMPPATH) $(CCOMP) -D__UNIT_TEST_PRNG__ $(CFLAGS) $< -o $@ +.SECONDARY: +%k1c.out: %k1c $(SIMUPATH) + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@ + +%x86.out: %x86 + ret=0; timeout $(TIMEOUT) ./$< > $@ || { ret=$$?; }; echo $$ret >> $@ + +.zero: + @echo "0" > $@ + .PHONY: test: test-x86 test-k1c .PHONY: -test-x86: prng-test-gcc-x86 - @if ! ./$<; then\ - >&2 echo "ERROR: $< failed";\ - exit;\ +test-x86: $(X86_GCC_OUT) $(STUB_OUT) + @if ! diff $< $(STUB_OUT); then\ + >&2 echo "ERROR x86: $< failed";\ else\ - echo "$< Succeeded";\ + echo "GOOD x86: $< succeeded";\ fi .PHONY: -test-k1c: prng-test-gcc-k1c - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR: $< failed";\ - exit;\ +test-k1c: $(GCC_OUT) $(STUB_OUT) + @if ! diff $< $(STUB_OUT); then\ + >&2 echo "ERROR k1c: $< failed";\ else\ - echo "$< Succeeded";\ + echo "GOOD k1c: $< succeeded";\ fi .PHONY: -check: prng-test-ccomp-k1c - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR: $< failed";\ - exit;\ +check: $(CCOMP_OUT) $(STUB_OUT) + @if ! diff $< $(STUB_OUT); then\ + >&2 echo "ERROR k1c: $< failed";\ else\ - echo "$< Succeeded";\ + echo "GOOD k1c: $< succeeded";\ fi .PHONY: diff --git a/test/mppa/sort/Makefile b/test/mppa/sort/Makefile index c0c9347d..ebbad5b5 100644 --- a/test/mppa/sort/Makefile +++ b/test/mppa/sort/Makefile @@ -2,54 +2,78 @@ K1CC ?= k1-mbr-gcc CC ?= gcc CCOMP ?= ccomp CFLAGS ?= -O2 +SIMU ?= k1-cluster +TIMEOUT ?= 10s + +K1CCPATH=$(shell which $(K1CC)) +CCPATH=$(shell which $(CC)) +CCOMPPATH=$(shell which $(CCOMP)) +SIMUPATH=$(shell which $(SIMU)) PRNG=../prng/prng.c CFILES=insertion.c merge.c selection.c main.c -ALL= insertion-test-gcc-x86 insertion-test-gcc-k1c\ - selection-test-gcc-x86 selection-test-gcc-k1c\ - merge-test-gcc-x86 merge-test-gcc-k1c\ - main-test-gcc-x86 main-test-gcc-k1c\ - main-test-ccomp-k1c +ALL= insertion-gcc-x86 insertion-gcc-k1c insertion-ccomp-k1c\ + selection-gcc-x86 selection-gcc-k1c selection-ccomp-k1c\ + merge-gcc-x86 merge-gcc-k1c merge-ccomp-k1c\ + main-gcc-x86 main-gcc-k1c main-ccomp-k1c + +CCOMP_OUT= insertion-ccomp-k1c.out selection-ccomp-k1c.out merge-ccomp-k1c.out\ + main-ccomp-k1c.out +GCC_OUT= insertion-gcc-k1c.out selection-gcc-k1c.out merge-gcc-k1c.out\ + main-gcc-k1c.out +X86_GCC_OUT= insertion-gcc-x86.out selection-gcc-x86.out merge-gcc-x86.out\ + main-gcc-x86.out +STUB_OUT= .zero all: $(ALL) -main-test-gcc-x86: $(CFILES) $(PRNG) - $(CC) $(CFLAGS) $^ -o $@ +main-gcc-x86: $(CFILES) $(PRNG) $(CCPATH) + $(CC) $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@ + +%-gcc-x86: %.c $(PRNG) $(CCPATH) + $(CC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@ -%-test-gcc-x86: %.c $(PRNG) - $(CC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $^ -o $@ +main-gcc-k1c: $(CFILES) $(PRNG) $(CCPATH) + $(K1CC) $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@ -main-test-gcc-k1c: $(CFILES) $(PRNG) - $(K1CC) $(CFLAGS) $^ -o $@ +%-gcc-k1c: %.c $(PRNG) $(K1CCPATH) + $(K1CC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $(filter-out $(K1CCPATH),$^) -o $@ -%-test-gcc-k1c: %.c $(PRNG) - $(K1CC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $^ -o $@ +main-ccomp-k1c: $(CFILES) $(PRNG) $(CCOMPPATH) + $(CCOMP) $(CFLAGS) $(filter-out $(CCOMPPATH),$^) -o $@ -main-test-ccomp-k1c: $(CFILES) $(PRNG) - $(CCOMP) $(CFLAGS) $^ -o $@ +%-ccomp-k1c: %.c $(PRNG) $(CCOMPPATH) + $(CCOMP) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $(filter-out $(CCOMPPATH),$^) -o $@ -%-test-ccomp-k1c: %.c $(PRNG) - $(CCOMP) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $^ -o $@ +.SECONDARY: +%x86.out: %x86 + ret=0; timeout $(TIMEOUT) ./$< > $@ || { ret=$$?; }; echo $$ret >> $@ + +%k1c.out: %k1c $(SIMUPATH) + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@ + +.zero: + @echo "0" > $@ .PHONY: -test-x86: insertion-test-gcc-x86 selection-test-gcc-x86 merge-test-gcc-x86 main-test-gcc-x86 - @for test in $^; do\ - if ! ./$$test; then\ +test-x86: $(STUB_OUT) $(X86_GCC_OUT) + @for test in $(wordlist 2,100,$^); do\ + if ! diff $$test $(STUB_OUT); then\ >&2 echo "ERROR x86: $$test failed";\ else\ - echo "x86: Test $$test Succeeded";\ + echo "GOOD x86: $$test succeeded";\ fi;\ done .PHONY: -test-k1c: insertion-test-gcc-k1c selection-test-gcc-k1c merge-test-gcc-k1c main-test-gcc-k1c - @for test in $^; do\ - if ! k1-cluster -- ./$$test; then\ +test-k1c: $(STUB_OUT) $(GCC_OUT) + @for test in $(wordlist 2,100,$^); do\ + if ! diff $$test $(STUB_OUT); then\ >&2 echo "ERROR k1c: $$test failed";\ else\ - echo "k1c: Test $$test Succeeded";\ + echo "GOOD k1c: $$test succeeded";\ fi;\ done @@ -57,13 +81,11 @@ test-k1c: insertion-test-gcc-k1c selection-test-gcc-k1c merge-test-gcc-k1c main- test: test-x86 test-k1c .PHONY: -check: main-test-ccomp-k1c - @if ! k1-cluster -- ./$<; then\ - >&2 echo "ERROR k1c: sort $< failed";\ - else\ - echo "k1c: Test sort $< succeeded";\ - fi - -.PHONY: -clean: - rm -f $(ALL) +check: $(STUB_OUT) $(CCOMP_OUT) + @for test in $(wordlist 2,100,$^); do\ + if ! diff $$test $(STUB_OUT); then\ + >&2 echo "ERROR k1c: $$test failed";\ + else\ + echo "GOOD k1c: $$test succeeded";\ + fi;\ + done -- cgit