diff options
author | Thomas Preud'homme <thomas.preudhomme@arm.com> | 2014-05-23 02:47:45 +0000 |
---|---|---|
committer | Thomas Preud'homme <thopre01@gcc.gnu.org> | 2014-05-23 02:47:45 +0000 |
commit | eaa33a6a651713511f9642f5a3e2eff8639edf41 (patch) | |
tree | 16b02c54f6e9b7361a53e7bb67a412b80c6d61e0 | |
parent | ebfedee6d72292d8e6770e5de05d6290a94ab098 (diff) | |
download | gcc-eaa33a6a651713511f9642f5a3e2eff8639edf41.zip gcc-eaa33a6a651713511f9642f5a3e2eff8639edf41.tar.gz gcc-eaa33a6a651713511f9642f5a3e2eff8639edf41.tar.bz2 |
target-supports.exp: New effective targets for architectures capable of performing byte swap.
2014-05-23 Thomas Preud'homme <thomas.preudhomme@arm.com>
* lib/target-supports.exp: New effective targets for architectures
capable of performing byte swap.
* gcc.dg/optimize-bswapdi-1.c: Convert to new bswap target.
* gcc.dg/optimize-bswapdi-2.c: Likewise.
* gcc.dg/optimize-bswapsi-1.c: Likewise.
From-SVN: r210842
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/optimize-bswapdi-1.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/optimize-bswapdi-2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/optimize-bswapsi-1.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 84 |
5 files changed, 98 insertions, 5 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a799992..139e750 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-23 Thomas Preud'homme <thomas.preudhomme@arm.com> + + * lib/target-supports.exp: New effective targets for architectures + capable of performing byte swap. + * gcc.dg/optimize-bswapdi-1.c: Convert to new bswap target. + * gcc.dg/optimize-bswapdi-2.c: Likewise. + * gcc.dg/optimize-bswapsi-1.c: Likewise. + 2014-05-22 Paolo Carlini <paolo.carlini@oracle.com> PR c++/61088 diff --git a/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c b/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c index 7d557f3..6142e55 100644 --- a/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c +++ b/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c @@ -1,6 +1,6 @@ -/* { dg-do compile { target arm*-*-* alpha*-*-* ia64*-*-* x86_64-*-* s390x-*-* powerpc*-*-* rs6000-*-* } } */ +/* { dg-do compile } */ +/* { dg-require-effective-target bswap64 } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-require-effective-target lp64 } */ /* { dg-options "-O2 -fdump-tree-bswap" } */ #include <stdint.h> diff --git a/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c b/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c index 6e2821d..b8ad2c1 100644 --- a/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c +++ b/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c @@ -1,6 +1,6 @@ -/* { dg-do compile { target arm*-*-* alpha*-*-* ia64*-*-* x86_64-*-* s390x-*-* powerpc*-*-* rs6000-*-* } } */ +/* { dg-do compile } */ +/* { dg-require-effective-target bswap64 } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-require-effective-target lp64 } */ /* { dg-options "-O2 -fdump-tree-bswap" } */ #include <stdint.h> diff --git a/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c b/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c index 78238e3..33d0bb0 100644 --- a/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c +++ b/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c @@ -1,4 +1,5 @@ -/* { dg-do compile { target arm*-*-* alpha*-*-* i?86-*-* powerpc*-*-* rs6000-*-* x86_64-*-* s390*-*-* } } */ +/* { dg-do compile } */ +/* { dg-require-effective-target bswap32 } */ /* { dg-require-effective-target stdint_types } */ /* { dg-options "-O2 -fdump-tree-bswap" } */ /* { dg-options "-O2 -fdump-tree-bswap -march=z900" { target s390-*-* } } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 7304f52..07f045a 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -4804,6 +4804,90 @@ proc check_effective_target_sync_long_long_runtime { } { } } +# Return 1 if the target supports byte swap instructions. + +proc check_effective_target_bswap { } { + global et_bswap_saved + + if [info exists et_bswap_saved] { + verbose "check_effective_target_bswap: using cached result" 2 + } else { + set et_bswap_saved 0 + if { [istarget aarch64-*-*] + || [istarget alpha*-*-*] + || [istarget arm*-*-*] + || [istarget i?86-*-*] + || [istarget m68k-*-*] + || [istarget powerpc*-*-*] + || [istarget rs6000-*-*] + || [istarget s390*-*-*] + || [istarget x86_64-*-*] } { + set et_bswap_saved 1 + } + } + + verbose "check_effective_target_bswap: returning $et_bswap_saved" 2 + return $et_bswap_saved +} + +# Return 1 if the target supports 16-bit byte swap instructions. + +proc check_effective_target_bswap16 { } { + global et_bswap16_saved + + if [info exists et_bswap16_saved] { + verbose "check_effective_target_bswap16: using cached result" 2 + } else { + set et_bswap16_saved 0 + if { [is-effective-target bswap] + && ![istarget alpha*-*-*] + && ![istarget i?86-*-*] + && ![istarget x86_64-*-*] } { + set et_bswap16_saved 1 + } + } + + verbose "check_effective_target_bswap16: returning $et_bswap16_saved" 2 + return $et_bswap16_saved +} + +# Return 1 if the target supports 32-bit byte swap instructions. + +proc check_effective_target_bswap32 { } { + global et_bswap32_saved + + if [info exists et_bswap32_saved] { + verbose "check_effective_target_bswap32: using cached result" 2 + } else { + set et_bswap32_saved 0 + if { [is-effective-target bswap] } { + set et_bswap32_saved 1 + } + } + + verbose "check_effective_target_bswap32: returning $et_bswap32_saved" 2 + return $et_bswap32_saved +} + +# Return 1 if the target supports 64-bit byte swap instructions. + +proc check_effective_target_bswap64 { } { + global et_bswap64_saved + + if [info exists et_bswap64_saved] { + verbose "check_effective_target_bswap64: using cached result" 2 + } else { + set et_bswap64_saved 0 + if { [is-effective-target bswap] + && [is-effective-target lp64] } { + set et_bswap64_saved 1 + } + } + + verbose "check_effective_target_bswap64: returning $et_bswap64_saved" 2 + return $et_bswap64_saved +} + # Return 1 if the target supports atomic operations on "int" and "long". proc check_effective_target_sync_int_long { } { |