summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-28 02:03:45 +0000
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-28 02:03:45 +0000
commit001b246b66e9ba912435973e77e300c0d90b5ad5 (patch)
tree86d74a60faadcae82333a3bbc29a7771ade8a80b /gcc/testsuite
parent9cce384d9df2ff799ce25e069a9806c667770267 (diff)
downloadgcc-001b246b66e9ba912435973e77e300c0d90b5ad5.tar.gz
* config/frv/frv.opt (moptimize-membar): New.
* doc/invoke.texi: Document -moptimize-membar and its inverse. * config/frv/frv.h: Remove machine_function definition. * config/frv/frv.c (struct frv_io): New. (struct machine_function): Moved from frv.h. Add has_membar_p. (frv_same_doubleword_p, frv_io_fixed_order_p, frv_io_union) (frv_extract_membar, frv_io_check_address, frv_io_handle_set) (frv_io_handle_use_1, frv_io_handle_use, frv_optimize_membar_local) (frv_optimize_membar_global, frv_optimize_membar): New functions. (frv_reorg): Call frv_optimize_membar when appropriate. (bdesc_loads, bdesc_stores): Use the membar code as the icode field. (frv_expand_builtin): Adjust calls accordingly. (frv_io_address_cookie): New function. (frv_expand_load_builtin, frv_expand_store_builtin): Emit a normal load or store rather than a special insn. Add ccnstant address and io-type operands to the membar. (frv_ifcvt_modify_tests): Unsign regno. (frv_ifcvt_modify_tests): Same. * config/frv/frv.md: Remove UNSPEC_BUILTIN_{LOAD,STORE}. Change UNSPEC_OPTIONAL_MEMBAR constant. (builtin_read_<mode>): Delete. (builtin_write_<mode>): Delete. ("optional_membar_<mode>"): Add operand. * testsuite/gcc.target/frv/all-builtin-read8.c: Delete. * testsuite/gcc.target/frv/all-builtin-read16.c: Delete. * testsuite/gcc.target/frv/all-builtin-read32.c: Delete. * testsuite/gcc.target/frv/all-builtin-read64.c: Delete. * testsuite/gcc.target/frv/all-builtin-write8.c: Delete. * testsuite/gcc.target/frv/all-builtin-write16.c: Delete. * testsuite/gcc.target/frv/all-builtin-write32.c: Delete. * testsuite/gcc.target/frv/all-builtin-write64.c: Delete. * testsuite/gcc.target/frv/all-read-write-1.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102455 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-read16.c11
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-read32.c12
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-read64.c11
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-read8.c11
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-write16.c12
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-write32.c12
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-write64.c12
-rw-r--r--gcc/testsuite/gcc.target/frv/all-builtin-write8.c12
-rw-r--r--gcc/testsuite/gcc.target/frv/all-read-write-1.c34
9 files changed, 34 insertions, 93 deletions
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-read16.c b/gcc/testsuite/gcc.target/frv/all-builtin-read16.c
deleted file mode 100644
index 362cc8468e0..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-read16.c
+++ /dev/null
@@ -1,11 +0,0 @@
-/* { dg-do compile } */
-
-unsigned short z;
-
-void foo (void *x)
-{
- z = __builtin_read16 (x);
-}
-
-/* { dg-final { scan-assembler "lduh" } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-read32.c b/gcc/testsuite/gcc.target/frv/all-builtin-read32.c
deleted file mode 100644
index 7e988a4378f..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-read32.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O" } */
-
-unsigned long z;
-
-void foo (void *x)
-{
- z = __builtin_read32 (x);
-}
-
-/* { dg-final { scan-assembler "ld " } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-read64.c b/gcc/testsuite/gcc.target/frv/all-builtin-read64.c
deleted file mode 100644
index 1d5b6562a4a..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-read64.c
+++ /dev/null
@@ -1,11 +0,0 @@
-/* { dg-do compile } */
-
-unsigned long long z;
-
-void foo (void *x)
-{
- z = __builtin_read64 (x);
-}
-
-/* { dg-final { scan-assembler "ldd" } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-read8.c b/gcc/testsuite/gcc.target/frv/all-builtin-read8.c
deleted file mode 100644
index b53fb61797d..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-read8.c
+++ /dev/null
@@ -1,11 +0,0 @@
-/* { dg-do compile } */
-
-unsigned char z;
-
-void foo (void *x)
-{
- z = __builtin_read8 (x);
-}
-
-/* { dg-final { scan-assembler "ldub" } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-write16.c b/gcc/testsuite/gcc.target/frv/all-builtin-write16.c
deleted file mode 100644
index f9f1cb517ee..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-write16.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* { dg-do compile } */
-
-unsigned short *addr;
-unsigned short datum;
-
-void foo ()
-{
- __builtin_write16 (addr, datum);
-}
-
-/* { dg-final { scan-assembler "sth" } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-write32.c b/gcc/testsuite/gcc.target/frv/all-builtin-write32.c
deleted file mode 100644
index b97715313c7..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-write32.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* { dg-do compile } */
-
-unsigned long *addr;
-unsigned long datum;
-
-void foo ()
-{
- __builtin_write32 (addr, datum);
-}
-
-/* { dg-final { scan-assembler "st " } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-write64.c b/gcc/testsuite/gcc.target/frv/all-builtin-write64.c
deleted file mode 100644
index eac50a266c7..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-write64.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* { dg-do compile } */
-
-unsigned long long *addr;
-unsigned long long datum;
-
-void foo ()
-{
- __builtin_write64 (addr, datum);
-}
-
-/* { dg-final { scan-assembler "std " } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-builtin-write8.c b/gcc/testsuite/gcc.target/frv/all-builtin-write8.c
deleted file mode 100644
index 56e4f3e41b5..00000000000
--- a/gcc/testsuite/gcc.target/frv/all-builtin-write8.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* { dg-do compile } */
-
-unsigned char *addr;
-unsigned char datum;
-
-void foo ()
-{
- __builtin_write8 (addr, datum);
-}
-
-/* { dg-final { scan-assembler "stb" } } */
-/* { dg-final { scan-assembler "membar" } } */
diff --git a/gcc/testsuite/gcc.target/frv/all-read-write-1.c b/gcc/testsuite/gcc.target/frv/all-read-write-1.c
new file mode 100644
index 00000000000..8496a58ed39
--- /dev/null
+++ b/gcc/testsuite/gcc.target/frv/all-read-write-1.c
@@ -0,0 +1,34 @@
+/* { dg-do run } */
+extern void abort (void);
+extern void exit (int);
+
+volatile unsigned long long x[2];
+
+int main ()
+{
+ volatile char *addr = (volatile char *) &x[0];
+
+ x[0] = ~0ULL;
+ x[1] = ~0ULL;
+ __builtin_write64 (addr, 0x1122334455667788ULL);
+ __builtin_write32 (addr + 8, 0x12345678);
+ __builtin_write16 (addr + 12, 0xaabb);
+ __builtin_write8 (addr + 14, 0xcc);
+
+ if (x[0] != 0x1122334455667788ULL
+ || x[1] != 0x12345678aabbccffULL
+ || __builtin_read8 (addr) != 0x11
+ || __builtin_read16 (addr + 2) != 0x3344
+ || __builtin_read32 (addr + 4) != 0x55667788
+ || __builtin_read64 (addr + 8) != 0x12345678aabbccffULL)
+ abort ();
+
+ __builtin_write64 (addr, 0);
+ __builtin_write32 (addr + 8, 0);
+ __builtin_write16 (addr + 12, 0);
+ __builtin_write8 (addr + 14, 0);
+ if (x[0] != 0 || x[1] != 0xff)
+ abort ();
+
+ exit (0);
+}