diff options
author | J"orn Rennecke <joern.rennecke@st.com> | 2009-08-12 11:12:33 +0000 |
---|---|---|
committer | J"orn Rennecke <joern.rennecke@st.com> | 2009-08-12 11:12:33 +0000 |
commit | b73925e7d73b5aa0b7dff9c18b693f7f9257be91 (patch) | |
tree | e37dcadc351d0efedbf8a5250fa5d4b7b64fe327 | |
parent | 9c5e46fe85dc97dca045b58fe5908028d61714a1 (diff) |
* config/arc/mpost-demo: New directory.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/milepost-integration@150679 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.mpost | 4 | ||||
-rw-r--r-- | gcc/config/arc/mpost-demo/mxp-demo-20090810.c | 56 | ||||
-rw-r--r-- | gcc/config/arc/mpost-demo/simple-timing.S | 28 | ||||
-rw-r--r-- | gcc/config/arc/mpost-demo/vl-main-elf32.c | 8 | ||||
-rw-r--r-- | gcc/config/arc/mpost-demo/vl-main.c | 11 | ||||
-rw-r--r-- | gcc/config/arc/mpost-demo/vloop.c | 18 |
6 files changed, 125 insertions, 0 deletions
diff --git a/gcc/ChangeLog.mpost b/gcc/ChangeLog.mpost index 64c7bf72cdb..b57b99279b2 100644 --- a/gcc/ChangeLog.mpost +++ b/gcc/ChangeLog.mpost @@ -1,3 +1,7 @@ +2009-08-12 J"orn Rennecke <joern.rennecke@arc.com> + + * config/arc/mpost-demo: New directory. + 2009-08-10 J"orn Rennecke <joern.rennecke@arc.com> From unnamed Milepost contributer: diff --git a/gcc/config/arc/mpost-demo/mxp-demo-20090810.c b/gcc/config/arc/mpost-demo/mxp-demo-20090810.c new file mode 100644 index 00000000000..9f04dffce01 --- /dev/null +++ b/gcc/config/arc/mpost-demo/mxp-demo-20090810.c @@ -0,0 +1,56 @@ +/* ./cc1 -O3 -quiet -fdump-tree-all -ftree-vectorize -fdump-tree-vect-details mxp-demo-20090810.c -ftree-vectorizer-verbose=9 -mA7 -msimd -da */ + + +#define LEN 1024 +int a[LEN], b[LEN*2], c[LEN*2]; + +void init_fn (void); + +void (*init_pnt) (void) = init_fn; + +int +f () +{ + int max = -0x7fff-1; + int i, j0, k0, j, k; + + (*init_pnt) (); + + for (j0 = 0; j0 < LEN; j0 += 8) + for (k0 = 0; k0 < LEN; k0 += 8) + for (j = j0, k = k0, i = 0; i < LEN; i++, j++, k++) + { + int xor1 = (a[i] ^ b[j]); + int xor2 = (a[i] ^ c[k]); + int sum = xor1 + xor2; + + max = sum > max ? sum : max; + } + return max; +} + +long +simple_rand (void) +{ + static unsigned long seed = 47114711; + unsigned long this = seed * 1103515245 + 12345; + seed = this; + return this >> 8; +} + +/* Data needed to initialize array A. */ +#define A_D(A) {(A), sizeof (A)/sizeof((A)[0])} + +struct { int *a, sz; } init_tab[] = { A_D (a), A_D (b), A_D (c), {0,0} }; + +void +init_fn (void) +{ + int i, j, *a; + + for (i = 0; a = init_tab[i].a; i++) + { + for (j = init_tab[i].sz - 1; --j >= 0; ) + a[j] = simple_rand (); + } +} diff --git a/gcc/config/arc/mpost-demo/simple-timing.S b/gcc/config/arc/mpost-demo/simple-timing.S new file mode 100644 index 00000000000..9addbb0b28b --- /dev/null +++ b/gcc/config/arc/mpost-demo/simple-timing.S @@ -0,0 +1,28 @@ +/* Definitions from auxreg.h */ +#define LP_START 0x02 +#define LP_END 0x03 +#define IDENTITY 0x04 +#define STATUS32 0x0a +#define COUNT0 0x21 /* Timer 0 count */ +#define CONTROL0 0x22 /* Timer 0 control */ +#define LIMIT0 0x23 /* Timer 0 limit */ +#define INT_VECTOR_BASE 0x25 +#define D_CACHE_BUILD 0x72 +#define DC_FLDL 0x4c + + .section .init + lr r12,[STATUS32] + bclr_s r12,r12,1 ; disallow level 1 interrupts + flag r12 + mov_s r3,0 + sr r3,[CONTROL0] + sr r3,[COUNT0] + sr 0xffffffff,[LIMIT0] ; use maximum available counting range + mov_s r12,3 ; enable timer interrupts; count only when not halted. + sr r12,[CONTROL0] + .text + .global exit +exit: lr r1,[COUNT0] +0: flag 1 + b 0b + diff --git a/gcc/config/arc/mpost-demo/vl-main-elf32.c b/gcc/config/arc/mpost-demo/vl-main-elf32.c new file mode 100644 index 00000000000..f034c959383 --- /dev/null +++ b/gcc/config/arc/mpost-demo/vl-main-elf32.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int +main (void) +{ + f (); + return 0; +} diff --git a/gcc/config/arc/mpost-demo/vl-main.c b/gcc/config/arc/mpost-demo/vl-main.c new file mode 100644 index 00000000000..ec900911838 --- /dev/null +++ b/gcc/config/arc/mpost-demo/vl-main.c @@ -0,0 +1,11 @@ +#include <stdio.h> + +int +main (void) +{ + int i; + printf ("Hello world!\n"); + i = f (); + printf ("result: %d\n", i); + return 0; +} diff --git a/gcc/config/arc/mpost-demo/vloop.c b/gcc/config/arc/mpost-demo/vloop.c new file mode 100644 index 00000000000..4c2528fc298 --- /dev/null +++ b/gcc/config/arc/mpost-demo/vloop.c @@ -0,0 +1,18 @@ +#define SIZE 256 + +typedef unsigned short align_a[SIZE] __attribute__ ((aligned (128))); + +align_a b = { 1, 2, 3, 4, 5, 6, 7, 8, 9, }; +align_a c = { 13, 17, 19, 23, 29, 31, 37, }; +align_a a; + +void +f () +{ + int i; + + for (i = 0; i < SIZE; i++) +{ + a[i] = b[i] + c[i]; +} +} |