aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Preud'homme <thomas.preudhomme@arm.com>2014-05-23 02:47:45 +0000
committerThomas Preud'homme <thopre01@gcc.gnu.org>2014-05-23 02:47:45 +0000
commiteaa33a6a651713511f9642f5a3e2eff8639edf41 (patch)
tree16b02c54f6e9b7361a53e7bb67a412b80c6d61e0
parentebfedee6d72292d8e6770e5de05d6290a94ab098 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.dg/optimize-bswapdi-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/optimize-bswapdi-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/optimize-bswapsi-1.c3
-rw-r--r--gcc/testsuite/lib/target-supports.exp84
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 { } {