aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@st.com>2009-08-12 11:12:33 +0000
committerJ"orn Rennecke <joern.rennecke@st.com>2009-08-12 11:12:33 +0000
commitb73925e7d73b5aa0b7dff9c18b693f7f9257be91 (patch)
treee37dcadc351d0efedbf8a5250fa5d4b7b64fe327
parent9c5e46fe85dc97dca045b58fe5908028d61714a1 (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.mpost4
-rw-r--r--gcc/config/arc/mpost-demo/mxp-demo-20090810.c56
-rw-r--r--gcc/config/arc/mpost-demo/simple-timing.S28
-rw-r--r--gcc/config/arc/mpost-demo/vl-main-elf32.c8
-rw-r--r--gcc/config/arc/mpost-demo/vl-main.c11
-rw-r--r--gcc/config/arc/mpost-demo/vloop.c18
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];
+}
+}