We have 64 bit bswap patterns in 32 bit code as long as we use -mzarch. gcc/testsuite/ChangeLog:
2015-11-25 Andreas Krebbel <kreb...@linux.vnet.ibm.com> * gcc.dg/optimize-bswapdi-1.c: Force using -mzarch on s390 and s390x to enable 64 bit bswap patterns. * gcc.dg/optimize-bswapdi-2.c: Likewise. * gcc.dg/optimize-bswapdi-3.c: Likewise. * lib/target-supports.exp: Add a comment for s390. --- gcc/testsuite/gcc.dg/optimize-bswapdi-1.c | 1 + gcc/testsuite/gcc.dg/optimize-bswapdi-2.c | 1 + gcc/testsuite/gcc.dg/optimize-bswapdi-3.c | 1 + gcc/testsuite/lib/target-supports.exp | 2 ++ 4 files changed, 5 insertions(+) diff --git a/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c b/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c index 0b5fe29..251dbc2 100644 --- a/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c +++ b/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c @@ -2,6 +2,7 @@ /* { dg-require-effective-target bswap64 } */ /* { dg-require-effective-target stdint_types } */ /* { dg-options "-O2 -fdump-tree-bswap" } */ +/* { dg-additional-options "-mzarch" { target s390*-*-* } } */ #include <stdint.h> #define __const_swab64(x) ((uint64_t)( \ diff --git a/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c b/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c index 7ac0323..2c81087 100644 --- a/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c +++ b/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c @@ -2,6 +2,7 @@ /* { dg-require-effective-target bswap64 } */ /* { dg-require-effective-target stdint_types } */ /* { dg-options "-O2 -fdump-tree-bswap" } */ +/* { dg-additional-options "-mzarch" { target s390*-*-* } } */ #include <stdint.h> diff --git a/gcc/testsuite/gcc.dg/optimize-bswapdi-3.c b/gcc/testsuite/gcc.dg/optimize-bswapdi-3.c index 3c66505..273b4bc 100644 --- a/gcc/testsuite/gcc.dg/optimize-bswapdi-3.c +++ b/gcc/testsuite/gcc.dg/optimize-bswapdi-3.c @@ -2,6 +2,7 @@ /* { dg-require-effective-target bswap64 } */ /* { dg-require-effective-target stdint_types } */ /* { dg-options "-O2 -fdump-tree-bswap" } */ +/* { dg-additional-options "-mzarch" { target s390*-*-* } } */ #include <stdint.h> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 3eb46f2..acd786e 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -5487,6 +5487,8 @@ proc check_effective_target_bswap32 { } { } # Return 1 if the target supports 64-bit byte swap instructions. +# +# Note: 32bit s390 targets require -mzarch in dg-options. proc check_effective_target_bswap64 { } { global et_bswap64_saved -- 2.3.0