diff options
author | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-28 02:03:45 +0000 |
---|---|---|
committer | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-28 02:03:45 +0000 |
commit | 001b246b66e9ba912435973e77e300c0d90b5ad5 (patch) | |
tree | 86d74a60faadcae82333a3bbc29a7771ade8a80b /gcc/testsuite | |
parent | 9cce384d9df2ff799ce25e069a9806c667770267 (diff) | |
download | gcc-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.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-builtin-read32.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-builtin-read64.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-builtin-read8.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-builtin-write16.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-builtin-write32.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-builtin-write64.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-builtin-write8.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/frv/all-read-write-1.c | 34 |
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); +} |