From eaa33a6a651713511f9642f5a3e2eff8639edf41 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Fri, 23 May 2014 02:47:45 +0000 Subject: [PATCH] target-supports.exp: New effective targets for architectures capable of performing byte swap. 2014-05-23 Thomas Preud'homme * 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 --- gcc/testsuite/ChangeLog | 8 +++ gcc/testsuite/gcc.dg/optimize-bswapdi-1.c | 4 +- gcc/testsuite/gcc.dg/optimize-bswapdi-2.c | 4 +- gcc/testsuite/gcc.dg/optimize-bswapsi-1.c | 3 +- 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 a799992e502a..139e750eccf1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-23 Thomas Preud'homme + + * 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 PR c++/61088 diff --git a/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c b/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c index 7d557f369c37..6142e55c51d9 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 diff --git a/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c b/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c index 6e2821db9904..b8ad2c13c40d 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 diff --git a/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c b/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c index 78238e309558..33d0bb0fa77d 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 7304f5275ee5..07f045aa477c 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 { } { -- 2.47.3