From 33445ededfbc9512219529468a5fd5012eccc470 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Wed, 17 Oct 2007 15:25:28 +0000 Subject: [PATCH] some interesting testcases to look at [r16253] --- ir/be/test/codegen/README | 1 + ir/be/test/codegen/countingloop.c | 21 +++++++++++++++++++++ ir/be/test/codegen/leas.c | 30 ++++++++++++++++++++++++++++++ ir/be/test/codegen/spillharness.c | 30 ++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 ir/be/test/codegen/README create mode 100644 ir/be/test/codegen/countingloop.c create mode 100644 ir/be/test/codegen/leas.c create mode 100644 ir/be/test/codegen/spillharness.c diff --git a/ir/be/test/codegen/README b/ir/be/test/codegen/README new file mode 100644 index 000000000..e8599a6b0 --- /dev/null +++ b/ir/be/test/codegen/README @@ -0,0 +1 @@ +This directory contains some interesting chalenges for an x86 backend... diff --git a/ir/be/test/codegen/countingloop.c b/ir/be/test/codegen/countingloop.c new file mode 100644 index 000000000..dad82ea53 --- /dev/null +++ b/ir/be/test/codegen/countingloop.c @@ -0,0 +1,21 @@ +char *pt; + +int gf, gm; + +int f(int max) { + int i; + int f = 0; + int m = 0; + char *p = pt; + + for(i = 0; i < max; ++i) { + if(pt[i] == 0) { + f++; + } else { + m++; + } + } + gf = f; + gm = m; + return 0; +} diff --git a/ir/be/test/codegen/leas.c b/ir/be/test/codegen/leas.c new file mode 100644 index 000000000..aaaf769ca --- /dev/null +++ b/ir/be/test/codegen/leas.c @@ -0,0 +1,30 @@ +int k, g, h; + +char *arr; + +enum e_block_types {CLB, OUTPAD, INPAD, IO, ILLEGAL}; +struct s_block { + char *name; + enum e_block_types type; + int *nets; + int x; + int y; +}; + +extern struct s_block *block; +extern int num_blocks; + +int my_rand(int max); + +int f(int x, int y, int z) +{ + k = x; + g = y; + h = z; + int b_from = my_rand(num_blocks - 1); + + while(block[b_from].type != CLB) { + b_from = my_rand(num_blocks-1); + } + return 0; +} diff --git a/ir/be/test/codegen/spillharness.c b/ir/be/test/codegen/spillharness.c new file mode 100644 index 000000000..d3899e44f --- /dev/null +++ b/ir/be/test/codegen/spillharness.c @@ -0,0 +1,30 @@ +int max = 1000000; + +void mark(void); +int foo(void); + +int main(int argc, char **argv) { + int i; + int val; + + for(i = 0; i < max; ++i) { + val = rand(); + } + + mark(); + for(i = 0; i < max; ++i) { + int i1 = foo(); + int i2 = foo(); + int i3 = foo(); + int i4 = foo(); + int i5 = foo(); + int i6 = foo(); + int i7 = foo(); + + i += i1 +i2 +i3+i4+i5+i6+i7; + printf("%d\n", i); + } + + printf("end\n"); + return val; +} -- 2.20.1