From: thopre01 Date: Fri, 23 May 2014 02:47:45 +0000 (+0000) Subject: 2014-05-23 Thomas Preud'homme X-Git-Tag: upstream/5.3.0~8232 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a23d0085b01dce3dfff4e6913a415d016cd03423;p=platform%2Fupstream%2Flinaro-gcc.git 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210842 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 + + * 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 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 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 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 { } {