[gcc r17-2272] s390: Remove -m31 support

Stefan Schulze Frielinghaus stefansf@gcc.gnu.org
Thu Jul 9 07:30:27 GMT 2026


https://gcc.gnu.org/g:035f177a1eab310ca2f2a1996b7c000ff70514af

commit r17-2272-g035f177a1eab310ca2f2a1996b7c000ff70514af
Author: Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
Date:   Thu Jul 9 09:28:12 2026 +0200

    s390: Remove -m31 support
    
    This patch removes -m31 support and as a consequence -mesa support.
    Using the respective command line options result in errors whereas -m64
    and -mzarch are still accepted for the sake of backwards compatibility
    but do not have any additional effect anymore since those are the
    defaults and only options, now.
    
    Since a 64-bit GAS defaults to -m64, do not explicitly specify -m64
    -mzarch anymore.
    
    ChangeLog:
    
            * configure: Regenerate.
            * configure.ac: Remove deprecation warning for -m31.
    
    contrib/ChangeLog:
    
            * compare-all-tests: Remove opts -m31 and so on.
            * config-list.mk: Remove s390-linux-gnu.
    
    gcc/ChangeLog:
    
            * config.gcc: Remove target s390-*. Don't accept
            --with-mode=esa anymore.
            * config.host: Remove target s390-*.
            * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Remove definition
            for s390.
            * config/s390/2827.md: Remove scheduling information for
            mnemonics which are only used by -m31 but not by -m64.
            * config/s390/2964.md: Ditto.
            * config/s390/3906.md: Ditto.
            * config/s390/3931.md: Ditto.
            * config/s390/8561.md: Ditto.
            * config/s390/9175.md: Ditto.
            * config/s390/constraints.md (ZL): Remove TARGET_64BIT test.
            * config/s390/driver-native.cc (s390_host_detect_local_cpu):
            Remove handling for -mesa/-mzarch.
            * config/s390/htmxlintrin.h (__TM_failure_address): Remove
            -m31 part.
            * config/s390/linux.h: Remove -m31 parts.
            * config/s390/predicates.md: Ditto.
            * config/s390/s390-builtins.def: Rename RTL expander name for
            s390_vsce[fg].
            * config/s390/s390-c.cc (s390_cpu_cpp_builtins): Remove
            TARGET_{64BIT,ZARCH} tests.
            * config/s390/s390-d.cc (s390_d_target_versions): Remove
            TARGET_64BIT test.
            * config/s390/s390.cc: Remove -m31 parts.  In particular, there
            is no need to distinguish between 64-bit registers in ABI
            contexts anymore which is why UNITS_PER_WORD and UNITS_PER_LONG
            always equal, now.  Hence, replace UNITS_PER_LONG by
            UNITS_PER_WORD.
            * config/s390/s390.h: Ditto.
            * config/s390/s390.md: Ditto. Mode iterator GPR is replaced by
            DSI. Likewise, DGPR by new mode iterator TDSI.  Remove mode
            iterators P, DW, W because they are singletons, now.
            * config/s390/s390.opt: Keep -m64 and -mzarch for backwards
            compatibility.  Mark -m31 and -mesa as undocumented.
            * config/s390/s390.opt.urls: Regenerate.
            * config/s390/t-linux64: Remove -m31 parts.
            * config/s390/tpf.h (POINTERS_EXTEND_UNSIGNED): This is only
            required for TPF which is why it is moved from s390.h here.
            (TARGET_DEFAULT): Remove MASK_64BIT and MASK_ZARCH.
            * config/s390/vector.md: Remove -m31 parts.
            * config/s390/vx-builtins.md
            (vec_scatter_element<V_HW_2:mode>_SI): There is no need for
            multiplexing different address sizes for vec_scatter_element
            anymore.
            (vec_scatter_element<V_HW_32_64:mode>): Ditto.
            * configure: Regenerate.
            * configure.ac: Remove target s390-*.
            * doc/install.texi: Remove mentions of s390 without also
            referring to s390x.
            * doc/invoke.texi: Remove options -m31 and -mesa.  Document that
            -m64 and -mzarch are the defaults, now, and that they don't have
            any additional effect when explicitly specified.
            * config/s390/s390x.h: Removed.
    
    libgcc/ChangeLog:
    
            * config.host: Remove target s390-*.  Remove -m31 part.
            * config/s390/libgcc-glibc.ver: Remove -m31 part.
            * config/s390/morestack.S: Ditto.
            * config/s390/sfp-machine.h: Ditto.
            * configure: Regenerate.
            * configure.ac: Remove target s390-*.
            * generic-morestack.c: Remove -m31 part.
            * config/s390/32/_fixdfdi.c: Removed.
            * config/s390/32/_fixsfdi.c: Removed.
            * config/s390/32/_fixtfdi.c: Removed.
            * config/s390/32/_fixunsdfdi.c: Removed.
            * config/s390/32/_fixunssfdi.c: Removed.
            * config/s390/32/_fixunstfdi.c: Removed.
            * config/s390/32/t-floattodi: Removed.
    
    libgm2/ChangeLog:
    
            * configure.host: Remove s390 host part; keep s390x.
    
    libitm/ChangeLog:
    
            * config/s390/sjlj.S: Remove -m31 part.
    
    libstdc++-v3/ChangeLog:
    
            * configure.host: Remove s390 host part; keep s390x.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.dg/asm-hard-reg-error-3.c: Remove target s390-*.
            * gcc.dg/builtin-bswap-8.c: Remove target s390-*.
            * gcc.dg/ifcvt-4.c: Remove -m31 part.
            * gcc.dg/optimize-bswaphi-1.c: Ditto.
            * gcc.dg/optimize-bswapsi-3.c: Ditto.
            * gcc.dg/optimize-bswapsi-4.c: Ditto.
            * gcc.dg/optimize-bswapsi-5.c: Ditto.
            * gcc.dg/optimize-bswapsi-6.c: Ditto.
            * gcc.dg/optimize-bswapsi-7.c: Ditto.
            * gcc.dg/pr120525.c: Ditto.
            * gcc.dg/tree-ssa/loop-1.c: Ditto.
            * gcc.misc-tests/linkage.exp: Ditto.
            * gcc.target/s390/addsub-signed-overflow-1.c: Ditto.
            * gcc.target/s390/addsub-signed-overflow-2.c: Ditto.
            * gcc.target/s390/asm-constant-1.c: Ditto.
            * gcc.target/s390/call-z10-pic-nodatarel.c: Ditto.
            * gcc.target/s390/call-z10-pic.c: Ditto.
            * gcc.target/s390/call-z10.c: Ditto.
            * gcc.target/s390/call-z9-pic-nodatarel.c: Ditto.
            * gcc.target/s390/call-z9-pic.c: Ditto.
            * gcc.target/s390/call-z9.c: Ditto.
            * gcc.target/s390/fcall-saved.c: Ditto.
            * gcc.target/s390/global-array-element-pic2.c: Ditto.
            * gcc.target/s390/insv-1.c: Ditto.
            * gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c: Ditto.
            * gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c: Ditto.
            * gcc.target/s390/larl-1.c: Ditto.
            * gcc.target/s390/leaf-profile.c: Ditto.
            * gcc.target/s390/load-relative-check.c: Ditto.
            * gcc.target/s390/load-thread-pointer-once-2.c: Ditto.
            * gcc.target/s390/load-thread-pointer-once.c: Ditto.
            * gcc.target/s390/loc-1.c: Ditto.
            * gcc.target/s390/md/andc-splitter-2.c: Ditto.
            * gcc.target/s390/mrecord-mcount.c: Ditto.
            * gcc.target/s390/mul-signed-overflow-1.c: Ditto.
            * gcc.target/s390/mul-signed-overflow-2.c: Ditto.
            * gcc.target/s390/not.c: Ditto.
            * gcc.target/s390/pr42224.c: Guard as a TPF test.
            * gcc.target/s390/preserve-args-1.c: Remove -m31 part.
            * gcc.target/s390/preserve-args-3.c: Ditto.
            * gcc.target/s390/risbg-ll-1.c: Ditto.
            * gcc.target/s390/risbg-ll-2.c: Ditto.
            * gcc.target/s390/risbg-ll-3.c: Ditto.
            * gcc.target/s390/stack-protector-guard-tls-1.c: Ditto.
            * gcc.target/s390/target-attribute/tattr-12.c: Ditto.
            * gcc.target/s390/target-attribute/tattr-15.c: Ditto.
            * gcc.target/s390/tls.c: Ditto.
            * gcc.target/s390/uaddc-1.c: Ditto.
            * gcc.target/s390/uaddc-2.c: Ditto.
            * gcc.target/s390/uaddc-3.c: Ditto.
            * gcc.target/s390/usubc-1.c: Ditto.
            * gcc.target/s390/usubc-2.c: Ditto.
            * gcc.target/s390/usubc-3.c: Ditto.
            * gcc.target/s390/vector/pattern-avg-1.c: Ditto.
            * gcc.target/s390/vector/vec-abi-1.c: Ditto.
            * gcc.target/s390/vector/vec-abi-3.c: Ditto.
            * gcc.target/s390/vector/vec-abi-4.c: Ditto.
            * gcc.target/s390/vector/vec-abi-vararg-1.c: Ditto.
            * gcc.target/s390/vector/vec-scalar-cmp-1.c: Ditto.
            * gcc.target/s390/zero-scratch-regs-1.c: Ditto.
            * gcc.target/s390/zvector/vec-cmp-1.c: Ditto.
            * gcc.target/s390/20020926-1.c: Removed.
            * gcc.target/s390/20140327-1.c: Removed.
            * gcc.target/s390/dwarfregtable-1.c: Removed.
            * gcc.target/s390/dwarfregtable-2.c: Removed.
            * gcc.target/s390/fp2int1.c: Removed.
            * gcc.target/s390/mnop-mcount-m31-mzarch.c: Removed.
            * gcc.target/s390/pr102222.c: Removed.
            * gcc.target/s390/pr106355-2.c: Removed.
            * gcc.target/s390/pr106355-3.c: Removed.
            * gcc.target/s390/pr119873-5.c: Removed.
            * gcc.target/s390/pr61078.c: Removed.
            * gcc.target/s390/stack-clash-4.c: Removed.
            * gcc.target/s390/stack-clash-5.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-1.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-10.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-11.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-12.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-13.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-14.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-15.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-16.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-17.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-18.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-19.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-2.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-20.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-21.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-22.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-23.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-24.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-25.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-26.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-27.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-28.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-29.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-3.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-30.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-31.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-32.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-4.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-5.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-6.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-7.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-8.c: Removed.
            * gcc.target/s390/target-attribute/tattr-m31-9.c: Removed.

Diff:
---
 configure                                          |   16 -
 configure.ac                                       |   15 -
 contrib/compare-all-tests                          |    1 -
 contrib/config-list.mk                             |    2 +-
 gcc/config.gcc                                     |   33 +-
 gcc/config.host                                    |    4 +-
 gcc/config/host-linux.cc                           |    2 -
 gcc/config/s390/2827.md                            |   56 +-
 gcc/config/s390/2964.md                            |   42 +-
 gcc/config/s390/3906.md                            |   40 +-
 gcc/config/s390/3931.md                            |   50 +-
 gcc/config/s390/8561.md                            |   38 +-
 gcc/config/s390/9175.md                            |   44 +-
 gcc/config/s390/constraints.md                     |    4 +-
 gcc/config/s390/driver-native.cc                   |   16 +-
 gcc/config/s390/htmxlintrin.h                      |    4 -
 gcc/config/s390/linux.h                            |   29 +-
 gcc/config/s390/predicates.md                      |   16 +-
 gcc/config/s390/s390-builtins.def                  |    4 +-
 gcc/config/s390/s390-c.cc                          |    6 +-
 gcc/config/s390/s390-d.cc                          |    9 +-
 gcc/config/s390/s390.cc                            | 1026 ++-----
 gcc/config/s390/s390.h                             |  196 +-
 gcc/config/s390/s390.md                            | 2865 ++++++--------------
 gcc/config/s390/s390.opt                           |   15 +-
 gcc/config/s390/s390.opt.urls                      |    6 -
 gcc/config/s390/s390x.h                            |   27 -
 gcc/config/s390/t-linux64                          |   12 +-
 gcc/config/s390/tpf.h                              |    7 +-
 gcc/config/s390/vector.md                          |   28 +-
 gcc/config/s390/vx-builtins.md                     |   48 +-
 gcc/configure                                      |   25 +-
 gcc/configure.ac                                   |   25 +-
 gcc/doc/install.texi                               |    6 +-
 gcc/doc/invoke.texi                                |   30 +-
 gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c        |    5 +-
 gcc/testsuite/gcc.dg/builtin-bswap-8.c             |    1 -
 gcc/testsuite/gcc.dg/ifcvt-4.c                     |    1 -
 gcc/testsuite/gcc.dg/optimize-bswaphi-1.c          |    1 -
 gcc/testsuite/gcc.dg/optimize-bswapsi-3.c          |    1 -
 gcc/testsuite/gcc.dg/optimize-bswapsi-4.c          |    1 -
 gcc/testsuite/gcc.dg/optimize-bswapsi-5.c          |    1 -
 gcc/testsuite/gcc.dg/optimize-bswapsi-6.c          |    1 -
 gcc/testsuite/gcc.dg/optimize-bswapsi-7.c          |    1 -
 gcc/testsuite/gcc.dg/pr120525.c                    |    1 -
 gcc/testsuite/gcc.dg/tree-ssa/loop-1.c             |    5 -
 gcc/testsuite/gcc.misc-tests/linkage.exp           |    9 -
 gcc/testsuite/gcc.target/s390/20020926-1.c         |   14 -
 gcc/testsuite/gcc.target/s390/20140327-1.c         |   10 -
 .../gcc.target/s390/addsub-signed-overflow-1.c     |    9 +-
 .../gcc.target/s390/addsub-signed-overflow-2.c     |    9 +-
 gcc/testsuite/gcc.target/s390/asm-constant-1.c     |   13 +-
 .../gcc.target/s390/call-z10-pic-nodatarel.c       |   11 +-
 gcc/testsuite/gcc.target/s390/call-z10-pic.c       |    9 +-
 gcc/testsuite/gcc.target/s390/call-z10.c           |    5 +-
 .../gcc.target/s390/call-z9-pic-nodatarel.c        |    3 +-
 gcc/testsuite/gcc.target/s390/call-z9-pic.c        |    3 +-
 gcc/testsuite/gcc.target/s390/call-z9.c            |    3 +-
 gcc/testsuite/gcc.target/s390/dwarfregtable-1.c    |   21 -
 gcc/testsuite/gcc.target/s390/dwarfregtable-2.c    |   21 -
 gcc/testsuite/gcc.target/s390/fcall-saved.c        |    8 +-
 gcc/testsuite/gcc.target/s390/fp2int1.c            |   95 -
 .../gcc.target/s390/global-array-element-pic2.c    |    5 +-
 gcc/testsuite/gcc.target/s390/insv-1.c             |    8 +-
 .../s390/isfinite-isinf-isnormal-signbit-2.c       |    6 +-
 .../s390/isfinite-isinf-isnormal-signbit-3.c       |    6 +-
 gcc/testsuite/gcc.target/s390/larl-1.c             |    5 +-
 gcc/testsuite/gcc.target/s390/leaf-profile.c       |    1 -
 .../gcc.target/s390/load-relative-check.c          |   12 +-
 .../gcc.target/s390/load-thread-pointer-once-2.c   |    3 +-
 .../gcc.target/s390/load-thread-pointer-once.c     |    3 +-
 gcc/testsuite/gcc.target/s390/loc-1.c              |    6 +-
 gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c |    8 +-
 .../gcc.target/s390/mnop-mcount-m31-mzarch.c       |    8 -
 gcc/testsuite/gcc.target/s390/mrecord-mcount.c     |    3 +-
 .../gcc.target/s390/mul-signed-overflow-1.c        |    7 +-
 .../gcc.target/s390/mul-signed-overflow-2.c        |    5 +-
 gcc/testsuite/gcc.target/s390/not.c                |    3 +-
 gcc/testsuite/gcc.target/s390/pr102222.c           |   16 -
 gcc/testsuite/gcc.target/s390/pr106355-2.c         |    8 -
 gcc/testsuite/gcc.target/s390/pr106355-3.c         |    8 -
 gcc/testsuite/gcc.target/s390/pr119873-5.c         |   11 -
 gcc/testsuite/gcc.target/s390/pr42224.c            |    3 +
 gcc/testsuite/gcc.target/s390/pr61078.c            |   26 -
 gcc/testsuite/gcc.target/s390/preserve-args-1.c    |    3 +-
 gcc/testsuite/gcc.target/s390/preserve-args-3.c    |    3 +-
 gcc/testsuite/gcc.target/s390/risbg-ll-1.c         |   96 +-
 gcc/testsuite/gcc.target/s390/risbg-ll-2.c         |   18 +-
 gcc/testsuite/gcc.target/s390/risbg-ll-3.c         |   11 +-
 gcc/testsuite/gcc.target/s390/stack-clash-4.c      |   10 -
 gcc/testsuite/gcc.target/s390/stack-clash-5.c      |   10 -
 .../gcc.target/s390/stack-protector-guard-tls-1.c  |   11 +-
 .../gcc.target/s390/target-attribute/tattr-12.c    |   15 +-
 .../gcc.target/s390/target-attribute/tattr-15.c    |    6 +-
 .../gcc.target/s390/target-attribute/tattr-m31-1.c |  353 ---
 .../s390/target-attribute/tattr-m31-10.c           |  353 ---
 .../s390/target-attribute/tattr-m31-11.c           |  353 ---
 .../s390/target-attribute/tattr-m31-12.c           |  353 ---
 .../s390/target-attribute/tattr-m31-13.c           |  353 ---
 .../s390/target-attribute/tattr-m31-14.c           |  353 ---
 .../s390/target-attribute/tattr-m31-15.c           |  353 ---
 .../s390/target-attribute/tattr-m31-16.c           |  353 ---
 .../s390/target-attribute/tattr-m31-17.c           |  353 ---
 .../s390/target-attribute/tattr-m31-18.c           |  353 ---
 .../s390/target-attribute/tattr-m31-19.c           |  353 ---
 .../gcc.target/s390/target-attribute/tattr-m31-2.c |  353 ---
 .../s390/target-attribute/tattr-m31-20.c           |  353 ---
 .../s390/target-attribute/tattr-m31-21.c           |  353 ---
 .../s390/target-attribute/tattr-m31-22.c           |  353 ---
 .../s390/target-attribute/tattr-m31-23.c           |  353 ---
 .../s390/target-attribute/tattr-m31-24.c           |  353 ---
 .../s390/target-attribute/tattr-m31-25.c           |  353 ---
 .../s390/target-attribute/tattr-m31-26.c           |  353 ---
 .../s390/target-attribute/tattr-m31-27.c           |  353 ---
 .../s390/target-attribute/tattr-m31-28.c           |  353 ---
 .../s390/target-attribute/tattr-m31-29.c           |  177 --
 .../gcc.target/s390/target-attribute/tattr-m31-3.c |  353 ---
 .../s390/target-attribute/tattr-m31-30.c           |  177 --
 .../s390/target-attribute/tattr-m31-31.c           |  353 ---
 .../s390/target-attribute/tattr-m31-32.c           |  353 ---
 .../gcc.target/s390/target-attribute/tattr-m31-4.c |  353 ---
 .../gcc.target/s390/target-attribute/tattr-m31-5.c |  353 ---
 .../gcc.target/s390/target-attribute/tattr-m31-6.c |  353 ---
 .../gcc.target/s390/target-attribute/tattr-m31-7.c |  353 ---
 .../gcc.target/s390/target-attribute/tattr-m31-8.c |  353 ---
 .../gcc.target/s390/target-attribute/tattr-m31-9.c |  353 ---
 gcc/testsuite/gcc.target/s390/tls.c                |    3 +-
 gcc/testsuite/gcc.target/s390/uaddc-1.c            |    7 +-
 gcc/testsuite/gcc.target/s390/uaddc-2.c            |    5 +-
 gcc/testsuite/gcc.target/s390/uaddc-3.c            |    6 +-
 gcc/testsuite/gcc.target/s390/usubc-1.c            |    7 +-
 gcc/testsuite/gcc.target/s390/usubc-2.c            |    5 +-
 gcc/testsuite/gcc.target/s390/usubc-3.c            |    9 +-
 .../gcc.target/s390/vector/pattern-avg-1.c         |    3 +-
 gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c   |    7 +-
 gcc/testsuite/gcc.target/s390/vector/vec-abi-3.c   |    8 +-
 gcc/testsuite/gcc.target/s390/vector/vec-abi-4.c   |    6 +-
 .../gcc.target/s390/vector/vec-abi-vararg-1.c      |   17 +-
 .../gcc.target/s390/vector/vec-scalar-cmp-1.c      |   20 +-
 .../gcc.target/s390/zero-scratch-regs-1.c          |   15 +-
 gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c  |   72 +-
 libgcc/config.host                                 |   14 +-
 libgcc/config/s390/32/_fixdfdi.c                   |  113 -
 libgcc/config/s390/32/_fixsfdi.c                   |  107 -
 libgcc/config/s390/32/_fixtfdi.c                   |  122 -
 libgcc/config/s390/32/_fixunsdfdi.c                |  120 -
 libgcc/config/s390/32/_fixunssfdi.c                |  114 -
 libgcc/config/s390/32/_fixunstfdi.c                |  125 -
 libgcc/config/s390/32/t-floattodi                  |    5 -
 libgcc/config/s390/libgcc-glibc.ver                |   43 -
 libgcc/config/s390/morestack.S                     |  241 --
 libgcc/config/s390/sfp-machine.h                   |    4 -
 libgcc/configure                                   |    2 +-
 libgcc/configure.ac                                |    2 +-
 libgcc/generic-morestack.c                         |    2 -
 libgm2/configure.host                              |    3 -
 libitm/config/s390/sjlj.S                          |   24 -
 libstdc++-v3/configure.host                        |    3 -
 158 files changed, 1562 insertions(+), 15969 deletions(-)

diff --git a/configure b/configure
index f5673e863419..79c324786e7a 100755
--- a/configure
+++ b/configure
@@ -11752,22 +11752,6 @@ case "$target:$have_compiler:$host:$target:$enable_multilib" in
     ;;
 esac
 
-# For s390, -m31 is deprecated.  Emit a warning if --enable-multilib and
-# --enable-obsolete are explicitly specified.  If --enable-multilib is
-# specified implicitly or --enable-obsolete is missing, error out.
-case "$target:$enable_multilib:$enable_obsolete" in
-  s390*:yes:yes)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Support for -m31 is deprecated and will be removed." >&5
-$as_echo "$as_me: WARNING: Support for -m31 is deprecated and will be removed." >&2;}
-    ;;
-  s390*::*)
-    as_fn_error $? "Support for -m31 is deprecated and will be removed. Explicitly specify --disable-multilib or --enable-multilib --enable-obsolete to build it anyway." "$LINENO" 5
-    ;;
-  s390*:yes:*)
-    as_fn_error $? "Support for -m31 is deprecated and will be removed. Specify --enable-obsolete to build it anyway." "$LINENO" 5
-    ;;
-esac
-
 # Default to --enable-multilib.
 if test x${enable_multilib} = x ; then
   target_configargs="--enable-multilib ${target_configargs}"
diff --git a/configure.ac b/configure.ac
index c953a5823c0a..60887fb7fe00 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3826,21 +3826,6 @@ case "$target:$have_compiler:$host:$target:$enable_multilib" in
     ;;
 esac
 
-# For s390, -m31 is deprecated.  Emit a warning if --enable-multilib and
-# --enable-obsolete are explicitly specified.  If --enable-multilib is
-# specified implicitly or --enable-obsolete is missing, error out.
-case "$target:$enable_multilib:$enable_obsolete" in
-  s390*:yes:yes)
-    AC_MSG_WARN([Support for -m31 is deprecated and will be removed.])
-    ;;
-  s390*::*)
-    AC_MSG_ERROR([Support for -m31 is deprecated and will be removed. Explicitly specify --disable-multilib or --enable-multilib --enable-obsolete to build it anyway.])
-    ;;
-  s390*:yes:*)
-    AC_MSG_ERROR([Support for -m31 is deprecated and will be removed. Specify --enable-obsolete to build it anyway.])
-    ;;
-esac
-
 # Default to --enable-multilib.
 if test x${enable_multilib} = x ; then
   target_configargs="--enable-multilib ${target_configargs}"
diff --git a/contrib/compare-all-tests b/contrib/compare-all-tests
index 561b2195c64a..3280787ebb1e 100644
--- a/contrib/compare-all-tests
+++ b/contrib/compare-all-tests
@@ -29,7 +29,6 @@ mips_opts='-msoft-float/-mgp32/-mips16 -mabi=32/-mfp32/-mgp32/-mips16 -mabi=o64/
 mn10300_opts='-mam33 -mam33-2'
 pa_opts='-march=2.0 -march=1.0 -march=1.1'
 ppc_opts='-m32 -m64'
-s390_opts='-m31 -m31/-mzarch -m64'
 sh_opts='-m3 -m3e -m4 -m4a -m4al -m4/-mieee -m1 -m1/-mno-cbranchdi -m2a -m2a/-mieee -m2e -m2e/-mieee'
 sparc_opts='-mcpu=v8/-m32 -mcpu=v9/-m32 -m64'
 
diff --git a/contrib/config-list.mk b/contrib/config-list.mk
index 69f5aed476d3..c7f01da3bd2d 100644
--- a/contrib/config-list.mk
+++ b/contrib/config-list.mk
@@ -94,7 +94,7 @@ LIST = \
   pru-elf \
   riscv32-unknown-linux-gnu riscv64-unknown-linux-gnu \
   powerpc-ibm-aix7.1 powerpc-ibm-aix7.2 \
-  rl78-elf rx-elf s390-linux-gnu s390x-linux-gnu s390x-ibm-tpf sh-elf \
+  rl78-elf rx-elf s390x-linux-gnu s390x-ibm-tpf sh-elf \
   shle-linux sh-netbsdelf sh-superh-elf \
   sh-rtems sh-wrs-vxworks sparc-elf \
   sparc-leon-elf sparc-rtems sparc-linux-gnu \
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 15f663cfb642..0477bf22c8a0 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -276,15 +276,6 @@ case ${target} in
     fi;;
 esac
 
-case ${target} in
-  s390-*)
-    if test "x$enable_obsolete" != xyes; then
-      echo "*** Configuration ${target} is deprecated and will be removed." >&2
-      echo "*** Specify --enable-obsolete to build it anyway." >&2
-      exit 1
-    fi;;
-esac
-
 # Unsupported targets list.  Do not put an entry in this list unless
 # it would otherwise be caught by a more permissive pattern.  The list
 # should be in alphabetical order.
@@ -310,6 +301,7 @@ case ${target}${target_min} in
  | pdp11-*-bsd				\
  | powerpc*-*-linux*paired*		\
  | powerpc*-*-*spe*			\
+ | s390-*-*				\
  | sparc-hal-solaris2*			\
  | spu*-*-*				\
  | thumb-*-*				\
@@ -603,7 +595,7 @@ sparc*-*-*)
 	d_target_objs="sparc-d.o"
 	extra_headers="visintrin.h"
 	;;
-s390*-*-*)
+s390x-*-*)
 	cpu_type=s390
 	d_target_objs="s390-d.o"
 	extra_options="${extra_options} fused-madd.opt"
@@ -3270,17 +3262,8 @@ rx-*-linux*)
 	tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
 	tmake_file="${tmake_file} rx/t-linux"
 	;;
-s390-*-linux*)
-	tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
-	c_target_objs="${c_target_objs} s390-c.o"
-	cxx_target_objs="${cxx_target_objs} s390-c.o"
-	if test x$enable_targets = xall; then
-		tmake_file="${tmake_file} s390/t-linux64"
-	fi
-	tmake_file="${tmake_file} s390/t-s390"
-	;;
 s390x-*-linux*)
-	tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
+	tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
 	tm_p_file="linux-protos.h s390/s390-protos.h"
 	c_target_objs="${c_target_objs} s390-c.o"
 	cxx_target_objs="${cxx_target_objs} s390-c.o"
@@ -3290,7 +3273,7 @@ s390x-*-linux*)
 	tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
 	;;
 s390x-ibm-tpf*)
-	tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
+	tm_file="s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
 	tm_p_file=s390/s390-protos.h
 	c_target_objs="${c_target_objs} s390-c.o"
 	cxx_target_objs="${cxx_target_objs} s390-c.o"
@@ -5883,7 +5866,7 @@ case "${target}" in
 		fi
 		;;
 
-	s390*-*-*)
+	s390x-*-*)
 		supported_defaults="arch mode tune"
 
 		for which in arch tune; do
@@ -5900,9 +5883,13 @@ case "${target}" in
 		done
 
 		case ${with_mode} in
-		"" | esa | zarch)
+		"" | zarch)
 			# OK
 			;;
+		esa)
+			echo "ESA/390 mode is no longer supported." 1>&2
+			exit 1
+			;;
 		*)
 			echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
 			exit 1
diff --git a/gcc/config.host b/gcc/config.host
index 8b809a8d5ddc..c9be68acb82f 100644
--- a/gcc/config.host
+++ b/gcc/config.host
@@ -173,9 +173,9 @@ case ${host} in
 	;;
     esac
     ;;
-  s390-*-* | s390x-*-*)
+  s390x-*-*)
     case ${target} in
-      s390-*-* | s390x-*-*)
+      s390x-*-*)
         host_extra_gcc_objs="driver-native.o"
         host_xmake_file="${host_xmake_file} s390/x-native"
         ;;
diff --git a/gcc/config/host-linux.cc b/gcc/config/host-linux.cc
index e3ccc06eb810..57b9b46ccc33 100644
--- a/gcc/config/host-linux.cc
+++ b/gcc/config/host-linux.cc
@@ -78,8 +78,6 @@
 # define TRY_EMPTY_VM_SPACE	0x60000000
 #elif defined(__s390x__)
 # define TRY_EMPTY_VM_SPACE	0x8000000000
-#elif defined(__s390__)
-# define TRY_EMPTY_VM_SPACE	0x60000000
 #elif defined(__sparc__) && defined(__LP64__)
 # define TRY_EMPTY_VM_SPACE	0x8000000000
 #elif defined(__sparc__)
diff --git a/gcc/config/s390/2827.md b/gcc/config/s390/2827.md
index 6aa5f76eca87..d043ebd86004 100644
--- a/gcc/config/s390/2827.md
+++ b/gcc/config/s390/2827.md
@@ -19,11 +19,11 @@
 ;; <http://www.gnu.org/licenses/>.
 
 (define_attr "zEC12_cracked" ""
-  (cond [(eq_attr "mnemonic" "cgdbr,clfxtr,cdgtr,celfbr,cxgtr,clfebr,clc,lngfr,cs,cfxbr,xc,clfdbr,basr,ex,cxlgtr,clfdtr,srdl,lpgfr,cdlgbr,cgxtr,cxlftr,nc,cxftr,cdfbr,clfxbr,cdftr,clgxbr,cgdtr,cxlgbr,mvc,clgdtr,cegbr,cfebr,cdlftr,sldl,cdlgtr,csg,chhsi,clgebr,cxgbr,cxfbr,cdlfbr,cgebr,lzxr,oc,cdgbr,brasl,cgxbr,cxlfbr,clgxtr,exrl,cfdbr,celgbr,clgdbr,lxr,cpsdr,lcgfr,bras,srda,cefbr") (const_int 1)]
+  (cond [(eq_attr "mnemonic" "cgdbr,clfxtr,cdgtr,celfbr,cxgtr,clfebr,clc,lngfr,cs,cfxbr,xc,clfdbr,basr,ex,cxlgtr,clfdtr,lpgfr,cdlgbr,cgxtr,cxlftr,nc,cxftr,cdfbr,clfxbr,cdftr,clgxbr,cgdtr,cxlgbr,mvc,clgdtr,cegbr,cfebr,cdlftr,cdlgtr,csg,chhsi,clgebr,cxgbr,cxfbr,cdlfbr,cgebr,lzxr,oc,cdgbr,brasl,cgxbr,cxlfbr,clgxtr,exrl,cfdbr,celgbr,clgdbr,lxr,cpsdr,lcgfr,bras,cefbr") (const_int 1)]
         (const_int 0)))
 
 (define_attr "zEC12_expanded" ""
-  (cond [(eq_attr "mnemonic" "dlr,dsgr,d,dsgf,stam,dsgfr,dlgr,dsg,cds,dr,stm,mvc,dl,cdsg,stmy,dlg,stmg,lam") (const_int 1)]
+  (cond [(eq_attr "mnemonic" "dsgr,dsgf,stam,dsgfr,dlgr,dsg,mvc,cdsg,dlg,stmg,lam") (const_int 1)]
         (const_int 0)))
 
 (define_attr "zEC12_endgroup" ""
@@ -31,12 +31,12 @@
         (const_int 0)))
 
 (define_attr "zEC12_groupalone" ""
-  (cond [(eq_attr "mnemonic" "lnxbr,madb,ltxtr,clc,axtr,msebr,slbgr,xc,alcr,lpxbr,slbr,maebr,mlg,mfy,lxdtr,maeb,lxeb,nc,mxtr,sxtr,dxbr,alc,msdbr,ltxbr,lxdb,madbr,lxdbr,lxebr,mvc,m,mseb,mlr,mlgr,slb,tcxb,msdb,sqxbr,alcgr,oc,flogr,alcg,mxbr,dxtr,axbr,mr,sxbr,slbg,ml,lcxbr,bcr_flush") (const_int 1)]
+  (cond [(eq_attr "mnemonic" "lnxbr,madb,ltxtr,clc,axtr,msebr,slbgr,xc,alcr,lpxbr,slbr,maebr,mlg,lxdtr,maeb,lxeb,nc,mxtr,sxtr,dxbr,alc,msdbr,ltxbr,lxdb,madbr,lxdbr,lxebr,mvc,mseb,mlgr,slb,tcxb,msdb,sqxbr,alcgr,oc,flogr,alcg,mxbr,dxtr,axbr,sxbr,slbg,lcxbr,bcr_flush") (const_int 1)]
         (const_int 0)))
 
 (define_insn_reservation "zEC12_simple_int" 0
   (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "ltg,ogrk,lr,lghrl,x,asi,lhr,ar,lhrl,llgfr,clghrl,cgr,cli,agrk,ic,lrv,clg,cy,cghi,sy,clgfr,al,tm,lang,lghr,laa,ark,lh,or,icy,xi,n,llihl,afi,cs,nrk,sth,lgr,l,lcr,stey,xg,crt,slgfr,ny,ld,j,llihh,slgr,clfhsi,slg,lb,lgrl,lrl,llihf,llcr,laxg,mvghi,rllg,xrk,laag,alhsik,algfi,algr,aly,agfi,lrvr,d,crl,llgc,tmhl,algsi,lgh,icmh,clhrl,xgrk,icm,iilf,ork,cg,ldgr,lgf,iihf,llghr,sg,stam,tmhh,slgf,basr,lgb,cgfi,lax,clfit,lrvgr,nihl,ni,srdl,srk,xihf,stgrl,sthrl,algf,cgit,ng,lat,llghrl,ltgr,nihh,clgfrl,srlk,agr,ler,bcr_flush,stcy,cds,clfi,nihf,ly,clt,lgat,alg,lhy,lgfrl,clghsi,clrt,tmll,srlg,ay,sty,clr,lgfi,lan,clgt,ahik,sra,algrk,clgr,tmy,tmlh,alghsik,lcgr,mvi,ltgf,xr,larl,ldr,llgcr,clgrt,clrl,cghsi,cliy,oy,ogr,llgt,slr,chi,s,icmy,llc,ngr,clhhsi,ltgfr,llill,lhi,o,sll,clgrl,clgf,mviy,algfr,rll,sldl,lg,niy,st,sgr,ag,le,xgr,cr,stg,llilh,sr,cdsg,sllk,stoc,csg,clgit,chhsi,strl,llilf,lndfr,ngrk,clgfi,llgh,oill,la,llhrl,stc,lghi,oihl,xiy,sllg,llgf,cgrt,cl,sl,oi,oilh,nr,srak,oihh,ear,slgrk,og,c,slgfi,sthy,oilf,oiy,oihf,a,cfi,srag,brasl,alr,cgrl,llgfrl,cit,ley,exrl,lcdfr,lay,xilf,alsi,mvhhi,srl,chsi,lgfr,lrvg,cly,sgrk,ahi,nill,jg,slrk,lxr,sar,slfi,cpsdr,lcgfr,aghik,nilh,mvhi,lpdfr,xy,alrk,lao,agsi,ldy,nilf,llhr,alfi,laog,sly,aghi,bras,srda,lt,lbr,lzxr,lzdr,lzer")) "nothing")
+       (eq_attr "mnemonic" "ltg,ogrk,lr,lghrl,x,asi,lhr,ar,lhrl,llgfr,clghrl,cgr,cli,agrk,ic,lrv,clg,cy,cghi,sy,clgfr,al,tm,lang,lghr,laa,ark,lh,or,icy,xi,n,llihl,afi,cs,nrk,sth,lgr,l,lcr,stey,xg,crt,slgfr,ny,ld,j,llihh,slgr,clfhsi,slg,lb,lgrl,lrl,llihf,llcr,laxg,mvghi,rllg,xrk,laag,alhsik,algfi,algr,aly,agfi,lrvr,crl,llgc,tmhl,algsi,lgh,icmh,clhrl,xgrk,icm,iilf,ork,cg,ldgr,lgf,iihf,llghr,sg,stam,tmhh,slgf,basr,lgb,cgfi,lax,clfit,lrvgr,nihl,ni,srk,xihf,stgrl,sthrl,algf,cgit,ng,lat,llghrl,ltgr,nihh,clgfrl,srlk,agr,ler,bcr_flush,stcy,clfi,nihf,ly,clt,lgat,alg,lhy,lgfrl,clghsi,clrt,tmll,srlg,ay,sty,clr,lgfi,lan,clgt,ahik,sra,algrk,clgr,tmy,tmlh,alghsik,lcgr,mvi,ltgf,xr,larl,ldr,llgcr,clgrt,clrl,cghsi,cliy,oy,ogr,llgt,slr,chi,s,icmy,llc,ngr,clhhsi,ltgfr,llill,lhi,o,sll,clgrl,clgf,mviy,algfr,rll,lg,niy,st,sgr,ag,le,xgr,cr,stg,llilh,sr,cdsg,sllk,stoc,csg,clgit,chhsi,strl,llilf,lndfr,ngrk,clgfi,llgh,oill,la,llhrl,stc,lghi,oihl,xiy,sllg,llgf,cgrt,cl,sl,oi,oilh,nr,srak,oihh,ear,slgrk,og,c,slgfi,sthy,oilf,oiy,oihf,a,cfi,srag,brasl,alr,cgrl,llgfrl,cit,ley,exrl,lcdfr,lay,xilf,alsi,mvhhi,srl,chsi,lgfr,lrvg,cly,sgrk,ahi,nill,jg,slrk,lxr,sar,slfi,cpsdr,lcgfr,aghik,nilh,mvhi,lpdfr,xy,alrk,lao,agsi,ldy,nilf,llhr,alfi,laog,sly,aghi,bras,lt,lbr,lzxr,lzdr,lzer")) "nothing")
 
 (define_insn_reservation "zEC12_simple_fp" 0
   (and (eq_attr "cpu" "zEC12")
@@ -74,10 +74,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "mhy")) "nothing")
 
-(define_insn_reservation "zEC12_dlr" 25
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "dlr")) "nothing")
-
 (define_insn_reservation "zEC12_ltxtr" 18
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "ltxtr")) "nothing")
@@ -142,10 +138,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "cgf")) "nothing")
 
-(define_insn_reservation "zEC12_lmy" 0
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "lmy")) "nothing")
-
 (define_insn_reservation "zEC12_std" 3
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "std")) "nothing")
@@ -222,10 +214,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "ex")) "nothing")
 
-(define_insn_reservation "zEC12_mfy" 7
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "mfy")) "nothing")
-
 (define_insn_reservation "zEC12_cxlgtr" 4
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "cxlgtr")) "nothing")
@@ -338,10 +326,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "ltxbr")) "nothing")
 
-(define_insn_reservation "zEC12_dr" 16
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "dr")) "nothing")
-
 (define_insn_reservation "zEC12_lxdb" 3
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "lxdb")) "nothing")
@@ -362,10 +346,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "agf")) "nothing")
 
-(define_insn_reservation "zEC12_lm" 0
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "lm")) "nothing")
-
 (define_insn_reservation "zEC12_msgfr" 6
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "msgfr")) "nothing")
@@ -374,10 +354,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "lxdbr")) "nothing")
 
-(define_insn_reservation "zEC12_stm" 0
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "stm")) "nothing")
-
 (define_insn_reservation "zEC12_cgdtr" 2
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "cgdtr")) "nothing")
@@ -398,10 +374,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "sqdbr")) "nothing")
 
-(define_insn_reservation "zEC12_dl" 25
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "dl")) "nothing")
-
 (define_insn_reservation "zEC12_cfebr" 2
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "cfebr")) "nothing")
@@ -414,10 +386,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "lnr")) "nothing")
 
-(define_insn_reservation "zEC12_m" 7
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "m")) "nothing")
-
 (define_insn_reservation "zEC12_ipm" 3
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "ipm")) "nothing")
@@ -434,10 +402,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "ddbr")) "nothing")
 
-(define_insn_reservation "zEC12_stmy" 0
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "stmy")) "nothing")
-
 (define_insn_reservation "zEC12_ste" 4
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "ste")) "nothing")
@@ -446,10 +410,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "ahy")) "nothing")
 
-(define_insn_reservation "zEC12_mlr" 7
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "mlr")) "nothing")
-
 (define_insn_reservation "zEC12_sqeb" 29
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "sqeb")) "nothing")
@@ -562,10 +522,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "axbr")) "nothing")
 
-(define_insn_reservation "zEC12_mr" 7
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "mr")) "nothing")
-
 (define_insn_reservation "zEC12_stmg" 0
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "stmg")) "nothing")
@@ -598,10 +554,6 @@
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "slbg")) "nothing")
 
-(define_insn_reservation "zEC12_ml" 7
-  (and (eq_attr "cpu" "zEC12")
-       (eq_attr "mnemonic" "ml")) "nothing")
-
 (define_insn_reservation "zEC12_lam" 0
   (and (eq_attr "cpu" "zEC12")
        (eq_attr "mnemonic" "lam")) "nothing")
diff --git a/gcc/config/s390/2964.md b/gcc/config/s390/2964.md
index 6abdf2199755..91d58fd16b55 100644
--- a/gcc/config/s390/2964.md
+++ b/gcc/config/s390/2964.md
@@ -31,7 +31,7 @@ icmy,icy,iihf,iilf,ipm,la,larl,lay,lb,lbr,lcgr,lcr,lgb,lgbr,lgf,lgfi,lgfr,\
 lgfrl,lgh,lghi,lghr,lghrl,lgr,lh,lhi,lhr,lhrl,lhy,llcr,llgfr,llghr,llgtr,\
 llhr,llihf,llihh,llihl,llilf,llilh,llill,lngr,lnr,loc,locg,locghi,locgr,\
 lochi,locr,lpgr,lpr,lr,lrv,lrvg,lrvgr,lrvh,lrvr,lt,ltg,ltgf,ltgfr,ltgr,ltr,\
-m,mfy,mghi,mh,mhi,mhy,ml,mlg,mlgr,mlr,mr,ms,msfi,msg,msgf,msgfi,msgfr,\
+mghi,mh,mhi,mhy,mlg,mlgr,ms,msfi,msg,msgf,msgfi,msgfr,\
 msgr,msr,msy,n,ng,ngr,ngrk,nihf,nihh,nihl,nilf,nilh,nill,nr,nrk,ny,o,og,\
 ogr,ogrk,oihf,oihh,oihl,oilf,oilh,oill,or,ork,oy,pfpo,popcnt,ppa,risbg,\
 risbgn,rll,rllg,s,sg,sgf,sgfr,sgr,sgrk,sh,shy,sl,slb,slbg,slbgr,slbr,slfi,\
@@ -53,7 +53,7 @@ xiy")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z13_unit_fxd" ""
-(cond [(eq_attr "mnemonic" "dlgr,dlr,dr,dsgfr,dsgr")
+(cond [(eq_attr "mnemonic" "dlgr,dsgfr,dsgr")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z13_unit_lsu" ""
@@ -63,8 +63,8 @@ chsi,chy,cl,clc,clfhsi,clg,clgf,clgfrl,clghsi,clgrl,clgt,clhhsi,clhrl,cli,\
 cliy,clm,clmy,clrl,clt,cly,crl,cy,ddb,deb,ear,ic,icm,icmh,icmy,icy,l,laa,\
 laag,lan,lang,lao,laog,lat,lax,laxg,lb,lcbb,ld,lde,ldeb,ldy,le,ley,lg,lgat,\
 lgb,lgf,lgfrl,lgh,lghrl,lgrl,lh,lhrl,lhy,llc,llgc,llgf,llgfrl,llgh,llghrl,\
-llgt,llh,llhrl,loc,locg,lrl,lrv,lrvg,lrvh,lt,ltg,ltgf,ly,m,madb,maeb,meeb,\
-mfy,mh,mhy,ml,mlg,ms,msdb,mseb,msg,msgf,msy,mvghi,mvhhi,mvhi,mvi,mviy,n,\
+llgt,llh,llhrl,loc,locg,lrl,lrv,lrvg,lrvh,lt,ltg,ltgf,ly,madb,maeb,meeb,\
+mh,mhy,mlg,ms,msdb,mseb,msg,msgf,msy,mvghi,mvhhi,mvhi,mvi,mviy,n,\
 ng,ni,niy,ntstg,ny,o,og,oi,oiy,oy,s,sar,sdb,seb,sfpc,sg,sgf,sh,shy,sl,\
 slb,slbg,slg,slgf,sly,sqdb,sqeb,st,stc,stcy,std,stdy,ste,stey,stg,stgrl,\
 sth,sthrl,sthy,stoc,stocg,strl,strv,strvg,strvh,sty,sy,tabort,tm,tmy,vl,\
@@ -117,21 +117,21 @@ kdtr,kxtr,wfkdb,wfksb")
 (cond [(eq_attr "mnemonic" "bas,basr,cdfbr,cdftr,cdgbr,cdgtr,cdlfbr,\
 cdlftr,cdlgbr,cdlgtr,cefbr,cegbr,celfbr,celgbr,cfdbr,cfebr,cfxbr,cgdbr,cgdtr,\
 cgebr,cgxbr,cgxtr,chhsi,clfdbr,clfebr,clfxbr,clfxtr,clgdbr,clgdtr,clgebr,\
-clgxbr,clgxtr,cs,csg,csy,d,efpc,ex,lcgfr,lngfr,lpgfr,lpq,lxr,lzxr,rnsbg,\
+clgxbr,clgxtr,cs,csg,csy,efpc,ex,lcgfr,lngfr,lpgfr,lpq,lxr,lzxr,rnsbg,\
 rosbg,rxsbg,stpq,vgef,vgeg,vscef,vsceg,vsteb")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z13_expanded" ""
-(cond [(eq_attr "mnemonic" "cds,cdsg,cdsy,cxfbr,cxftr,cxgbr,cxgtr,\
-cxlftr,cxlgbr,cxlgtr,dl,dlg,dsg,dsgf,lam,lm,lmg,lmy,sldl,srda,srdl,stam,stm,\
-stmg,stmy,tbegin,tbeginc")
+(cond [(eq_attr "mnemonic" "cdsg,cxfbr,cxftr,cxgbr,cxgtr,\
+cxlftr,cxlgbr,cxlgtr,dlg,dsg,dsgf,lam,lmg,stam,\
+stmg,tbegin,tbeginc")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z13_groupalone" ""
 (cond [(eq_attr "mnemonic" "alc,alcg,alcgr,alcr,axbr,axtr,clc,cxbr,\
-cxtr,dlgr,dlr,dr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\
-lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,m,madb,maeb,maebr,mfy,ml,mlg,\
-mlgr,mlr,mr,msdb,mseb,msebr,mvc,mxbr,mxtr,oc,sfpc,slb,slbg,slbgr,slbr,\
+cxtr,dlgr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\
+lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,madb,maeb,maebr,mlg,\
+mlgr,msdb,mseb,msebr,mvc,mxbr,mxtr,oc,sfpc,slb,slbg,slbgr,slbr,\
 sqxbr,sxbr,sxtr,tabort,tcxb,tdcxt,tend,xc,kxbr,kxtr")
  (const_int 1)] (const_int 0)))
 
@@ -159,8 +159,8 @@ lgr,lh,lhi,lhr,lhrl,lhy,llcr,llgfr,llghr,llgtr,llhr,llihf,llihh,llihl,\
 llilf,llilh,llill,lndfr,lpdfr,lr,lrv,lrvg,lrvgr,lrvh,lrvr,lt,ltg,ltgf,ltgfr,\
 ltgr,ltr,lzdr,lzer,n,ng,ngr,ngrk,nihf,nihh,nihl,nilf,nilh,nill,nop,nopr,nr,\
 nrk,ny,o,og,ogr,ogrk,oihf,oihh,oihl,oilf,oilh,oill,or,ork,oy,pfpo,ppa,\
-risbg,risbgn,rll,rllg,s,sg,sgr,sgrk,sl,sldl,slfi,slg,slgf,slgfi,slgfr,slgr,\
-slgrk,sll,sllg,sllk,slr,slrk,sly,sr,sra,srag,srak,srda,srdl,srl,srlg,srlk,\
+risbg,risbgn,rll,rllg,s,sg,sgr,sgrk,sl,slfi,slg,slgf,slgfi,slgfr,slgr,\
+slgrk,sll,sllg,sllk,slr,slrk,sly,sr,sra,srag,srak,srl,srlg,srlk,\
 sy,tm,tmh,tmhh,tmhl,tml,tmlh,tmll,tmy,vlr,vlvgb,vlvgf,vlvgg,vlvgh,x,xg,\
 xgr,xgrk,xihf,xilf,xr,xrk,xy")) "nothing")
 
@@ -192,8 +192,8 @@ wfchxb,wflcdb,wflcsb,wflcxb,wflndb,wflnsb,wflnxb,wflpdb,wflpsb,wflpxb,xi,xiy"))
 (define_insn_reservation "z13_2" 2
   (and (eq_attr "cpu" "z13")
 (eq_attr "mnemonic" "cdb,cdbr,cebr,ear,ipm,l,lcbb,lcdbr,lcebr,ld,lde,\
-ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lm,lmg,\
-lmy,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\
+ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lmg,\
+lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\
 vceqbs,vceqfs,vceqgs,vceqhs,vchbs,vchfs,vchgs,vchhs,vchlbs,vchlfs,vchlgs,\
 vchlhs,vfcedbs,vfcesbs,vfchdbs,vfchedbs,vfchesbs,vfchsbs,vfeeb,vfeef,vfeeh,\
 vfeneb,vfenef,vfeneh,vfenezb,vfenezf,vfenezh,vftcidb,vftcisb,vistrb,vistrf,\
@@ -203,7 +203,7 @@ wfchexbs,wfchxbs,wfcsb,kebr,kdb,kdbr,wfkdb,wfksb")) "nothing")
 
 (define_insn_reservation "z13_3" 3
   (and (eq_attr "cpu" "z13")
-(eq_attr "mnemonic" "cds,cdsy,std,stdy,ste,stey,vcksm,vfeezbs,\
+(eq_attr "mnemonic" "std,stdy,ste,stey,vcksm,vfeezbs,\
 vfeezhs,vgfmab,vgfmaf,vgfmag,vgfmah,vgfmb,vgfmf,vgfmg,vgfmh,vistrbs,vistrfs,\
 vl,vlbb,vlgvf,vlgvg,vlgvh,vll,vmaeb,vmaef,vmaeh,vmahb,vmahf,vmahh,vmalb,\
 vmaleb,vmalef,vmaleh,vmalf,vmalhb,vmalhf,vmalhh,vmalhw,vmalob,vmalof,vmaloh,\
@@ -219,8 +219,8 @@ mh,mhi,mhy,mvc,oc,tabort,tbegin,tbeginc,tend,vst,vstl,xc")) "nothing")
 (define_insn_reservation "z13_5" 5
   (and (eq_attr "cpu" "z13")
 (eq_attr "mnemonic" "alc,alcg,alcgr,alcr,cs,csg,csy,lngfr,lpgfr,ms,\
-msfi,msgf,msgfi,msgfr,msr,msy,rnsbg,rosbg,rxsbg,slb,slbg,slbgr,slbr,stm,\
-stmg,stmy")) "nothing")
+msfi,msgf,msgfi,msgfr,msr,msy,rnsbg,rosbg,rxsbg,slb,slbg,slbgr,slbr,\
+stmg")) "nothing")
 
 (define_insn_reservation "z13_6" 6
   (and (eq_attr "cpu" "z13")
@@ -246,7 +246,7 @@ vfmsdb,vfmssb,vfsdb,vfssb,vldeb,vledb,kdtr")) "nothing")
 (define_insn_reservation "z13_10" 10
   (and (eq_attr "cpu" "z13")
 (eq_attr "mnemonic" "cdfbr,cdgbr,cdlfbr,cdlgbr,cefbr,cegbr,celfbr,\
-celgbr,flogr,m,madb,maeb,maebr,mfy,ml,mlr,mr,msdb,mseb,msebr")) "nothing")
+celgbr,flogr,madb,maeb,maebr,msdb,mseb,msebr")) "nothing")
 
 (define_insn_reservation "z13_11" 11
   (and (eq_attr "cpu" "z13")
@@ -269,7 +269,7 @@ ltxbr,ltxtr,lxdtr,sxbr,sxtr")) "nothing")
 (define_insn_reservation "z13_20" 20
   (and (eq_attr "cpu" "z13")
 (eq_attr "mnemonic" "cdftr,cdgtr,cdlftr,cdlgtr,cgdtr,cgxtr,clfxtr,\
-clgdtr,clgxtr,cxftr,cxgtr,cxlftr,cxlgtr,d,ddb,ddbr,ddtr,deb,debr,dl,dlg,dlgr,\
-dlr,dr,dsg,dsgf,dsgfr,dsgr,dxbr,dxtr,efpc,mdtr,mxbr,mxtr,sqdb,sqdbr,sqeb,\
+clgdtr,clgxtr,cxftr,cxgtr,cxlftr,cxlgtr,ddb,ddbr,ddtr,deb,debr,dlg,dlgr,\
+dsg,dsgf,dsgfr,dsgr,dxbr,dxtr,efpc,mdtr,mxbr,mxtr,sqdb,sqdbr,sqeb,\
 sqebr,sqxbr,vfddb,vfdsb,vfsqdb,vfsqsb,wfddb,wfdsb,wfdxb,wfsqdb,wfsqxb")) "nothing")
 
diff --git a/gcc/config/s390/3906.md b/gcc/config/s390/3906.md
index d3033c6ae472..02692cbf83d9 100644
--- a/gcc/config/s390/3906.md
+++ b/gcc/config/s390/3906.md
@@ -31,7 +31,7 @@ icmh,icmy,icy,iihf,iilf,ipm,la,larl,lay,lb,lbr,lcgr,lcr,lgb,lgbr,lgf,lgfi,\
 lgfr,lgfrl,lgh,lghi,lghr,lghrl,lgr,lh,lhi,lhr,lhrl,lhy,llcr,llgfr,llghr,\
 llgtr,llhr,llihf,llihh,llihl,llilf,llilh,llill,lngr,lnr,loc,locg,locghi,\
 locgr,lochi,locr,lpgr,lpr,lr,lrv,lrvg,lrvgr,lrvh,lrvr,lt,ltg,ltgf,ltgfr,\
-ltgr,ltr,m,mfy,mg,mgh,mghi,mgrk,mh,mhi,mhy,ml,mlg,mlgr,mlr,mr,ms,msfi,msg,\
+ltgr,ltr,mg,mgh,mghi,mgrk,mh,mhi,mhy,mlg,mlgr,ms,msfi,msg,\
 msgf,msgfi,msgfr,msgr,msgrkc,msr,msrkc,msy,n,ng,ngr,ngrk,nihf,nihh,nihl,\
 nilf,nilh,nill,nr,nrk,ny,o,og,ogr,ogrk,oihf,oihh,oihl,oilf,oilh,oill,or,\
 ork,oy,pfpo,popcnt,risbg,risbgn,rll,rllg,s,sg,sgf,sgfr,sgh,sgr,sgrk,sh,\
@@ -54,7 +54,7 @@ vstrl,vstrlr,xi,xiy")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z14_unit_fxd" ""
-(cond [(eq_attr "mnemonic" "dlgr,dlr,dr,dsgfr,dsgr")
+(cond [(eq_attr "mnemonic" "dlgr,dsgfr,dsgr")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z14_unit_lsu" ""
@@ -64,8 +64,8 @@ chrl,chsi,chy,cl,clc,clfhsi,clg,clgf,clgfrl,clghsi,clgrl,clgt,clhhsi,clhrl,\
 cli,cliy,clm,clmy,clrl,clt,cly,crl,cy,ddb,deb,ear,ic,icm,icmh,icmy,icy,l,\
 laa,laag,lan,lang,lao,laog,lat,lax,laxg,lb,lcbb,ld,lde,ldeb,ldy,le,ley,lg,\
 lgat,lgb,lgf,lgfrl,lgh,lghrl,lgrl,lh,lhrl,lhy,llc,llgc,llgf,llgfrl,llgh,\
-llghrl,llgt,llh,llhrl,loc,locg,lrl,lrv,lrvg,lrvh,lt,ltg,ltgf,ly,m,madb,maeb,\
-meeb,mfy,mg,mgh,mh,mhy,ml,mlg,ms,msdb,mseb,msg,msgf,msy,mvghi,mvhhi,mvhi,\
+llghrl,llgt,llh,llhrl,loc,locg,lrl,lrv,lrvg,lrvh,lt,ltg,ltgf,ly,madb,maeb,\
+meeb,mg,mgh,mh,mhy,mlg,ms,msdb,mseb,msg,msgf,msy,mvghi,mvhhi,mvhi,\
 mvi,mviy,n,ng,ni,niy,ntstg,ny,o,og,oi,oiy,oy,s,sar,sdb,seb,sfpc,sg,sgf,\
 sgh,sh,shy,sl,slb,slbg,slg,slgf,sly,sqdb,sqeb,st,stc,stcy,std,stdy,ste,\
 stey,stg,stgrl,sth,sthrl,sthy,stoc,stocg,strl,strv,strvg,strvh,sty,sy,\
@@ -121,21 +121,21 @@ vfkedb,vfkhsb,vfkhdb,wfkhxb,vfkhesb,vfkhedb,wfkhexb")
 (cond [(eq_attr "mnemonic" "bas,basr,cdfbr,cdftr,cdgbr,cdgtr,cdlfbr,\
 cdlftr,cdlgbr,cdlgtr,cefbr,cegbr,celfbr,celgbr,cfdbr,cfebr,cfxbr,cgdbr,cgdtr,\
 cgebr,cgxbr,cgxtr,chhsi,clfdbr,clfebr,clfxbr,clfxtr,clgdbr,clgdtr,clgebr,\
-clgxbr,clgxtr,cs,csg,csy,d,efpc,ex,lcgfr,lngfr,lpgfr,lpq,lxr,lzxr,rxsbg,stpq,\
+clgxbr,clgxtr,cs,csg,csy,efpc,ex,lcgfr,lngfr,lpgfr,lpq,lxr,lzxr,rxsbg,stpq,\
 vgef,vgeg,vscef,vsceg,vsteb")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z14_expanded" ""
-(cond [(eq_attr "mnemonic" "cds,cdsg,cdsy,cxfbr,cxftr,cxgbr,cxgtr,\
-cxlftr,cxlgbr,cxlgtr,dl,dlg,dsg,dsgf,lam,lm,lmg,lmy,sldl,srda,srdl,stam,stm,\
-stmg,stmy,tbegin,tbeginc")
+(cond [(eq_attr "mnemonic" "cdsg,cxfbr,cxftr,cxgbr,cxgtr,\
+cxlftr,cxlgbr,cxlgtr,dlg,dsg,dsgf,lam,lmg,stam,\
+stmg,tbegin,tbeginc")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z14_groupalone" ""
 (cond [(eq_attr "mnemonic" "alc,alcg,alcgr,alcr,axbr,axtr,clc,cxbr,\
-cxtr,dlgr,dlr,dr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\
-lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,m,madb,maeb,maebr,mfy,mg,mgrk,\
-ml,mlg,mlgr,mlr,mr,msdb,mseb,msebr,mvc,mxbr,mxtr,oc,ppa,sfpc,slb,slbg,\
+cxtr,dlgr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\
+lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,madb,maeb,maebr,mg,mgrk,\
+mlg,mlgr,msdb,mseb,msebr,mvc,mxbr,mxtr,oc,ppa,sfpc,slb,slbg,\
 slbgr,slbr,sqxbr,sxbr,sxtr,tabort,tcxb,tdcxt,tend,xc,kxbr,kxtr")
  (const_int 1)] (const_int 0)))
 
@@ -165,8 +165,8 @@ llihl,llilf,llilh,llill,lndfr,lngr,lnr,lpdfr,lpgr,lpr,lr,lrv,lrvg,lrvgr,\
 lrvh,lrvr,lt,ltg,ltgf,ltgfr,ltgr,ltr,lzdr,lzer,n,ng,ngr,ngrk,nihf,nihh,\
 nihl,nilf,nilh,nill,nop,nopr,nr,nrk,ny,o,og,ogr,ogrk,oihf,oihh,oihl,oilf,\
 oilh,oill,or,ork,oy,pfpo,risbg,risbgn,rll,rllg,rnsbg,rosbg,s,sg,sgr,sgrk,\
-sl,sldl,slfi,slg,slgf,slgfi,slgfr,slgr,slgrk,sll,sllg,sllk,slr,slrk,sly,\
-sr,sra,srag,srak,srda,srdl,srl,srlg,srlk,sy,tm,tmh,tmhh,tmhl,tml,tmlh,\
+sl,slfi,slg,slgf,slgfi,slgfr,slgr,slgrk,sll,sllg,sllk,slr,slrk,sly,\
+sr,sra,srag,srak,srl,srlg,srlk,sy,tm,tmh,tmhh,tmhl,tml,tmlh,\
 tmll,tmy,vlr,vlvgb,vlvgf,vlvgg,vlvgh,x,xg,xgr,xgrk,xihf,xilf,xr,xrk,xy")) "nothing")
 
 (define_insn_reservation "z14_1" 1
@@ -199,8 +199,8 @@ vfkesb,vfkedb,vfkhsb,vfkhdb,wfkhxb,vfkhesb,vfkhedb,wfkhexb")) "nothing")
 (define_insn_reservation "z14_2" 2
   (and (eq_attr "cpu" "z14")
 (eq_attr "mnemonic" "cdb,cdbr,cebr,ear,ipm,l,lcbb,lcdbr,lcebr,ld,lde,\
-ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lm,lmg,\
-lmy,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\
+ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lmg,\
+lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\
 vceqbs,vceqfs,vceqgs,vceqhs,vchbs,vchfs,vchgs,vchhs,vchlbs,vchlfs,vchlgs,\
 vchlhs,vfcedbs,vfcesbs,vfchdbs,vfchedbs,vfchesbs,vfchsbs,vfeeb,vfeef,vfeeh,\
 vfeneb,vfenef,vfeneh,vfenezb,vfenezf,vfenezh,vftcidb,vftcisb,vistrb,vistrf,\
@@ -210,7 +210,7 @@ wfcexbs,wfchexbs,wfchxbs,wfcsb,kebr,kdb,kdbr,wfkdb,wfksb")) "nothing")
 
 (define_insn_reservation "z14_3" 3
   (and (eq_attr "cpu" "z14")
-(eq_attr "mnemonic" "cds,cdsy,mgh,mghi,mh,mhi,mhy,std,stdy,ste,stey,\
+(eq_attr "mnemonic" "mgh,mghi,mh,mhi,mhy,std,stdy,ste,stey,\
 vcksm,vfeezbs,vfeezhs,vgfmab,vgfmaf,vgfmag,vgfmah,vgfmb,vgfmf,vgfmg,vgfmh,\
 vistrbs,vistrfs,vl,vlbb,vll,vlrlr,vmaeb,vmaef,vmaeh,vmahb,vmahf,vmahh,vmalb,\
 vmaleb,vmalef,vmaleh,vmalf,vmalhb,vmalhf,vmalhh,vmalhw,vmalob,vmalof,vmaloh,\
@@ -227,7 +227,7 @@ tbeginc,tend,vst,vstl,vstrl,vstrlr,xc")) "nothing")
 (define_insn_reservation "z14_5" 5
   (and (eq_attr "cpu" "z14")
 (eq_attr "mnemonic" "alc,alcg,alcgr,alcr,cs,csg,csy,msrkc,slb,slbg,\
-slbgr,slbr,stm,stmg,stmy")) "nothing")
+slbgr,slbr,stmg")) "nothing")
 
 (define_insn_reservation "z14_6" 6
   (and (eq_attr "cpu" "z14")
@@ -249,7 +249,7 @@ vfasb,vfisb,vfmasb,vfmsb,vfmssb,vfnmssb,vfssb,vgef,vgeg,wflld,kdtr"))
 
 (define_insn_reservation "z14_9" 9
   (and (eq_attr "cpu" "z14")
-(eq_attr "mnemonic" "cxfbr,cxgbr,cxlgbr,m,mfy,ml,mlr,mr,stam,wfaxb,\
+(eq_attr "mnemonic" "cxfbr,cxgbr,cxlgbr,stam,wfaxb,\
 wfixb,wfsxb")) "nothing")
 
 (define_insn_reservation "z14_10" 10
@@ -278,8 +278,8 @@ ltxbr,ltxtr,lxdtr,sxbr,sxtr")) "nothing")
 (define_insn_reservation "z14_20" 20
   (and (eq_attr "cpu" "z14")
 (eq_attr "mnemonic" "cdftr,cdgtr,cdlftr,cdlgtr,cgdtr,cgxtr,clfxtr,\
-clgdtr,clgxtr,cxftr,cxgtr,cxlftr,cxlgtr,d,ddb,ddbr,ddtr,deb,debr,dl,dlg,dlgr,\
-dlr,dr,dsg,dsgf,dsgfr,dsgr,dxbr,dxtr,efpc,mdtr,mxbr,mxtr,sqdb,sqdbr,sqeb,\
+clgdtr,clgxtr,cxftr,cxgtr,cxlftr,cxlgtr,ddb,ddbr,ddtr,deb,debr,dlg,dlgr,\
+dsg,dsgf,dsgfr,dsgr,dxbr,dxtr,efpc,mdtr,mxbr,mxtr,sqdb,sqdbr,sqeb,\
 sqebr,sqxbr,vfddb,vfdsb,vfsqdb,vfsqsb,wfddb,wfdsb,wfdxb,wfmaxb,wfmsxb,wfmxb,\
 wfnmaxb,wfnmsxb,wfsqdb,wfsqxb")) "nothing")
 
diff --git a/gcc/config/s390/3931.md b/gcc/config/s390/3931.md
index c5b93f8d0db1..11c67ab6fd2f 100644
--- a/gcc/config/s390/3931.md
+++ b/gcc/config/s390/3931.md
@@ -149,8 +149,6 @@ ltgf,
 ltgfr,
 ltgr,
 ltr,
-m,
-mfy,
 mg,
 mgh,
 mghi,
@@ -158,11 +156,8 @@ mgrk,
 mh,
 mhi,
 mhy,
-ml,
 mlg,
 mlgr,
-mlr,
-mr,
 ms,
 msc,
 msfi,
@@ -426,8 +421,6 @@ xiy"
 (define_attr "z16_unit_fxd" ""
 (cond [(eq_attr "mnemonic"
 "dlgr,
-dlr,
-dr,
 dsgfr,
 dsgr"
 )
@@ -547,17 +540,14 @@ lt,
 ltg,
 ltgf,
 ly,
-m,
 madb,
 maeb,
 mdb,
 meeb,
-mfy,
 mg,
 mgh,
 mh,
 mhy,
-ml,
 mlg,
 ms,
 msc,
@@ -1233,7 +1223,6 @@ clgxtr,
 cs,
 csg,
 csy,
-d,
 efpc,
 ex,
 lcgfr,
@@ -1256,9 +1245,7 @@ vsteh"
 
 (define_attr "z16_expanded" ""
 (cond [(eq_attr "mnemonic"
-"cds,
-cdsg,
-cdsy,
+"cdsg,
 cxfbr,
 cxftr,
 cxgbr,
@@ -1267,21 +1254,13 @@ cxlfbr,
 cxlftr,
 cxlgbr,
 cxlgtr,
-dl,
 dlg,
 dsg,
 dsgf,
 lam,
-lm,
 lmg,
-lmy,
-sldl,
-srda,
-srdl,
 stam,
-stm,
 stmg,
-stmy,
 tbegin,
 tbeginc"
 )
@@ -1299,8 +1278,6 @@ clc,
 cxbr,
 cxtr,
 dlgr,
-dlr,
-dr,
 dsgfr,
 dsgr,
 dxbr,
@@ -1321,18 +1298,13 @@ lxdbr,
 lxdtr,
 lxeb,
 lxebr,
-m,
 madb,
 maeb,
 maebr,
-mfy,
 mg,
 mgrk,
-ml,
 mlg,
 mlgr,
-mlr,
-mr,
 msdb,
 mseb,
 msebr,
@@ -1620,7 +1592,6 @@ sg,
 sgr,
 sgrk,
 sl,
-sldl,
 slfi,
 slg,
 slgf,
@@ -1638,8 +1609,6 @@ sr,
 sra,
 srag,
 srak,
-srda,
-srdl,
 srk,
 srl,
 srlg,
@@ -2028,9 +1997,7 @@ llghrl,
 llgt,
 llh,
 llhrl,
-lm,
 lmg,
-lmy,
 lndbr,
 lnebr,
 lpdbr,
@@ -2117,9 +2084,7 @@ wftcixb"
 (define_insn_reservation "z16_3" 3
   (and (eq_attr "cpu" "z16")
 (eq_attr "mnemonic"
-"cds,
-cdsy,
-mgh,
+"mgh,
 mghi,
 mh,
 mhi,
@@ -2290,9 +2255,7 @@ slb,
 slbg,
 slbgr,
 slbr,
-stm,
 stmg,
-stmy,
 vcdgb,
 vcdlgb,
 vcefb,
@@ -2398,14 +2361,9 @@ cxfbr,
 cxgbr,
 cxlfbr,
 cxlgbr,
-m,
 madb,
 maeb,
 maebr,
-mfy,
-ml,
-mlr,
-mr,
 msdb,
 mseb,
 msebr,
@@ -2505,17 +2463,13 @@ clgdtr,
 clgxtr,
 cxgtr,
 cxlgtr,
-d,
 ddb,
 ddbr,
 ddtr,
 deb,
 debr,
-dl,
 dlg,
 dlgr,
-dlr,
-dr,
 dsg,
 dsgf,
 dsgfr,
diff --git a/gcc/config/s390/8561.md b/gcc/config/s390/8561.md
index 07797001f2d9..2c49094c2349 100644
--- a/gcc/config/s390/8561.md
+++ b/gcc/config/s390/8561.md
@@ -30,8 +30,8 @@ ic,icm,icmh,icmy,icy,iihf,iilf,ipm,la,larl,lay,lb,lbr,lcgr,lcr,lgb,lgbr,\
 lgf,lgfi,lgfr,lgfrl,lgh,lghi,lghr,lghrl,lgr,lh,lhi,lhr,lhrl,lhy,llcr,\
 llgcr,llgfr,llghr,llgtr,llhr,llihf,llihh,llihl,llilf,llilh,llill,lngr,lnr,\
 loc,locg,locghi,locgr,lochi,locr,lpgr,lpr,lr,lrv,lrvg,lrvgr,lrvh,lrvr,lt,\
-ltg,ltgf,ltgfr,ltgr,ltr,m,mfy,mg,mgh,mghi,mgrk,mh,mhi,mhy,ml,mlg,mlgr,mlr,\
-mr,ms,msfi,msg,msgf,msgfi,msgfr,msgr,msgrkc,msr,msrkc,msy,n,ng,ngr,ngrk,\
+ltg,ltgf,ltgfr,ltgr,ltr,mg,mgh,mghi,mgrk,mh,mhi,mhy,mlg,mlgr,\
+ms,msfi,msg,msgf,msgfi,msgfr,msgr,msgrkc,msr,msrkc,msy,n,ng,ngr,ngrk,\
 nihf,nihh,nihl,nilf,nilh,nill,nr,nrk,ny,o,og,ogr,ogrk,oihf,oihh,oihl,oilf,\
 oilh,oill,or,ork,oy,pfpo,popcnt,risbg,risbgn,rll,rllg,s,sg,sgf,sgfr,sgh,\
 sgr,sgrk,sh,shy,sl,slb,slbg,slbgr,slbr,slfi,slg,slgf,slgfi,slgfr,slgr,\
@@ -53,7 +53,7 @@ vlvgp,vst,vstef,vsteg,vstl,vstrl,vstrlr,xi,xiy")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z15_unit_fxd" ""
-(cond [(eq_attr "mnemonic" "dlgr,dlr,dr,dsgfr,dsgr")
+(cond [(eq_attr "mnemonic" "dlgr,dsgfr,dsgr")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z15_unit_lsu" ""
@@ -64,7 +64,7 @@ clgt,clhhsi,clhrl,cli,cliy,clm,clmy,clrl,clt,cly,crl,cy,ddb,deb,ear,ic,icm,\
 icmh,icmy,icy,l,laa,laag,lan,lang,lao,laog,lat,lax,laxg,lb,lcbb,ld,lde,\
 ldeb,ldy,le,ley,lg,lgat,lgb,lgf,lgfrl,lgh,lghrl,lgrl,lh,lhrl,lhy,llc,llgc,\
 llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,loc,locg,lrl,lrv,lrvg,lrvh,lt,ltg,\
-ltgf,ly,m,madb,maeb,mdb,meeb,mfy,mg,mgh,mh,mhy,ml,mlg,ms,msdb,mseb,msg,\
+ltgf,ly,madb,maeb,mdb,meeb,mg,mgh,mh,mhy,mlg,ms,msdb,mseb,msg,\
 msgf,msy,mvghi,mvhhi,mvhi,mvi,mviy,n,ng,ni,niy,ntstg,ny,o,og,oi,oiy,oy,s,\
 sar,sdb,seb,sfpc,sg,sgf,sgh,sh,shy,sl,slb,slbg,slg,slgf,sly,sqdb,sqeb,st,\
 stc,stcy,std,stdy,ste,stey,stg,stgrl,sth,sthrl,sthy,stoc,stocg,strl,strv,\
@@ -121,21 +121,21 @@ vfkhedb,wfkhexb")
 (cond [(eq_attr "mnemonic" "bas,basr,cdfbr,cdftr,cdgbr,cdgtr,cdlfbr,\
 cdlftr,cdlgbr,cdlgtr,cefbr,cegbr,celfbr,celgbr,cfdbr,cfebr,cfxbr,cgdbr,cgdtr,\
 cgebr,cgxbr,cgxtr,chhsi,clfdbr,clfdtr,clfebr,clfxbr,clfxtr,clgdbr,clgdtr,\
-clgebr,clgxbr,clgxtr,cs,csg,csy,d,efpc,ex,lcgfr,lngfr,lpgfr,lpq,lxr,lzxr,\
+clgebr,clgxbr,clgxtr,cs,csg,csy,efpc,ex,lcgfr,lngfr,lpgfr,lpq,lxr,lzxr,\
 rxsbg,stpq,vgef,vgeg,vscef,vsceg,vsteb,vsteh")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z15_expanded" ""
-(cond [(eq_attr "mnemonic" "cds,cdsg,cdsy,cxfbr,cxftr,cxgbr,cxgtr,\
-cxlfbr,cxlftr,cxlgbr,cxlgtr,dl,dlg,dsg,dsgf,lam,lm,lmg,lmy,sldl,srda,srdl,\
-stam,stm,stmg,stmy,tbegin,tbeginc")
+(cond [(eq_attr "mnemonic" "cdsg,cxfbr,cxftr,cxgbr,cxgtr,\
+cxlfbr,cxlftr,cxlgbr,cxlgtr,dlg,dsg,dsgf,lam,lmg,\
+stam,stmg,tbegin,tbeginc")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z15_groupalone" ""
 (cond [(eq_attr "mnemonic" "alc,alcg,alcgr,alcr,axbr,axtr,clc,cxbr,\
-cxtr,dlgr,dlr,dr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\
-lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,m,madb,maeb,maebr,mfy,mg,mgrk,\
-ml,mlg,mlgr,mlr,mr,msdb,mseb,msebr,mvc,mxbr,mxtr,nc,oc,ppa,sfpc,slb,slbg,\
+cxtr,dlgr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\
+lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,madb,maeb,maebr,mg,mgrk,\
+mlg,mlgr,msdb,mseb,msebr,mvc,mxbr,mxtr,nc,oc,ppa,sfpc,slb,slbg,\
 slbgr,slbr,sqxbr,sxbr,sxtr,tabort,tcxb,tdcxt,tend,xc,kxbr,kxtr")
  (const_int 1)] (const_int 0)))
 
@@ -165,8 +165,8 @@ llhr,llihf,llihh,llihl,llilf,llilh,llill,lndfr,lngr,lnr,lpdfr,lpgr,lpr,lr,\
 lrv,lrvg,lrvgr,lrvh,lrvr,lt,ltg,ltgf,ltgfr,ltgr,ltr,lzdr,lzer,n,ng,ngr,\
 ngrk,nihf,nihh,nihl,nilf,nilh,nill,nop,nopr,nr,nrk,ny,o,og,ogr,ogrk,oihf,\
 oihh,oihl,oilf,oilh,oill,or,ork,oy,pfpo,risbg,risbgn,rll,rllg,rnsbg,rosbg,\
-s,sg,sgr,sgrk,sl,sldl,slfi,slg,slgf,slgfi,slgfr,slgr,slgrk,sll,sllg,\
-sllk,slr,slrk,sly,sr,sra,srag,srak,srda,srdl,srk,srl,srlg,srlk,sy,tm,tmh,\
+s,sg,sgr,sgrk,sl,slfi,slg,slgf,slgfi,slgfr,slgr,slgrk,sll,sllg,\
+sllk,slr,slrk,sly,sr,sra,srag,srak,srk,srl,srlg,srlk,sy,tm,tmh,\
 tmhh,tmhl,tml,tmlh,tmll,tmy,vlr,vlvgb,vlvgf,vlvgg,vlvgh,x,xg,xgr,xgrk,xihf,\
 xilf,xr,xrk,xy")) "nothing")
 
@@ -202,8 +202,8 @@ xiy,vfkesb,vfkedb,wfkexb,vfkhsb,vfkhdb,wfkhxb,vfkhesb,vfkhedb,wfkhexb"))
 (define_insn_reservation "z15_2" 2
   (and (eq_attr "cpu" "z15")
 (eq_attr "mnemonic" "cdb,cdbr,ceb,cebr,ear,ipm,l,lcbb,lcdbr,lcebr,ld,\
-lde,ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lm,\
-lmg,lmy,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\
+lde,ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,\
+lmg,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\
 vceqbs,vceqfs,vceqgs,vceqhs,vchbs,vchfs,vchgs,vchhs,vchlbs,vchlfs,vchlgs,\
 vchlhs,vfcedbs,vfcesbs,vfchdbs,vfchedbs,vfchesbs,vfchsbs,vfeeb,vfeef,vfeeh,\
 vfeneb,vfenef,vfeneh,vfenezb,vfenezf,vfenezh,vftcidb,vftcisb,vistrb,vistrf,\
@@ -214,7 +214,7 @@ wfcdb,wfcexbs,wfchexbs,wfchxbs,wfcsb,keb,kebr,kdb,kdbr,wfkdb,wfksb"))
 
 (define_insn_reservation "z15_3" 3
   (and (eq_attr "cpu" "z15")
-(eq_attr "mnemonic" "cds,cdsy,mgh,mghi,mh,mhi,mhy,std,stdy,ste,stey,\
+(eq_attr "mnemonic" "mgh,mghi,mh,mhi,mhy,std,stdy,ste,stey,\
 vcksm,vfeezbs,vfeezfs,vfeezhs,vgfmab,vgfmaf,vgfmag,vgfmah,vgfmb,vgfmf,vgfmg,\
 vgfmh,vistrbs,vistrfs,vistrhs,vl,vlbb,vll,vlrlr,vmaeb,vmaef,vmaeh,vmahb,\
 vmahf,vmahh,vmalb,vmaleb,vmalef,vmaleh,vmalf,vmalhb,vmalhf,vmalhh,vmalhw,\
@@ -232,7 +232,7 @@ tbeginc,tend,vst,vstef,vsteg,vstl,vstrl,vstrlr,xc")) "nothing")
   (and (eq_attr "cpu" "z15")
 (eq_attr "mnemonic" "adb,adbr,aeb,aebr,alc,alcg,alcgr,alcr,cs,csg,\
 csy,fidbr,fidbra,fiebr,fiebra,ldeb,ldebr,ledbr,madbr,mdb,mdbr,meeb,meebr,\
-msdbr,msrkc,sdb,sdbr,seb,sebr,slb,slbg,slbgr,slbr,stm,stmg,stmy,vfadb,vfasb,\
+msdbr,msrkc,sdb,sdbr,seb,sebr,slb,slbg,slbgr,slbr,stmg,vfadb,vfasb,\
 vfidb,vfisb,vfmadb,vfmasb,vfmdb,vfmsb,vfmsdb,vfmssb,vfnmadb,vfnmasb,vfnmsdb,\
 vfnmssb,vfsdb,vfssb,vldeb,vledb,vmslg,wfadb,wfasb,wfidb,wfisb,wflld,wfmadb,\
 wfmasb,wfmdb,wfmsb,wfmsdb,wfmssb,wfsdb,wfssb,wldeb,wledb")) "nothing")
@@ -253,7 +253,7 @@ tdcet,vgef,vgeg,kdtr")) "nothing")
 (define_insn_reservation "z15_9" 9
   (and (eq_attr "cpu" "z15")
 (eq_attr "mnemonic" "cdfbr,cdgbr,cdlfbr,cdlgbr,cefbr,cegbr,celfbr,\
-celgbr,cxfbr,cxgbr,cxlfbr,cxlgbr,m,madb,maeb,maebr,mfy,ml,mlr,mr,msdb,mseb,\
+celgbr,cxfbr,cxgbr,cxlfbr,cxlgbr,madb,maeb,maebr,msdb,mseb,\
 msebr,stam,wfaxb,wfixb,wfsxb")) "nothing")
 
 (define_insn_reservation "z15_10" 10
@@ -286,7 +286,7 @@ ltxbr,ltxtr,lxdtr,sxbr,sxtr")) "nothing")
 (define_insn_reservation "z15_20" 20
   (and (eq_attr "cpu" "z15")
 (eq_attr "mnemonic" "cdgtr,cdlgtr,cgdtr,cgxtr,clfdtr,clfxtr,clgdtr,\
-clgxtr,cxgtr,cxlgtr,d,ddb,ddbr,ddtr,deb,debr,dl,dlg,dlgr,dlr,dr,dsg,dsgf,\
+clgxtr,cxgtr,cxlgtr,ddb,ddbr,ddtr,deb,debr,dlg,dlgr,dsg,dsgf,\
 dsgfr,dsgr,dxbr,dxtr,efpc,mdtr,mxbr,mxtr,sqdb,sqdbr,sqeb,sqebr,sqxbr,vfddb,\
 vfdsb,vfsqdb,vfsqsb,wfddb,wfdsb,wfdxb,wfmaxb,wfmsxb,wfmxb,wfnmaxb,wfnmsxb,\
 wfsqdb,wfsqxb")) "nothing")
diff --git a/gcc/config/s390/9175.md b/gcc/config/s390/9175.md
index e39da829edeb..9d770092a302 100644
--- a/gcc/config/s390/9175.md
+++ b/gcc/config/s390/9175.md
@@ -31,14 +31,14 @@ icmh,icmy,icy,iihf,iilf,ipm,la,larl,lay,lb,lbr,lcgfr,lcgr,lcr,lgb,lgbr,lgf,\
 lgfi,lgfr,lgfrl,lgh,lghi,lghr,lghrl,lgr,lh,lhi,lhr,lhrl,lhy,llcr,llgcr,llgfr,\
 llghr,llgtr,llhr,llihf,llihh,llihl,llilf,llilh,llill,llxab,llxaf,llxag,llxah,\
 llxaq,lngfr,lngr,lnr,loc,locg,locghi,locgr,lochi,locr,lpgfr,lpgr,lpr,lr,lrv,\
-lrvg,lrvgr,lrvh,lrvr,lt,ltg,ltgf,ltgfr,ltgr,ltr,lxab,lxaf,lxag,lxah,lxaq,m,mfy,\
-mg,mgh,mghi,mgrk,mh,mhi,mhy,ml,mlg,mlgr,mlr,mr,ms,msc,msfi,msg,msgc,msgf,msgfi,\
+lrvg,lrvgr,lrvh,lrvr,lt,ltg,ltgf,ltgfr,ltgr,ltr,lxab,lxaf,lxag,lxah,lxaq,\
+mg,mgh,mghi,mgrk,mh,mhi,mhy,mlg,mlgr,ms,msc,msfi,msg,msgc,msgf,msgfi,\
 msgfr,msgr,msgrkc,msr,msrkc,msy,n,ncgrk,ncrk,ng,ngr,ngrk,nihf,nihh,nihl,nilf,\
 nilh,nill,nngrk,nnrk,nogrk,nork,nr,nrk,nxgrk,nxrk,ny,o,ocgrk,ocrk,og,ogr,ogrk,\
 oihf,oihh,oihl,oilf,oilh,oill,or,ork,oy,pfpo,popcnt,risbg,risbgn,rll,rllg,\
 rnsbg,rosbg,rxsbg,s,selgr,selr,sg,sgf,sgfr,sgh,sgr,sgrk,sh,shy,sl,slb,slbg,\
-slbgr,slbr,sldl,slfi,slg,slgf,slgfi,slgfr,slgr,slgrk,sll,sllg,sllk,slr,slrk,\
-sly,sr,sra,srag,srak,srda,srdl,srk,srl,srlg,srlk,sy,x,xg,xgr,xgrk,xihf,xilf,xr,\
+slbgr,slbr,slfi,slg,slgf,slgfi,slgfr,slgr,slgrk,sll,sllg,sllk,slr,slrk,\
+sly,sr,sra,srag,srak,srk,srl,srlg,srlk,sy,x,xg,xgr,xgrk,xihf,xilf,xr,\
 xrk,xy")
  (const_int 1)] (const_int 0)))
 
@@ -57,12 +57,12 @@ xiy")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z17_unit_fxd" ""
- (cond [(eq_attr "mnemonic" "dlgr,dlr,dr,dsgfr,dsgr")
+ (cond [(eq_attr "mnemonic" "dlgr,dsgfr,dsgr")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z17_unit_lsu" ""
  (cond [(eq_attr "mnemonic" "clc,ear,l,lam,lcbb,ld,lde,ldy,lg,lgrl,llc,llgc,\
-llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lm,lmg,lmy,lpq,lrl,ly,mvcrl,sar,sfpc,\
+llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lmg,lpq,lrl,ly,mvcrl,sar,sfpc,\
 tabort,vl,vlbb,vlbrf,vlbrg,vlbrh,vlbrq,vlbrrepf,vlbrrepg,vlbrreph,vlerf,vlerg,\
 vlerh,vll,vllebrzf,vllebrzg,vllebrzh,vllezb,vllezf,vllezg,vllezh,vllezlf,\
 vlrepb,vlrepf,vlrepg,vlreph,vlrl,vlrlr")
@@ -127,23 +127,23 @@ mvc,nc,oc,rnsbg,rosbg,rxsbg,stpq,vgef,vgeg,vscef,vsceg,vsteb,vstebrh,vsteh,xc")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z17_expanded" ""
- (cond [(eq_attr "mnemonic" "cds,cdsg,cdsy,cxfbr,cxftr,cxgbr,cxgtr,cxlfbr,\
-cxlftr,cxlgbr,cxlgtr,d,dl,dlg,dsg,dsgf,lam,lm,lmg,lmy,sldl,srda,srdl,stam,stm,\
-stmg,stmy,tbegin,tbeginc")
+ (cond [(eq_attr "mnemonic" "cdsg,cxfbr,cxftr,cxgbr,cxgtr,cxlfbr,\
+cxlftr,cxlgbr,cxlgtr,dlg,dsg,dsgf,lam,lmg,stam,\
+stmg,tbegin,tbeginc")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z17_groupalone" ""
  (cond [(eq_attr "mnemonic" "alc,alcg,alcgr,alcr,axbr,axtr,clc,cxbr,cxfbr,\
-cxftr,cxgbr,cxgtr,cxlfbr,cxlftr,cxlgbr,cxlgtr,cxtr,d,dl,dlg,dlgr,dlr,dr,dsg,\
+cxftr,cxgbr,cxgtr,cxlfbr,cxlftr,cxlgbr,cxlgtr,cxtr,dlg,dlgr,dsg,\
 dsgf,dsgfr,dsgr,dxbr,dxtr,ex,exrl,fixbr,fixbra,fixtr,flogr,kxbr,kxtr,lcxbr,\
-lnxbr,lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,m,madb,maeb,maebr,mfy,mg,\
-mgrk,ml,mlg,mlgr,mlr,mr,msdb,mseb,msebr,mvc,mvcrl,mxbr,mxtr,nc,oc,ppa,sfpc,slb,\
+lnxbr,lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,madb,maeb,maebr,mg,\
+mgrk,mlg,mlgr,msdb,mseb,msebr,mvc,mvcrl,mxbr,mxtr,nc,oc,ppa,sfpc,slb,\
 slbg,slbgr,slbr,sqxbr,sxbr,sxtr,tabort,tbegin,tbeginc,tcxb,tdcxt,tend,xc")
  (const_int 1)] (const_int 0)))
 
 (define_attr "z17_endgroup" ""
  (cond [(eq_attr "mnemonic" "bas,basr,bcr,br,bras,brasl,cdsg,clfebr,cs,csg,csy,\
-efpc,ex,exrl,ipm,lam,lpq,lxr,nopr,sldl,srda,srdl,stam,stm,stmg,stmy,tbegin,\
+efpc,ex,exrl,ipm,lam,lpq,lxr,nopr,stam,stmg,tbegin,\
 tbeginc")
  (const_int 1)] (const_int 0)))
 
@@ -173,9 +173,9 @@ llcr,llgcr,llgfr,llghr,llgtr,llhr,llihf,llihh,llihl,llilf,llilh,llill,lndfr,\
 lngr,lnr,lpdfr,lpgr,lpr,lr,lrv,lrvg,lrvgr,lrvh,lrvr,lt,ltg,ltgf,ltgfr,ltgr,ltr,\
 lzdr,lzer,n,ncgrk,ncrk,ng,ngr,ngrk,nihf,nihh,nihl,nilf,nilh,nill,nngrk,nnrk,\
 nogrk,nop,nopr,nork,nr,nrk,nxgrk,nxrk,ny,o,ocgrk,ocrk,og,ogr,ogrk,oihf,oihh,\
-oihl,oilf,oilh,oill,or,ork,oy,pfpo,risbg,risbgn,rll,rllg,s,sg,sgr,sgrk,sl,sldl,\
+oihl,oilf,oilh,oill,or,ork,oy,pfpo,risbg,risbgn,rll,rllg,s,sg,sgr,sgrk,sl,\
 slfi,slg,slgf,slgfi,slgfr,slgr,slgrk,sll,sllg,sllk,slr,slrk,sly,sr,sra,srag,\
-srak,srda,srdl,srk,srl,srlg,srlk,sy,tm,tmh,tmhh,tmhl,tml,tmlh,tmll,tmy,vlr,\
+srak,srk,srl,srlg,srlk,sy,tm,tmh,tmhh,tmhl,tml,tmlh,tmll,tmy,vlr,\
 vlvgb,vlvgf,vlvgg,vlvgh,x,xg,xgr,xgrk,xihf,xilf,xr,xrk,xy")) "nothing")
 
 (define_insn_reservation "z17_1" 1
@@ -217,7 +217,7 @@ xi,xiy")) "nothing")
  (and (eq_attr "cpu" "z17")
  (eq_attr "mnemonic" "cdb,cdbr,ceb,cebr,clzg,ctzg,ear,ipm,kdb,kdbr,keb,kebr,l,\
 lcbb,lcdbr,lcebr,ld,lde,ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,\
-llh,llhrl,lm,lmg,lmy,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,\
+llh,llhrl,lmg,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,\
 tcdb,tceb,vfeeb,vfeef,vfeeh,vfeezbs,vfeezfs,vfeezhs,vfeneb,vfenef,vfeneh,\
 vfenezb,vfenezf,vfenezh,vftcidb,vftcisb,vistrb,vistrbs,vistrf,vistrfs,vistrh,\
 vistrhs,vlbrrepf,vlbrrepg,vlbrreph,vlgvb,vlgvf,vlgvg,vlgvh,vllebrzf,vllebrzg,\
@@ -226,7 +226,7 @@ vlvgp,wfcdb,wfcsb,wfcxb,wfkdb,wfksb,wfkxb,wftcixb")) "nothing")
 
 (define_insn_reservation "z17_3" 3
  (and (eq_attr "cpu" "z17")
- (eq_attr "mnemonic" "bdepg,bextg,cds,cdsy,mgh,mghi,mh,mhi,mhy,ms,msc,msfi,msg,\
+ (eq_attr "mnemonic" "bdepg,bextg,mgh,mghi,mh,mhi,mhy,ms,msc,msfi,msg,\
 msgc,msgf,msgfi,msgfr,msgr,msgrkc,msr,msrkc,msy,std,stdy,ste,stey,vcksm,vgfmab,\
 vgfmaf,vgfmag,vgfmah,vgfmb,vgfmf,vgfmg,vgfmh,vl,vlbb,vlbrf,vlbrg,vlbrh,vlbrq,\
 vlerf,vlerg,vlerh,vll,vlrlr,vmaeb,vmaef,vmaeg,vmaeh,vmahb,vmahf,vmahg,vmahh,\
@@ -247,7 +247,7 @@ vstrlr")) "nothing")
  (and (eq_attr "cpu" "z17")
  (eq_attr "mnemonic" "adb,adbr,aeb,aebr,alc,alcg,alcgr,alcr,cs,csg,csy,fidbr,\
 fidbra,fiebr,fiebra,ldeb,ldebr,ledbr,madbr,mdb,mdbr,meeb,meebr,msdbr,sdb,sdbr,\
-seb,sebr,slb,slbg,slbgr,slbr,stm,stmg,stmy,vcdgb,vcdlgb,vcefb,vcelfb,vcfeb,\
+seb,sebr,slb,slbg,slbgr,slbr,stmg,vcdgb,vcdlgb,vcefb,vcelfb,vcfeb,\
 vcgdb,vclfeb,vclgdb,vldeb,vledb,vmslg,wcdgb,wcdlgb,wcefb,wcelfb,wcfeb,wcgdb,\
 wclfeb,wclgdb,wflld,wflrx,wldeb,wledb")) "nothing")
 
@@ -263,8 +263,8 @@ wfsdb,wfssb,wfsxb")) "nothing")
 
 (define_insn_reservation "z17_8" 8
  (and (eq_attr "cpu" "z17")
- (eq_attr "mnemonic" "cdgtr,cdlgtr,cdsg,cxgtr,cxlgtr,flogr,lpq,m,mfy,mg,mgrk,\
-ml,mlg,mlgr,mlr,mr,stpq,vsteb,vstebrh,vsteh")) "nothing")
+ (eq_attr "mnemonic" "cdgtr,cdlgtr,cdsg,cxgtr,cxlgtr,flogr,lpq,mg,mgrk,\
+mlg,mlgr,stpq,vsteb,vstebrh,vsteh")) "nothing")
 
 (define_insn_reservation "z17_9" 9
  (and (eq_attr "cpu" "z17")
@@ -273,7 +273,7 @@ maeb,maebr,msdb,mseb,msebr,stam")) "nothing")
 
 (define_insn_reservation "z17_10" 10
  (and (eq_attr "cpu" "z17")
- (eq_attr "mnemonic" "cgdtr,cgxtr,clfdtr,clfxtr,clgdtr,clgxtr,d,dl,dlg,dsg,\
+ (eq_attr "mnemonic" "cgdtr,cgxtr,clfdtr,clfxtr,clgdtr,clgxtr,dlg,dsg,\
 dsgf,efpc,lxdb,lxdbr,lxeb,lxebr,vscef,vsceg")) "nothing")
 
 (define_insn_reservation "z17_11" 11
@@ -307,7 +307,7 @@ lcxbr,lnxbr,lpxbr,ltxbr,ltxtr,lxdtr,sxbr,sxtr")) "nothing")
 
 (define_insn_reservation "z17_20" 20
  (and (eq_attr "cpu" "z17")
- (eq_attr "mnemonic" "ddb,ddbr,ddtr,deb,debr,dlgr,dlr,dr,dsgfr,dsgr,dxbr,dxtr,\
+ (eq_attr "mnemonic" "ddb,ddbr,ddtr,deb,debr,dlgr,dsgfr,dsgr,dxbr,dxtr,\
 mdtr,mvc,mxbr,mxtr,sqdb,sqdbr,sqeb,sqebr,sqxbr,vdf,vdg,vdlf,vdlg,vdlq,vdq,\
 vfddb,vfdsb,vfmadb,vfmasb,vfmdb,vfmsb,vfmsdb,vfmssb,vfnmadb,vfnmasb,vfnmsdb,\
 vfnmssb,vfsqdb,vfsqsb,vrf,vrg,vrlf,vrlg,vrlq,vrq,wfddb,wfdsb,wfdxb,wfmadb,\
diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md
index 62ea3013ff4b..be57b43b0015 100644
--- a/gcc/config/s390/constraints.md
+++ b/gcc/config/s390/constraints.md
@@ -583,8 +583,8 @@
   (match_test "s390_mem_constraint (\"ZT\", op)"))
 
 (define_constraint "ZL"
-  "LARL operand when in 64-bit mode, otherwise nothing."
-  (match_test "TARGET_64BIT && larl_operand (op, VOIDmode)"))
+  "LARL operand."
+  (match_test "larl_operand (op, VOIDmode)"))
 
 ;; This constraint must behave like "i", in particular, the matching values
 ;; must never be placed into registers or memory by
diff --git a/gcc/config/s390/driver-native.cc b/gcc/config/s390/driver-native.cc
index 07333249224d..8ddb51ced1ef 100644
--- a/gcc/config/s390/driver-native.cc
+++ b/gcc/config/s390/driver-native.cc
@@ -48,12 +48,9 @@ s390_host_detect_local_cpu (int argc, const char **argv)
   unsigned int has_features;
   unsigned int has_processor;
   unsigned int is_cpu_z9_109 = 0;
-  unsigned int has_highgprs = 0;
   unsigned int has_dfp = 0;
   unsigned int has_te = 0;
   unsigned int has_vx = 0;
-  unsigned int has_opt_esa_zarch = 0;
-  int i;
 
   if (argc < 1)
     return NULL;
@@ -61,9 +58,6 @@ s390_host_detect_local_cpu (int argc, const char **argv)
   arch = strcmp (argv[0], "arch") == 0;
   if (!arch && strcmp (argv[0], "tune"))
     return NULL;
-  for (i = 1; i < argc; i++)
-    if (strcmp (argv[i], "mesa_mzarch") == 0)
-      has_opt_esa_zarch = 1;
 
   f = fopen ("/proc/cpuinfo", "r");
   if (f == NULL)
@@ -158,8 +152,6 @@ s390_host_detect_local_cpu (int argc, const char **argv)
 		has_te = 1;
 	      else if (i == 2 && startswith (p, "vx"))
 		has_vx = 1;
-	      else if (i == 8 && startswith (p, "highgprs"))
-		has_highgprs = 1;
 	      p += i;
 	    }
 	  has_features = 1;
@@ -175,7 +167,6 @@ s390_host_detect_local_cpu (int argc, const char **argv)
     {
       const char *opt_htm = "";
       const char *opt_vx = "";
-      const char *opt_esa_zarch = "";
 
       /* We may switch off these cpu features but never switch the on
 	 explicitly.  This overrides options specified on the command line.  */
@@ -183,12 +174,7 @@ s390_host_detect_local_cpu (int argc, const char **argv)
 	opt_htm = " -mno-htm";
       if (!has_vx)
 	opt_vx = " -mno-vx";
-      /* However, we set -mzarch only if neither -mzarch nor -mesa are used on
-	 the command line.  This allows the user to switch to -mesa manually.
-      */
-      if (!has_opt_esa_zarch && has_highgprs)
-	opt_esa_zarch = " -mzarch";
-      options = concat (options, opt_htm, opt_vx, opt_esa_zarch, NULL);
+      options = concat (options, opt_htm, opt_vx, NULL);
     }
   if (has_dfp && is_cpu_z9_109)
     cpu = "z9-ec";
diff --git a/gcc/config/s390/htmxlintrin.h b/gcc/config/s390/htmxlintrin.h
index 74182fc89c0b..9a9e00f82db1 100644
--- a/gcc/config/s390/htmxlintrin.h
+++ b/gcc/config/s390/htmxlintrin.h
@@ -167,11 +167,7 @@ extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artific
 __TM_failure_address (void* const tdb_ptr)
 {
   struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
-#ifdef __s390x__
   return tdb->atia;
-#else
-  return tdb->atia & 0xffffffff;
-#endif
 }
 
 extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
index b836d566a7c7..b95bb48f405b 100644
--- a/gcc/config/s390/linux.h
+++ b/gcc/config/s390/linux.h
@@ -24,14 +24,10 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Target specific type definitions.  */
 
-/* For 31 bit our size type differs from most other targets (where it
-   is "unsigned int").  The difference tends to cause trouble e.g.:
-   Glibc BZ #16712, GCC BZ #79358 but cannot be changed due to ABI
-   issues.  */
 #undef  SIZE_TYPE
 #define SIZE_TYPE "long unsigned int"
 #undef  PTRDIFF_TYPE
-#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
+#define PTRDIFF_TYPE "long int"
 
 #undef  WCHAR_TYPE
 #define WCHAR_TYPE "int"
@@ -51,10 +47,13 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Target specific assembler settings.  */
 /* Rewrite -march=arch* options to the original CPU name in order to
-   make it work with older binutils.  */
+   make it work with older binutils.  The spec is incomplete in the sense that
+   it passes -march=z* but filters -march=archX with X>11 out.  However,
+   starting with binutils 2.22 the .machine pseudo-op is supported which
+   overrides command line option -march anyway.  */
 #undef  ASM_SPEC
 #define ASM_SPEC					\
-  "%{m31&m64}%{mesa&mzarch}%{march=z*}"			\
+  "%{march=z*}"						\
   "%{march=arch5:-march=z900}"				\
   "%{march=arch6:-march=z990}"				\
   "%{march=arch7:-march=z9-ec}"				\
@@ -66,30 +65,22 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Target specific linker settings.  */
 
-#ifdef DEFAULT_TARGET_64BIT
 #define MULTILIB_DEFAULTS { "m64" }
-#else
-#define MULTILIB_DEFAULTS { "m31" }
-#endif
 
-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
 #define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
 
-#undef MUSL_DYNAMIC_LINKER32
-#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-s390.so.1"
 #undef MUSL_DYNAMIC_LINKER64
 #define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-s390x.so.1"
 
 #undef  LINK_SPEC
 #define LINK_SPEC \
-  "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
+  "-m elf64_s390 \
    %{shared:-shared} \
    %{!shared: \
       %{static:-static} \
       %{!static:%{!static-pie: \
 	%{rdynamic:-export-dynamic} \
-	%{m31:-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "} \
-	%{m64:-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}}} \
+	-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \
    %{static-pie:-static -pie --no-dynamic-linker -z text}"
 
 #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
@@ -97,9 +88,7 @@ along with GCC; see the file COPYING3.  If not see
 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
 
 #ifdef TARGET_LIBC_PROVIDES_SSP
-/* s390 glibc provides __stack_chk_guard in 0x14(tp),
-   s390x glibc provides it at 0x28(tp).  */
-#define TARGET_THREAD_SSP_OFFSET        (TARGET_64BIT ? 0x28 : 0x14)
+#define TARGET_THREAD_SSP_OFFSET 0x28
 #endif
 
 /* Define if long doubles should be mangled as 'g'.  */
diff --git a/gcc/config/s390/predicates.md b/gcc/config/s390/predicates.md
index 2c29e78c2416..b5e6da0f0945 100644
--- a/gcc/config/s390/predicates.md
+++ b/gcc/config/s390/predicates.md
@@ -97,17 +97,12 @@
 })
 
 ;; Return true if OP is a valid operand for the BRAS instruction.
-;; Allow SYMBOL_REFs and @PLT stubs.
 
 (define_special_predicate "bras_sym_operand"
-  (ior (and (match_code "symbol_ref")
-	    (ior (match_test "!flag_pic")
-		 (match_test "SYMBOL_REF_LOCAL_P (op)")
-		 (and (match_test "TARGET_64BIT")
-		      (match_test "SYMBOL_REF_FUNCTION_P (op)"))))
-       (and (match_code "const")
-	    (and (match_test "GET_CODE (XEXP (op, 0)) == UNSPEC")
-		 (match_test "XINT (XEXP (op, 0), 1) == UNSPEC_PLT31")))))
+  (and (match_code "symbol_ref")
+       (ior (match_test "!flag_pic")
+	    (match_test "SYMBOL_REF_LOCAL_P (op)")
+	    (match_test "SYMBOL_REF_FUNCTION_P (op)"))))
 
 ;; Return true if OP is a PLUS that is not a legitimate
 ;; operand for the LA instruction.
@@ -199,9 +194,6 @@
   if (GET_CODE (op) == UNSPEC
       && XINT (op, 1) == UNSPEC_GOTENT)
     return true;
-  if (GET_CODE (op) == UNSPEC
-      && XINT (op, 1) == UNSPEC_PLT31)
-    return true;
   if (GET_CODE (op) == UNSPEC
       && XINT (op, 1) == UNSPEC_INDNTPOFF)
     return true;
diff --git a/gcc/config/s390/s390-builtins.def b/gcc/config/s390/s390-builtins.def
index d3d581792f3b..90b52ba204ab 100644
--- a/gcc/config/s390/s390-builtins.def
+++ b/gcc/config/s390/s390-builtins.def
@@ -718,8 +718,8 @@ OB_DEF_VAR (s390_vec_scatter_element_u64,s390_vsceg,        0,
 OB_DEF_VAR (s390_vec_scatter_element_flt,s390_vscef,        B_VXE,              O4_U2,              BT_OV_VOID_V4SF_UV4SI_FLTPTR_ULONGLONG)
 OB_DEF_VAR (s390_vec_scatter_element_dbl,s390_vsceg,        0,                  O4_U1,              BT_OV_VOID_V2DF_UV2DI_DBLPTR_ULONGLONG)
 
-B_DEF      (s390_vscef,                 vec_scatter_elementv4si,0,              B_VX,               O4_U2,              BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG)
-B_DEF      (s390_vsceg,                 vec_scatter_elementv2di,0,              B_VX,               O4_U1,              BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG)
+B_DEF      (s390_vscef,                 vec_scatter_elementv4si_DI,0,           B_VX,               O4_U2,              BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG)
+B_DEF      (s390_vsceg,                 vec_scatter_elementv2di_DI,0,           B_VX,               O4_U1,              BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG)
 
 /* First two operands are swapped in s390-c.cc */
 OB_DEF     (s390_vec_sel,               s390_vec_sel_b8_a,  s390_vec_sel_dbl_b, B_VX,               BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
diff --git a/gcc/config/s390/s390-c.cc b/gcc/config/s390/s390-c.cc
index db9a88ee8054..3aa27c9034c0 100644
--- a/gcc/config/s390/s390-c.cc
+++ b/gcc/config/s390/s390-c.cc
@@ -420,10 +420,8 @@ s390_cpu_cpp_builtins (cpp_reader *pfile)
   cpp_assert (pfile, "cpu=s390");
   cpp_assert (pfile, "machine=s390");
   cpp_define (pfile, "__s390__");
-  if (TARGET_ZARCH)
-    cpp_define (pfile, "__zarch__");
-  if (TARGET_64BIT)
-    cpp_define (pfile, "__s390x__");
+  cpp_define (pfile, "__zarch__");
+  cpp_define (pfile, "__s390x__");
   if (TARGET_LONG_DOUBLE_128)
     cpp_define (pfile, "__LONG_DOUBLE_128__");
   cl_target_option_save (&opts, &global_options, &global_options_set);
diff --git a/gcc/config/s390/s390-d.cc b/gcc/config/s390/s390-d.cc
index 00bee9dd260a..ac9abedce641 100644
--- a/gcc/config/s390/s390-d.cc
+++ b/gcc/config/s390/s390-d.cc
@@ -30,13 +30,8 @@ along with GCC; see the file COPYING3.  If not see
 void
 s390_d_target_versions (void)
 {
-  if (TARGET_64BIT)
-    {
-      d_add_builtin_version ("S390X");
-      d_add_builtin_version ("SystemZ");
-    }
-  else
-    d_add_builtin_version ("S390");
+  d_add_builtin_version ("S390X");
+  d_add_builtin_version ("SystemZ");
 
   if (TARGET_SOFT_FLOAT)
     d_add_builtin_version ("D_SoftFloat");
diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc
index d57499a48e60..4ec9a53f7d76 100644
--- a/gcc/config/s390/s390.cc
+++ b/gcc/config/s390/s390.cc
@@ -398,11 +398,9 @@ struct s390_address
 
 #define cfun_frame_layout (cfun->machine->frame_layout)
 #define cfun_save_high_fprs_p (!!cfun_frame_layout.high_fprs)
-#define cfun_save_arg_fprs_p (!!(TARGET_64BIT				\
-				 ? cfun_frame_layout.fpr_bitmap & 0x0f	\
-				 : cfun_frame_layout.fpr_bitmap & 0x03))
+#define cfun_save_arg_fprs_p (!!(cfun_frame_layout.fpr_bitmap & 0x0f))
 #define cfun_gprs_save_area_size ((cfun_frame_layout.last_save_gpr_slot - \
-  cfun_frame_layout.first_save_gpr_slot + 1) * UNITS_PER_LONG)
+  cfun_frame_layout.first_save_gpr_slot + 1) * UNITS_PER_WORD)
 #define cfun_set_fpr_save(REGNO) (cfun->machine->frame_layout.fpr_bitmap |=    \
   (1 << (REGNO - FPR0_REGNUM)))
 #define cfun_fpr_save_p(REGNO) (!!(cfun->machine->frame_layout.fpr_bitmap &    \
@@ -412,7 +410,7 @@ struct s390_address
 
 /* Number of GPRs and FPRs used for argument passing.  */
 #define GP_ARG_NUM_REG 5
-#define FP_ARG_NUM_REG (TARGET_64BIT? 4 : 2)
+#define FP_ARG_NUM_REG 4
 #define VEC_ARG_NUM_REG 8
 
 /* Return TRUE if GPR REGNO is supposed to be restored in the function
@@ -713,10 +711,7 @@ s390_init_builtins (void)
      uint64_t data type.  What we want is c_uint64_type_node from
      c-common.cc.  But since backend code is not supposed to interface
      with the frontend we recreate it here.  */
-  if (TARGET_64BIT)
-    c_uint64_type_node = long_unsigned_type_node;
-  else
-    c_uint64_type_node = long_long_unsigned_type_node;
+  c_uint64_type_node = long_unsigned_type_node;
 
 #undef DEF_TYPE
 #define DEF_TYPE(INDEX, NODE, CONST_P)			\
@@ -1358,34 +1353,29 @@ s390_got_symbol (void)
 static scalar_int_mode
 s390_libgcc_cmp_return_mode (void)
 {
-  return TARGET_64BIT ? DImode : SImode;
+  return DImode;
 }
 
 static scalar_int_mode
 s390_libgcc_shift_count_mode (void)
 {
-  return TARGET_64BIT ? DImode : SImode;
+  return DImode;
 }
 
 static scalar_int_mode
 s390_unwind_word_mode (void)
 {
-  return TARGET_64BIT ? DImode : SImode;
+  return DImode;
 }
 
 /* Return true if the back end supports mode MODE.  */
 static bool
 s390_scalar_mode_supported_p (scalar_mode mode)
 {
-  /* In contrast to the default implementation reject TImode constants on 31bit
-     TARGET_ZARCH for ABI compliance.  */
-  if (!TARGET_64BIT && TARGET_ZARCH && mode == TImode)
-    return false;
-
   if (DECIMAL_FLOAT_MODE_P (mode))
     return default_decimal_float_supported_p ();
 
-  if (TARGET_64BIT && TARGET_Z10 && mode == HFmode)
+  if (TARGET_Z10 && mode == HFmode)
     return true;
 
   return default_scalar_mode_supported_p (mode);
@@ -1665,8 +1655,7 @@ s390_select_ccmode (enum rtx_code code, rtx op0, rtx op1)
 	if (GET_CODE (op0) == PLUS && GET_CODE (XEXP (op0, 1)) == CONST_INT
 	    && (CONST_OK_FOR_K (INTVAL (XEXP (op0, 1)))
 		|| (CONST_OK_FOR_CONSTRAINT_P (INTVAL (XEXP (op0, 1)), 'O', "Os")
-		    /* Avoid INT32_MIN on 32 bit.  */
-		    && (!TARGET_ZARCH || INTVAL (XEXP (op0, 1)) != -0x7fffffff - 1))))
+		    && INTVAL (XEXP (op0, 1)) != -0x7fffffff - 1)))
 	  {
 	    if (INTVAL (XEXP((op0), 1)) < 0)
 	      return CCANmode;
@@ -3598,8 +3587,7 @@ s390_loadrelative_operand_p (rtx addr, rtx *symref, HOST_WIDE_INT *addend)
 
   if (GET_CODE (addr) == SYMBOL_REF
       || (GET_CODE (addr) == UNSPEC
-	  && (XINT (addr, 1) == UNSPEC_GOTENT
-	      || XINT (addr, 1) == UNSPEC_PLT31)))
+	  && XINT (addr, 1) == UNSPEC_GOTENT))
     {
       if (symref)
 	*symref = addr;
@@ -4173,30 +4161,13 @@ s390_rtx_costs (rtx x, machine_mode mode, int outer_code,
 	  {
 	    rtx left = XEXP (x, 0);
 	    rtx right = XEXP (x, 1);
-	    if (TARGET_ZARCH)
-	      {
-		if (GET_CODE (right) == CONST_INT
-		    && CONST_OK_FOR_K (INTVAL (right)))
-		  *total = s390_cost->mghi;
-		else if (GET_CODE (left) == SIGN_EXTEND)
-		  *total = s390_cost->msgf;
-		else
-		  *total = s390_cost->msg;  /* msgr, msg */
-	      }
-	    else /* TARGET_31BIT */
-	      {
-		if (GET_CODE (left) == SIGN_EXTEND
-		    && GET_CODE (right) == SIGN_EXTEND)
-		  /* mulsidi case: mr, m */
-		  *total = s390_cost->m;
-		else if (GET_CODE (left) == ZERO_EXTEND
-			 && GET_CODE (right) == ZERO_EXTEND)
-		  /* umulsidi case: ml, mlr */
-		  *total = s390_cost->ml;
-		else
-		  /* Complex calculation is required.  */
-		  *total = COSTS_N_INSNS (40);
-	      }
+	    if (GET_CODE (right) == CONST_INT
+		&& CONST_OK_FOR_K (INTVAL (right)))
+	      *total = s390_cost->mghi;
+	    else if (GET_CODE (left) == SIGN_EXTEND)
+	      *total = s390_cost->msgf;
+	    else
+	      *total = s390_cost->msg;  /* msgr, msg */
 	    break;
 	  }
 	case E_SFmode:
@@ -4255,10 +4226,7 @@ s390_rtx_costs (rtx x, machine_mode mode, int outer_code,
 	{
 	  rtx right = XEXP (x, 1);
 	  if (GET_CODE (right) == ZERO_EXTEND) /* 64 by 32 bit division */
-	    if (TARGET_ZARCH)
-	      *total = s390_cost->dsgfr;
-	    else
-	      *total = s390_cost->dr;
+	    *total = s390_cost->dsgfr;
 	  else				       /* 64 by 64 bit division */
 	    *total = s390_cost->dsgr;
 	}
@@ -4421,7 +4389,6 @@ tls_symbolic_operand (rtx op)
 void
 s390_split_access_reg (rtx reg, rtx *lo, rtx *hi)
 {
-  gcc_assert (TARGET_64BIT);
   gcc_assert (ACCESS_REG_P (reg));
   gcc_assert (GET_MODE (reg) == DImode);
   gcc_assert (!(REGNO (reg) & 1));
@@ -4653,16 +4620,15 @@ legitimate_reload_constant_p (rtx op)
     return true;
 
   /* Accept lliXX operands.  */
-  if (TARGET_ZARCH
-      && GET_CODE (op) == CONST_INT
-      && trunc_int_for_mode (INTVAL (op), word_mode) == INTVAL (op)
-      && s390_single_part (op, word_mode, HImode, 0) >= 0)
+  if (GET_CODE (op) == CONST_INT
+      && trunc_int_for_mode (INTVAL (op), DImode) == INTVAL (op)
+      && s390_single_part (op, DImode, HImode, 0) >= 0)
     return true;
 
   if (TARGET_EXTIMM
       && GET_CODE (op) == CONST_INT
-      && trunc_int_for_mode (INTVAL (op), word_mode) == INTVAL (op)
-      && s390_single_part (op, word_mode, SImode, 0) >= 0)
+      && trunc_int_for_mode (INTVAL (op), DImode) == INTVAL (op)
+      && s390_single_part (op, DImode, SImode, 0) >= 0)
     return true;
 
   /* Accept larl operands.  */
@@ -4678,11 +4644,10 @@ legitimate_reload_constant_p (rtx op)
   /* Accept double-word operands that can be split.  */
   if (GET_CODE (op) == CONST_WIDE_INT
       || (GET_CODE (op) == CONST_INT
-	  && trunc_int_for_mode (INTVAL (op), word_mode) != INTVAL (op)))
+	  && trunc_int_for_mode (INTVAL (op), DImode) != INTVAL (op)))
     {
-      machine_mode dword_mode = word_mode == SImode ? DImode : TImode;
-      rtx hi = operand_subword (op, 0, 0, dword_mode);
-      rtx lo = operand_subword (op, 1, 0, dword_mode);
+      rtx hi = operand_subword (op, 0, 0, TImode);
+      rtx lo = operand_subword (op, 1, 0, TImode);
       return legitimate_reload_constant_p (hi)
 	     && legitimate_reload_constant_p (lo);
     }
@@ -4848,7 +4813,7 @@ s390_check_symref_alignment (rtx addr, HOST_WIDE_INT alignment)
     }
 
   if (GET_CODE (symref) == UNSPEC
-      && alignment <= UNITS_PER_LONG)
+      && alignment <= UNITS_PER_WORD)
     return true;
 
   return false;
@@ -4974,13 +4939,9 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
 		  && s390_class_max_nregs (FP_REGS, mode) == 1)))
 	{
 	  if (in_p)
-	    sri->icode = (TARGET_64BIT ?
-			  CODE_FOR_reloaddi_la_in :
-			  CODE_FOR_reloadsi_la_in);
+	    sri->icode = CODE_FOR_reloaddi_la_in;
 	  else
-	    sri->icode = (TARGET_64BIT ?
-			  CODE_FOR_reloaddi_la_out :
-			  CODE_FOR_reloadsi_la_out);
+	    sri->icode = CODE_FOR_reloaddi_la_out;
 	}
     }
 
@@ -4996,8 +4957,7 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
 	  && mode == Pmode
 	  && (!SYMBOL_REF_P (symref) || !SYMBOL_FLAG_NOTALIGN2_P (symref))
 	  && (offset & 1) == 1)
-	sri->icode = ((mode == DImode) ? CODE_FOR_reloaddi_larl_odd_addend_z10
-		      : CODE_FOR_reloadsi_larl_odd_addend_z10);
+	sri->icode = CODE_FOR_reloaddi_larl_odd_addend_z10;
 
       /* Handle all the (mem (symref)) accesses we cannot use the z10
 	 instructions for.  */
@@ -5011,12 +4971,8 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
 	{
 #define __SECONDARY_RELOAD_CASE(M,m)					\
 	  case E_##M##mode:						\
-	    if (TARGET_64BIT)						\
-	      sri->icode = in_p ? CODE_FOR_reload##m##di_toreg_z10 :	\
-				  CODE_FOR_reload##m##di_tomem_z10;	\
-	    else							\
-	      sri->icode = in_p ? CODE_FOR_reload##m##si_toreg_z10 :	\
-				  CODE_FOR_reload##m##si_tomem_z10;	\
+	    sri->icode = in_p ? CODE_FOR_reload##m##di_toreg_z10 :	\
+				CODE_FOR_reload##m##di_tomem_z10;	\
 	  break;
 
 	  switch (GET_MODE (x))
@@ -5070,8 +5026,7 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
   /* LRA can deal with transformation of plus op very well -- so we
      don't need to prompt LRA in this case.  */
   if (! lra_in_progress && in_p && s390_plus_operand (x, mode))
-    sri->icode = (TARGET_64BIT ?
-		  CODE_FOR_reloaddi_plus : CODE_FOR_reloadsi_plus);
+    sri->icode = CODE_FOR_reloaddi_plus;
 
   /* Performing a multiword move from or to memory we have to make sure the
      second chunk in memory is addressable without causing a displacement
@@ -5095,13 +5050,9 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
 	      && s390_class_max_nregs (FP_REGS, mode) > 1))
 	{
 	  if (in_p)
-	    sri->icode = (TARGET_64BIT ?
-			  CODE_FOR_reloaddi_la_in :
-			  CODE_FOR_reloadsi_la_in);
+	    sri->icode = CODE_FOR_reloaddi_la_in;
 	  else
-	    sri->icode = (TARGET_64BIT ?
-			  CODE_FOR_reloaddi_la_out :
-			  CODE_FOR_reloadsi_la_out);
+	    sri->icode = CODE_FOR_reloaddi_la_out;
 	}
     }
 
@@ -5109,9 +5060,7 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
      copied to r0 compiling with -fPIC.  In other cases the target
      register might be used as temporary (see legitimize_pic_address).  */
   if (in_p && SYMBOLIC_CONST (x) && flag_pic == 2 && rclass != ADDR_REGS)
-    sri->icode = (TARGET_64BIT ?
-		  CODE_FOR_reloaddi_PIC_addr :
-		  CODE_FOR_reloadsi_PIC_addr);
+    sri->icode = CODE_FOR_reloaddi_PIC_addr;
 
   /* Either scratch or no register needed.  */
   return NO_REGS;
@@ -5122,9 +5071,7 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
    We need secondary memory to move data between GPRs and FPRs.
 
    - With DFP the ldgr lgdr instructions are available.  Due to the
-     different alignment we cannot use them for SFmode.  For 31 bit a
-     64 bit value in GPR would be a register pair so here we still
-     need to go via memory.
+     different alignment we cannot use them for SFmode.
 
    - With z13 we can do the SF/SImode moves with vlgvf.  Due to the
      overlapping of FPRs and VRs we still disallow TF/TD modes to be
@@ -5141,7 +5088,7 @@ s390_secondary_memory_needed (machine_mode mode,
      realized via ldgr/lgdr in conjunction with shifts in order satisfy
      alignment requirements, or via vector loads.  Thus, there is no secondary
      memory needed.  */
-  if (TARGET_64BIT && TARGET_Z10 && GET_MODE_SIZE (mode) == 2
+  if (TARGET_Z10 && GET_MODE_SIZE (mode) == 2
       && ((reg_classes_intersect_p (class1, VEC_REGS)
 	   && reg_classes_intersect_p (class2, GENERAL_REGS))
 	  || (reg_classes_intersect_p (class2, VEC_REGS)
@@ -5151,8 +5098,7 @@ s390_secondary_memory_needed (machine_mode mode,
 	    && reg_classes_intersect_p (class2, GENERAL_REGS))
 	   || (reg_classes_intersect_p (class1, GENERAL_REGS)
 	       && reg_classes_intersect_p (class2, VEC_REGS)))
-	  && (TARGET_TPF || !TARGET_DFP || !TARGET_64BIT
-	      || GET_MODE_SIZE (mode) != 8)
+	  && (TARGET_TPF || !TARGET_DFP || GET_MODE_SIZE (mode) != 8)
 	  && (!TARGET_VX || (SCALAR_FLOAT_MODE_P (mode)
 			     && GET_MODE_SIZE (mode) > 8)));
 }
@@ -5282,9 +5228,7 @@ s390_legitimate_address_p (machine_mode mode, rtx addr, bool strict,
   return true;
 }
 
-/* Return true if OP is a valid operand for the LA instruction.
-   In 31-bit, we need to prove that the result is used as an
-   address, as LA performs only a 31-bit addition.  */
+/* Return true if OP is a valid operand for the LA instruction.  */
 
 bool
 legitimate_la_operand_p (rtx op)
@@ -5293,7 +5237,7 @@ legitimate_la_operand_p (rtx op)
   if (!s390_decompose_address (op, &addr))
     return false;
 
-  return (TARGET_64BIT || addr.pointer);
+  return true;
 }
 
 /* Return true if it is valid *and* preferable to use LA to
@@ -5321,9 +5265,6 @@ preferred_la_operand_p (rtx op1, rtx op2)
   if (addr.indx && s390_tune >= PROCESSOR_2817_Z196)
     return false;
 
-  if (!TARGET_64BIT && !addr.pointer)
-    return false;
-
   if (addr.pointer)
     return true;
 
@@ -5341,10 +5282,7 @@ preferred_la_operand_p (rtx op1, rtx op2)
 void
 s390_load_address (rtx dst, rtx src)
 {
-  if (TARGET_64BIT)
-    emit_move_insn (dst, src);
-  else
-    emit_insn (gen_force_la_31 (dst, src));
+  emit_move_insn (dst, src);
 }
 
 /* Return true if it ok to use SYMBOL_REF in a relative address.  */
@@ -5405,9 +5343,7 @@ legitimize_pic_address (rtx orig, rtx reg)
 
   if ((GET_CODE (addr) == LABEL_REF
        || (SYMBOL_REF_P (addr) && s390_rel_address_ok_p (addr))
-       || (GET_CODE (addr) == UNSPEC &&
-	   (XINT (addr, 1) == UNSPEC_GOTENT
-	    || XINT (addr, 1) == UNSPEC_PLT31)))
+       || (GET_CODE (addr) == UNSPEC && XINT (addr, 1) == UNSPEC_GOTENT))
       && GET_CODE (addend) == CONST_INT)
     {
       /* This can be locally addressed.  */
@@ -5504,8 +5440,7 @@ legitimize_pic_address (rtx orig, rtx reg)
       else if (flag_pic == 1)
 	{
 	  /* Assume GOT offset is a valid displacement operand (< 4k
-	     or < 512k with z990).  This is handled the same way in
-	     both 31- and 64-bit code (@GOT).
+	     or < 512k with z990).
 	     lg <target>, sym@GOT(r12)  */
 
 	  if (reload_in_progress || reload_completed)
@@ -5566,12 +5501,6 @@ legitimize_pic_address (rtx orig, rtx reg)
 	  gcc_unreachable ();
 	  break;
 
-	  /* For @PLT larl is used.  This is handled like local
-	     symbol refs.  */
-	case UNSPEC_PLT31:
-	  gcc_unreachable ();
-	  break;
-
 	  /* Everything else cannot happen.  */
 	default:
 	  gcc_unreachable ();
@@ -5611,7 +5540,7 @@ s390_get_thread_pointer (void)
 {
   rtx tp = gen_reg_rtx (Pmode);
 
-  emit_insn (gen_get_thread_pointer (Pmode, tp));
+  emit_insn (gen_get_thread_pointerdi (tp));
 
   mark_reg_pointer (tp, BITS_PER_WORD);
 
@@ -5715,8 +5644,7 @@ legitimize_tls_address (rtx addr, rtx reg)
       case TLS_MODEL_INITIAL_EXEC:
 	if (flag_pic == 1)
 	  {
-	    /* Assume GOT offset < 4k.  This is handled the same way
-	       in both 31- and 64-bit code.  */
+	    /* Assume GOT offset < 4k.  */
 
 	    if (reload_in_progress || reload_completed)
 	      df_set_regs_ever_live (PIC_OFFSET_TABLE_REGNUM, true);
@@ -6329,12 +6257,8 @@ s390_expand_setmem (rtx dst, rtx len, rtx val, rtx min_len_rtx, rtx max_len_rtx)
   else if (TARGET_MVCLE)
     {
       val = force_not_mem (convert_modes (Pmode, QImode, val, 1));
-      if (TARGET_64BIT)
-	emit_insn (gen_setmem_long_di (dst, convert_to_mode (Pmode, len, 1),
-				       val));
-      else
-	emit_insn (gen_setmem_long_si (dst, convert_to_mode (Pmode, len, 1),
-				       val));
+      emit_insn (gen_setmem_long_di (dst, convert_to_mode (Pmode, len, 1),
+				     val));
     }
 
   /* Non-constant length and no loop required.  */
@@ -6762,12 +6686,8 @@ s390_expand_vec_strlen (rtx target, rtx string, rtx alignment)
   s390_load_address (highest_index_to_load_reg,
 		     gen_rtx_PLUS (Pmode, highest_index_to_load_reg,
 				   const1_rtx));
-  if (TARGET_64BIT)
-    emit_insn (gen_movdicc (str_idx_reg, cond,
-			    highest_index_to_load_reg, str_idx_reg));
-  else
-    emit_insn (gen_movsicc (str_idx_reg, cond,
-			    highest_index_to_load_reg, str_idx_reg));
+  emit_insn (gen_movdicc (str_idx_reg, cond,
+			  highest_index_to_load_reg, str_idx_reg));
 
   add_reg_br_prob_note (s390_emit_jump (is_aligned_label, cond),
 			profile_probability::very_unlikely ());
@@ -7108,8 +7028,7 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
 
   /* Generate INSERT IMMEDIATE (IILL et al).  */
   /* (set (ze (reg)) (const_int)).  */
-  if (TARGET_ZARCH
-      && register_operand (dest, word_mode)
+  if (register_operand (dest, DImode)
       && (bitpos % 16) == 0
       && (bitsize % 16) == 0
       && const_int_operand (src, VOIDmode))
@@ -7129,7 +7048,7 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
 
 	  putsize = GET_MODE_BITSIZE (putmode);
 	  regpos -= putsize;
-	  emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest,
+	  emit_move_insn (gen_rtx_ZERO_EXTRACT (DImode, dest,
 						GEN_INT (putsize),
 						GEN_INT (regpos)),
 			  gen_int_mode (val, putmode));
@@ -7147,7 +7066,7 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
   if (bitpos == 0
       && (bitsize % BITS_PER_UNIT) == 0
       && MEM_P (dest)
-      && (register_operand (src, word_mode)
+      && (register_operand (src, DImode)
 	  || const_int_operand (src, VOIDmode)))
     {
       /* Emit standard pattern if possible.  */
@@ -7162,7 +7081,7 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
       else if (const_int_operand (src, VOIDmode))
 	{
 	  int size = bitsize / BITS_PER_UNIT;
-	  rtx src_mem = adjust_address (force_const_mem (word_mode, src),
+	  rtx src_mem = adjust_address (force_const_mem (DImode, src),
 					BLKmode,
 					UNITS_PER_WORD - size);
 
@@ -7174,10 +7093,10 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
 	}
 
       /* (set (ze (mem)) (reg)).  */
-      else if (register_operand (src, word_mode))
+      else if (register_operand (src, DImode))
 	{
 	  if (bitsize <= 32)
-	    emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest, op1,
+	    emit_move_insn (gen_rtx_ZERO_EXTRACT (DImode, dest, op1,
 						  const0_rtx), src);
 	  else
 	    {
@@ -7188,10 +7107,10 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src)
 	      emit_move_insn (adjust_address (dest, SImode, size),
 			      gen_lowpart (SImode, src));
 	      set_mem_size (dest, size);
-	      emit_move_insn (gen_rtx_ZERO_EXTRACT (word_mode, dest,
+	      emit_move_insn (gen_rtx_ZERO_EXTRACT (DImode, dest,
 						    GEN_INT (stcmh_width),
 						    const0_rtx),
-			      gen_rtx_LSHIFTRT (word_mode, src, GEN_INT (32)));
+			      gen_rtx_LSHIFTRT (DImode, src, GEN_INT (32)));
 	    }
 	  return true;
 	}
@@ -8467,7 +8386,6 @@ s390_dwarf_frame_reg_mode (int regno)
 {
   machine_mode save_mode = default_dwarf_frame_reg_mode (regno);
 
-  /* Make sure not to return DImode for any GPR with -m31 -mzarch.  */
   if (GENERAL_REGNO_P (regno))
     save_mode = Pmode;
 
@@ -8506,7 +8424,7 @@ s390_mangle_type (const_tree type)
 static bool
 s390_libgcc_floating_mode_supported_p (scalar_float_mode mode)
 {
-  return (TARGET_64BIT && TARGET_Z10 && mode == HFmode)
+  return (TARGET_Z10 && mode == HFmode)
 	 || default_libgcc_floating_mode_supported_p (mode);
 }
 
@@ -8562,8 +8480,7 @@ s390_delegitimize_address (rtx orig_x)
 
       y = XEXP (x, 0);
       if (GET_CODE (y) == UNSPEC
-	  && (XINT (y, 1) == UNSPEC_GOTENT
-	      || XINT (y, 1) == UNSPEC_PLT31))
+	  && XINT (y, 1) == UNSPEC_GOTENT)
 	return XVECEXP (y, 0, 0);
       else
 	return orig_x;
@@ -8593,8 +8510,7 @@ s390_delegitimize_address (rtx orig_x)
 
       y = XEXP (x, 0);
       if (GET_CODE (y) == UNSPEC
-	  && (XINT (y, 1) == UNSPEC_GOTENT
-	      || XINT (y, 1) == UNSPEC_PLT31))
+	  && XINT (y, 1) == UNSPEC_GOTENT)
 	y = XVECEXP (y, 0, 0);
       else
 	return orig_x;
@@ -8701,8 +8617,7 @@ s390_function_num_hotpatch_hw (tree decl,
 static void
 s390_asm_output_machine_for_arch (FILE *asm_out_file)
 {
-  fprintf (asm_out_file, "\t.machinemode %s\n",
-	   (TARGET_ZARCH) ? "zarch" : "esa");
+  fprintf (asm_out_file, "\t.machinemode zarch\n");
   fprintf (asm_out_file, "\t.machine \"%s",
 	   processor_table[s390_arch].binutils_name);
   if (S390_USE_ARCHITECTURE_MODIFIERS)
@@ -8779,10 +8694,9 @@ s390_asm_output_function_label (FILE *out_file, const char *fname,
 
       /* Note:  The function label must be aligned so that (a) the bytes of the
 	 following nop do not cross a cacheline boundary, and (b) a jump address
-	 (eight bytes for 64 bit targets, 4 bytes for 32 bit targets) can be
-	 stored directly before the label without crossing a cacheline
-	 boundary.  All this is necessary to make sure the trampoline code can
-	 be changed atomically.
+	 (eight bytes) can be stored directly before the label without crossing
+	 a cacheline boundary.  All this is necessary to make sure the
+	 trampoline code can be changed atomically.
 	 This alignment is done automatically using the FOUNCTION_BOUNDARY, but
 	 if there are NOPs before the function label, the alignment is placed
 	 before them.  So it is necessary to duplicate the alignment after the
@@ -8847,10 +8761,6 @@ s390_output_addr_const_extra (FILE *file, rtx x)
 	output_addr_const (file, XVECEXP (x, 0, 0));
 	fprintf (file, "@GOTOFF");
 	return true;
-      case UNSPEC_PLT31:
-	output_addr_const (file, XVECEXP (x, 0, 0));
-	fprintf (file, "@PLT");
-	return true;
       case UNSPEC_PLTOFF:
 	output_addr_const (file, XVECEXP (x, 0, 0));
 	fprintf (file, "@PLTOFF");
@@ -10570,9 +10480,9 @@ s390_return_addr_rtx (int count, rtx frame ATTRIBUTE_UNUSED)
     return get_hard_reg_initial_val (Pmode, RETURN_REGNUM);
 
   if (TARGET_PACKED_STACK)
-    offset = -2 * UNITS_PER_LONG;
+    offset = -2 * UNITS_PER_WORD;
   else
-    offset = RETURN_REGNUM * UNITS_PER_LONG;
+    offset = RETURN_REGNUM * UNITS_PER_WORD;
 
   addr = plus_constant (Pmode, frame, offset);
   addr = memory_address (Pmode, addr);
@@ -10591,7 +10501,7 @@ s390_back_chain_rtx (void)
 
   if (TARGET_PACKED_STACK)
     chain = plus_constant (Pmode, stack_pointer_rtx,
-			   STACK_POINTER_OFFSET - UNITS_PER_LONG);
+			   STACK_POINTER_OFFSET - UNITS_PER_WORD);
   else
     chain = stack_pointer_rtx;
 
@@ -10743,31 +10653,18 @@ s390_frame_area (int *area_bottom, int *area_top)
   if (cfun_frame_layout.first_restore_gpr != -1)
     {
       b = (cfun_frame_layout.gprs_offset
-	   + cfun_frame_layout.first_restore_gpr * UNITS_PER_LONG);
+	   + cfun_frame_layout.first_restore_gpr * UNITS_PER_WORD);
       t = b + (cfun_frame_layout.last_restore_gpr
-	       - cfun_frame_layout.first_restore_gpr + 1) * UNITS_PER_LONG;
+	       - cfun_frame_layout.first_restore_gpr + 1) * UNITS_PER_WORD;
     }
 
-  if (TARGET_64BIT && cfun_save_high_fprs_p)
+  if (cfun_save_high_fprs_p)
     {
       b = MIN (b, cfun_frame_layout.f8_offset);
       t = MAX (t, (cfun_frame_layout.f8_offset
 		   + cfun_frame_layout.high_fprs * 8));
     }
 
-  if (!TARGET_64BIT)
-    {
-      if (cfun_fpr_save_p (FPR4_REGNUM))
-	{
-	  b = MIN (b, cfun_frame_layout.f4_offset);
-	  t = MAX (t, cfun_frame_layout.f4_offset + 8);
-	}
-      if (cfun_fpr_save_p (FPR6_REGNUM))
-	{
-	  b = MIN (b, cfun_frame_layout.f4_offset + 8);
-	  t = MAX (t, cfun_frame_layout.f4_offset + 16);
-	}
-    }
   *area_bottom = b;
   *area_top = t;
 }
@@ -10827,8 +10724,7 @@ s390_register_info_arg_fpr ()
   int min_preserve_fpr = INT_MAX, max_preserve_fpr = -1;
   int min_fpr, max_fpr;
 
-  /* Save the FP argument regs for stdarg. f0, f2 for 31 bit and
-     f0-f4 for 64 bit.  */
+  /* Save the FP argument regs f0-f4 for stdarg.  */
   if (cfun->stdarg
       && TARGET_HARD_FLOAT
       && cfun->va_list_fpr_size
@@ -11107,7 +11003,7 @@ s390_frame_info (void)
   cfun_frame_layout.last_save_gpr_slot = cfun_frame_layout.last_save_gpr;
 
   /* The va_arg builtin uses a constant distance of 16 *
-     UNITS_PER_LONG (r0-r15) to reach the FPRs from the reg_save_area
+     UNITS_PER_WORD (r0-r15) to reach the FPRs from the reg_save_area
      pointer.  So even if we are going to save the stack pointer in an
      FPR we need the stack space in order to keep the offsets
      correct.  */
@@ -11120,26 +11016,23 @@ s390_frame_info (void)
     }
 
   cfun_frame_layout.frame_size = get_frame_size ();
-  if (!TARGET_64BIT && cfun_frame_layout.frame_size > 0x7fff0000)
-    fatal_error (input_location,
-		 "total size of local variables exceeds architecture limit");
 
   if (!TARGET_PACKED_STACK)
     {
       /* Fixed stack layout.  */
       cfun_frame_layout.backchain_offset = 0;
-      cfun_frame_layout.f0_offset = 16 * UNITS_PER_LONG;
+      cfun_frame_layout.f0_offset = 16 * UNITS_PER_WORD;
       cfun_frame_layout.f4_offset = cfun_frame_layout.f0_offset + 2 * 8;
       cfun_frame_layout.f8_offset = -cfun_frame_layout.high_fprs * 8;
       cfun_frame_layout.gprs_offset = (cfun_frame_layout.first_save_gpr_slot
-				       * UNITS_PER_LONG);
+				       * UNITS_PER_WORD);
     }
   else if (TARGET_BACKCHAIN)
     {
       /* Kernel stack layout - packed stack, backchain, no float  */
       gcc_assert (TARGET_SOFT_FLOAT);
       cfun_frame_layout.backchain_offset = (STACK_POINTER_OFFSET
-					    - UNITS_PER_LONG);
+					    - UNITS_PER_WORD);
 
       /* The distance between the backchain and the return address
 	 save slot must not change.  So we always need a slot for the
@@ -11162,7 +11055,7 @@ s390_frame_info (void)
       /* Packed stack layout without backchain.  */
 
       /* With stdarg FPRs need their dedicated slots.  */
-      num_fprs = (TARGET_64BIT && cfun->stdarg ? 2
+      num_fprs = (cfun->stdarg ? 2
 		  : (cfun_fpr_save_p (FPR4_REGNUM) +
 		     cfun_fpr_save_p (FPR6_REGNUM)));
       cfun_frame_layout.f4_offset = STACK_POINTER_OFFSET - 8 * num_fprs;
@@ -11211,9 +11104,7 @@ s390_frame_info (void)
 
   cfun_frame_layout.frame_size += STACK_POINTER_OFFSET - lowest_offset;
 
-  /* If under 31 bit an odd number of gprs has to be saved we have to
-     adjust the frame size to sustain 8 byte alignment of stack
-     frames.  */
+  /* Adjust frame size to sustain 8 byte alignment of stack frames.  */
   cfun_frame_layout.frame_size = ((cfun_frame_layout.frame_size +
 				   STACK_BOUNDARY / BITS_PER_UNIT - 1)
 				  & ~(STACK_BOUNDARY / BITS_PER_UNIT - 1));
@@ -11490,11 +11381,7 @@ s390_hard_regno_mode_ok (unsigned int regno, machine_mode mode)
       /* fallthrough */
     case GENERAL_REGS:
       if (REGNO_PAIR_OK (regno, mode))
-	{
-	  if (TARGET_ZARCH
-	      || (mode != TFmode && mode != TCmode && mode != TDmode))
-	    return true;
-	}
+	return true;
       break;
     case CC_REGS:
       if (GET_MODE_CLASS (mode) == MODE_CC)
@@ -11563,32 +11450,16 @@ s390_hard_regno_scratch_ok (unsigned int regno)
   return true;
 }
 
-/* Implement TARGET_HARD_REGNO_CALL_PART_CLOBBERED.  When generating
-   code that runs in z/Architecture mode, but conforms to the 31-bit
-   ABI, GPRs can hold 8 bytes; the ABI guarantees only that the lower 4
-   bytes are saved across calls, however.  */
+/* Implement TARGET_HARD_REGNO_CALL_PART_CLOBBERED.  */
 
 static bool
 s390_hard_regno_call_part_clobbered (unsigned int, unsigned int regno,
 				     machine_mode mode)
 {
-  /* For r12 we know that the only bits we actually care about are
-     preserved across function calls.  Since r12 is a fixed reg all
-     accesses to r12 are generated by the backend.
-
-     This workaround is necessary until gcse implements proper
-     tracking of partially clobbered registers.  */
-  if (!TARGET_64BIT
-      && TARGET_ZARCH
-      && GET_MODE_SIZE (mode) > 4
-      && (!flag_pic || regno != PIC_OFFSET_TABLE_REGNUM)
-      && ((regno >= 6 && regno <= 15) || regno == 32))
-    return true;
-
   if (TARGET_VX
       && GET_MODE_SIZE (mode) > 8
-      && (((TARGET_64BIT && regno >= 24 && regno <= 31))
-	  || (!TARGET_64BIT && (regno == 18 || regno == 19))))
+      && regno >= 24
+      && regno <= 31)
     return true;
 
   return false;
@@ -11789,7 +11660,7 @@ s390_initial_elimination_offset (int from, int to)
 	 reside.  */
       offset = (cfun_frame_layout.frame_size + cfun_frame_layout.gprs_offset +
 		(RETURN_REGNUM - cfun_frame_layout.first_save_gpr_slot) *
-		UNITS_PER_LONG);
+		UNITS_PER_WORD);
       break;
 
     case BASE_REGNUM:
@@ -11864,10 +11735,7 @@ save_gprs (rtx base, int offset, int first, int last, rtx_insn *before = NULL)
   /* Special-case single register.  */
   if (first == last)
     {
-      if (TARGET_64BIT)
-	insn = gen_movdi (addr, gen_rtx_REG (Pmode, first));
-      else
-	insn = gen_movsi (addr, gen_rtx_REG (Pmode, first));
+      insn = gen_movdi (addr, gen_rtx_REG (Pmode, first));
 
       if (!global_not_special_regno_p (first))
 	RTX_FRAME_RELATED_P (insn) = 1;
@@ -11935,7 +11803,7 @@ save_gprs (rtx base, int offset, int first, int last, rtx_insn *before = NULL)
 	    {
 	      rtx reg = gen_rtx_REG (Pmode, regno);
 	      rtx reg_addr = plus_constant (Pmode, base,
-					    offset + (regno - first) * UNITS_PER_LONG);
+					    offset + (regno - first) * UNITS_PER_WORD);
 	      if (!s390_restore_gpr_p (regno))
 		add_reg_note (insn, REG_CFA_NO_RESTORE, reg);
 	      add_reg_note (insn, REG_CFA_OFFSET,
@@ -11955,16 +11823,12 @@ save_gprs (rtx base, int offset, int first, int last, rtx_insn *before = NULL)
 	goto emit;
 
       addr = plus_constant (Pmode, base,
-			    offset + (start - first) * UNITS_PER_LONG);
+			    offset + (start - first) * UNITS_PER_WORD);
 
       if (start == last)
 	{
-	  if (TARGET_64BIT)
-	    note = gen_movdi (gen_rtx_MEM (Pmode, addr),
-			      gen_rtx_REG (Pmode, start));
-	  else
-	    note = gen_movsi (gen_rtx_MEM (Pmode, addr),
-			      gen_rtx_REG (Pmode, start));
+	  note = gen_movdi (gen_rtx_MEM (Pmode, addr),
+			    gen_rtx_REG (Pmode, start));
 	  note = PATTERN (note);
 
 	  add_reg_note (insn, REG_FRAME_RELATED_EXPR, note);
@@ -12013,10 +11877,7 @@ restore_gprs (rtx base, int offset, int first, int last)
   /* Special-case single register.  */
   if (first == last)
     {
-      if (TARGET_64BIT)
-	insn = gen_movdi (gen_rtx_REG (Pmode, first), addr);
-      else
-	insn = gen_movsi (gen_rtx_REG (Pmode, first), addr);
+      insn = gen_movdi (gen_rtx_REG (Pmode, first), addr);
 
       RTX_FRAME_RELATED_P (insn) = 1;
       return insn;
@@ -12058,9 +11919,9 @@ s390_emit_stack_tie (void)
 {
   rtx mem = gen_frame_mem (BLKmode, stack_pointer_rtx);
   if (frame_pointer_needed)
-    emit_insn (gen_stack_tie (Pmode, mem, hard_frame_pointer_rtx));
+    emit_insn (gen_stack_tiedi (mem, hard_frame_pointer_rtx));
   else
-    emit_insn (gen_stack_tie (Pmode, mem, stack_pointer_rtx));
+    emit_insn (gen_stack_tiedi (mem, stack_pointer_rtx));
 }
 
 /* Copy GPRS into FPR save slots.  */
@@ -12267,7 +12128,7 @@ s390_prologue_plus_offset (rtx target, rtx reg, rtx offset, bool frame_related_p
 static void
 s390_emit_stack_probe (rtx addr)
 {
-  rtx mem = gen_rtx_MEM (word_mode, addr);
+  rtx mem = gen_rtx_MEM (DImode, addr);
   MEM_VOLATILE_P (mem) = 1;
   emit_insn (gen_probe_stack (mem));
 }
@@ -12298,7 +12159,7 @@ allocate_stack_space (rtx size, HOST_WIDE_INT last_probe_offset,
 	dump_stack_clash_frame_info (NO_PROBE_SMALL_FRAME, true);
       else
 	{
-	  rtx offset = GEN_INT (probe_interval - UNITS_PER_LONG);
+	  rtx offset = GEN_INT (probe_interval - UNITS_PER_WORD);
 	  HOST_WIDE_INT rounded_size = -INTVAL (size) & -probe_interval;
 	  HOST_WIDE_INT num_probes = rounded_size / probe_interval;
 	  HOST_WIDE_INT residual = -INTVAL (size) - rounded_size;
@@ -12364,7 +12225,7 @@ allocate_stack_space (rtx size, HOST_WIDE_INT last_probe_offset,
 	    s390_emit_stack_probe (gen_rtx_PLUS (Pmode,
 						 stack_pointer_rtx,
 						 GEN_INT (residual
-							  - UNITS_PER_LONG)));
+							  - UNITS_PER_WORD)));
 
 	  return temp_reg_clobbered_p;
 	}
@@ -12412,7 +12273,7 @@ s390_emit_prologue (void)
     = 1 << param_stack_clash_protection_probe_interval;
   HOST_WIDE_INT last_probe_offset
     = (TARGET_BACKCHAIN
-       ? (TARGET_PACKED_STACK ? STACK_POINTER_OFFSET - UNITS_PER_LONG : 0)
+       ? (TARGET_PACKED_STACK ? STACK_POINTER_OFFSET - UNITS_PER_WORD : 0)
        : probe_interval - (STACK_BOUNDARY / UNITS_PER_WORD));
 
   s390_save_gprs_to_fprs ();
@@ -12422,7 +12283,7 @@ s390_emit_prologue (void)
     {
       save_gprs (stack_pointer_rtx,
 		 cfun_frame_layout.gprs_offset +
-		 UNITS_PER_LONG * (cfun_frame_layout.first_save_gpr
+		 UNITS_PER_WORD * (cfun_frame_layout.first_save_gpr
 				   - cfun_frame_layout.first_save_gpr_slot),
 		 cfun_frame_layout.first_save_gpr,
 		 cfun_frame_layout.last_save_gpr);
@@ -12431,7 +12292,7 @@ s390_emit_prologue (void)
 	 then LAST_PROBE_OFFSET can move even closer to sp.  */
       last_probe_offset
 	= (cfun_frame_layout.gprs_offset +
-	   UNITS_PER_LONG * (cfun_frame_layout.first_save_gpr
+	   UNITS_PER_WORD * (cfun_frame_layout.first_save_gpr
 			     - cfun_frame_layout.first_save_gpr_slot));
     }
 
@@ -12552,14 +12413,9 @@ s390_emit_prologue (void)
 
 		  rtx t = gen_rtx_AND (Pmode, stack_pointer_rtx,
 				       GEN_INT (stack_check_mask));
-		  if (TARGET_64BIT)
-		    emit_insn (gen_ctrapdi4 (gen_rtx_EQ (VOIDmode,
-							 t, const0_rtx),
-					     t, const0_rtx, const0_rtx));
-		  else
-		    emit_insn (gen_ctrapsi4 (gen_rtx_EQ (VOIDmode,
-							 t, const0_rtx),
-					     t, const0_rtx, const0_rtx));
+		  emit_insn (gen_ctrapdi4 (gen_rtx_EQ (VOIDmode,
+						       t, const0_rtx),
+					   t, const0_rtx, const0_rtx));
 		}
 	    }
 	}
@@ -12775,31 +12631,10 @@ s390_emit_epilogue (bool sibcall)
 
   /* Restore call saved fprs.  */
 
-  if (TARGET_64BIT)
-    {
-      if (cfun_save_high_fprs_p)
-	{
-	  next_offset = cfun_frame_layout.f8_offset;
-	  for (i = FPR8_REGNUM; i <= FPR15_REGNUM; i++)
-	    {
-	      if (cfun_fpr_save_p (i))
-		{
-		  restore_fpr (frame_pointer,
-			       offset + next_offset, i);
-		  cfa_restores
-		    = alloc_reg_note (REG_CFA_RESTORE,
-				      gen_rtx_REG (DFmode, i), cfa_restores);
-		  next_offset += 8;
-		}
-	    }
-	}
-
-    }
-  else
+  if (cfun_save_high_fprs_p)
     {
-      next_offset = cfun_frame_layout.f4_offset;
-      /* f4, f6 */
-      for (i = FPR4_REGNUM; i <= FPR4_REGNUM + 1; i++)
+      next_offset = cfun_frame_layout.f8_offset;
+      for (i = FPR8_REGNUM; i <= FPR15_REGNUM; i++)
 	{
 	  if (cfun_fpr_save_p (i))
 	    {
@@ -12810,10 +12645,7 @@ s390_emit_epilogue (bool sibcall)
 				  gen_rtx_REG (DFmode, i), cfa_restores);
 	      next_offset += 8;
 	    }
-	  else if (!TARGET_PACKED_STACK)
-	    next_offset += 8;
 	}
-
     }
 
   /* Restore call saved gprs.  */
@@ -12835,7 +12667,7 @@ s390_emit_epilogue (bool sibcall)
 	      addr = plus_constant (Pmode, frame_pointer,
 				    offset + cfun_frame_layout.gprs_offset
 				    + (i - cfun_frame_layout.first_save_gpr_slot)
-				    * UNITS_PER_LONG);
+				    * UNITS_PER_WORD);
 	      addr = gen_rtx_MEM (Pmode, addr);
 	      set_mem_alias_set (addr, get_frame_alias_set ());
 	      emit_move_insn (addr, gen_rtx_REG (Pmode, i));
@@ -12875,7 +12707,7 @@ s390_emit_epilogue (bool sibcall)
 				offset + cfun_frame_layout.gprs_offset
 				+ (RETURN_REGNUM
 				   - cfun_frame_layout.first_save_gpr_slot)
-				* UNITS_PER_LONG);
+				* UNITS_PER_WORD);
 	  addr = gen_rtx_MEM (Pmode, addr);
 	  set_mem_alias_set (addr, get_frame_alias_set ());
 	  emit_move_insn (return_reg, addr);
@@ -12891,7 +12723,7 @@ s390_emit_epilogue (bool sibcall)
 			   offset + cfun_frame_layout.gprs_offset
 			   + (cfun_frame_layout.first_restore_gpr
 			      - cfun_frame_layout.first_save_gpr_slot)
-			   * UNITS_PER_LONG,
+			   * UNITS_PER_WORD,
 			   cfun_frame_layout.first_restore_gpr,
 			   cfun_frame_layout.last_restore_gpr);
       insn = emit_insn (insn);
@@ -12956,25 +12788,13 @@ s390_output_split_stack_data (rtx parm_block, rtx call_done,
   switch_to_section (targetm.asm_out.function_rodata_section
 		     (current_function_decl, false));
 
-  if (TARGET_64BIT)
-    output_asm_insn (".align\t8", NULL);
-  else
-    output_asm_insn (".align\t4", NULL);
+  output_asm_insn (".align\t8", NULL);
 
   (*targetm.asm_out.internal_label) (asm_out_file, "L",
 				     CODE_LABEL_NUMBER (parm_block));
-  if (TARGET_64BIT)
-    {
-      output_asm_insn (".quad\t%0", &frame_size);
-      output_asm_insn (".quad\t%0", &args_size);
-      output_asm_insn (".quad\t%1-%0", ops);
-    }
-  else
-    {
-      output_asm_insn (".long\t%0", &frame_size);
-      output_asm_insn (".long\t%0", &args_size);
-      output_asm_insn (".long\t%1-%0", ops);
-    }
+  output_asm_insn (".quad\t%0", &frame_size);
+  output_asm_insn (".quad\t%0", &args_size);
+  output_asm_insn (".quad\t%1-%0", ops);
 
   switch_to_section (current_function_section ());
 }
@@ -12988,7 +12808,7 @@ s390_expand_split_stack_prologue (void)
   rtx r1, guard, cc = NULL;
   rtx_insn *insn;
   /* Offset from thread pointer to __private_ss.  */
-  int psso = TARGET_64BIT ? 0x38 : 0x20;
+  int psso = 0x38;
   /* Pointer size in bytes.  */
   /* Frame size and argument size - the two parameters to __morestack.  */
   HOST_WIDE_INT frame_size = cfun_frame_layout.frame_size;
@@ -13034,7 +12854,7 @@ s390_expand_split_stack_prologue (void)
       /* Get thread pointer.  r1 is the only register we can always destroy - r0
 	 could contain a static chain (and cannot be used to address memory
 	 anyway), r2-r6 can contain parameters, and r6-r15 are callee-saved.  */
-      emit_insn (gen_get_thread_pointer (Pmode, r1));
+      emit_insn (gen_get_thread_pointerdi (r1));
       /* Aim at __private_ss.  */
       guard = gen_rtx_MEM (Pmode, plus_constant (Pmode, r1, psso));
 
@@ -13043,10 +12863,7 @@ s390_expand_split_stack_prologue (void)
       if (frame_size > SPLIT_STACK_AVAILABLE)
 	{
 	  emit_move_insn (r1, guard);
-	  if (TARGET_64BIT)
-	    emit_insn (gen_adddi3 (r1, r1, GEN_INT (frame_size)));
-	  else
-	    emit_insn (gen_addsi3 (r1, r1, GEN_INT (frame_size)));
+	  emit_insn (gen_adddi3 (r1, r1, GEN_INT (frame_size)));
 	  guard = r1;
 	}
 
@@ -13068,20 +12885,18 @@ s390_expand_split_stack_prologue (void)
      conventions: it preserves param/return/static chain registers for
      calling main function body, and looks for its own parameters at %r1. */
   if (cc != NULL)
-    tmp = gen_split_stack_cond_call (Pmode,
-				     morestack_ref,
-				     parm_base,
-				     call_done,
-				     GEN_INT (frame_size),
-				     GEN_INT (args_size),
-				     cc);
+    tmp = gen_split_stack_cond_calldi (morestack_ref,
+				       parm_base,
+				       call_done,
+				       GEN_INT (frame_size),
+				       GEN_INT (args_size),
+				       cc);
   else
-    tmp = gen_split_stack_call (Pmode,
-				morestack_ref,
-				parm_base,
-				call_done,
-				GEN_INT (frame_size),
-				GEN_INT (args_size));
+    tmp = gen_split_stack_calldi (morestack_ref,
+				  parm_base,
+				  call_done,
+				  GEN_INT (frame_size),
+				  GEN_INT (args_size));
 
   insn = emit_jump_insn (tmp);
   JUMP_LABEL (insn) = call_done;
@@ -13159,13 +12974,6 @@ s390_can_use_return_insn (void)
     if (cfun_gpr_save_slot (i) != SAVE_SLOT_NONE)
       return false;
 
-  /* For 31 bit this is not covered by the frame_size check below
-     since f4, f6 are saved in the register save area without needing
-     additional stack space.  */
-  if (!TARGET_64BIT
-      && (cfun_fpr_save_p (FPR4_REGNUM) || cfun_fpr_save_p (FPR6_REGNUM)))
-    return false;
-
   if (cfun->machine->base_reg
       && !call_used_regs[REGNO (cfun->machine->base_reg)])
     return false;
@@ -13461,8 +13269,7 @@ s390_function_arg_advance (cumulative_args_t cum_v,
     }
   else if (s390_function_arg_integer (arg.mode, arg.type))
     {
-      int size = s390_function_arg_size (arg.mode, arg.type);
-      cum->gprs += ((size + UNITS_PER_LONG - 1) / UNITS_PER_LONG);
+      cum->gprs += 1;
     }
   else
     gcc_unreachable ();
@@ -13478,9 +13285,8 @@ s390_function_arg_advance (cumulative_args_t cum_v,
 
    On S/390, we use general purpose registers 2 through 6 to
    pass integer, pointer, and certain structure arguments, and
-   floating point registers 0 and 2 (0, 2, 4, and 6 on 64-bit)
-   to pass floating point arguments.  All remaining arguments
-   are pushed to the stack.  */
+   floating point registers 0, 2, 4, and 6 to pass floating point
+   arguments.  All remaining arguments are pushed to the stack.  */
 
 static rtx
 s390_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
@@ -13508,26 +13314,10 @@ s390_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
     }
   else if (s390_function_arg_integer (arg.mode, arg.type))
     {
-      int size = s390_function_arg_size (arg.mode, arg.type);
-      int n_gprs = (size + UNITS_PER_LONG - 1) / UNITS_PER_LONG;
-
-      if (cum->gprs + n_gprs > GP_ARG_NUM_REG)
+      if (cum->gprs + 1 > GP_ARG_NUM_REG)
 	return NULL_RTX;
-      else if (n_gprs == 1 || UNITS_PER_WORD == UNITS_PER_LONG)
+      else
 	return gen_rtx_REG (arg.mode, cum->gprs + 2);
-      else if (n_gprs == 2)
-	{
-	  rtvec p = rtvec_alloc (2);
-
-	  RTVEC_ELT (p, 0)
-	    = gen_rtx_EXPR_LIST (SImode, gen_rtx_REG (SImode, cum->gprs + 2),
-					 const0_rtx);
-	  RTVEC_ELT (p, 1)
-	    = gen_rtx_EXPR_LIST (SImode, gen_rtx_REG (SImode, cum->gprs + 3),
-					 GEN_INT (4));
-
-	  return gen_rtx_PARALLEL (arg.mode, p);
-	}
     }
 
   /* After the real arguments, expand_call calls us once again with an
@@ -13589,16 +13379,20 @@ s390_return_in_memory (const_tree type, const_tree fundecl ATTRIBUTE_UNUSED)
 /* Function arguments and return values are promoted to word size.  */
 
 static machine_mode
-s390_promote_function_mode (const_tree type, machine_mode mode,
-			    int *punsignedp,
+s390_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
+			    machine_mode mode,
+			    int *punsignedp ATTRIBUTE_UNUSED,
 			    const_tree fntype ATTRIBUTE_UNUSED,
 			    int for_return ATTRIBUTE_UNUSED)
 {
   if (INTEGRAL_MODE_P (mode)
-      && GET_MODE_SIZE (mode) < UNITS_PER_LONG)
+      && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
     {
+/* This is defined for TPF.  */
+#ifdef POINTERS_EXTEND_UNSIGNED
       if (type != NULL_TREE && POINTER_TYPE_P (type))
 	*punsignedp = POINTERS_EXTEND_UNSIGNED;
+#endif
       return Pmode;
     }
 
@@ -13639,26 +13433,7 @@ s390_function_and_libcall_value (machine_mode mode,
     return gen_rtx_REG (mode, FIRST_VEC_ARG_REGNO);
   else if (TARGET_HARD_FLOAT && SCALAR_FLOAT_MODE_P (mode))
     return gen_rtx_REG (mode, 16);
-  else if (GET_MODE_SIZE (mode) <= UNITS_PER_LONG
-	   || UNITS_PER_LONG == UNITS_PER_WORD)
-    return gen_rtx_REG (mode, 2);
-  else if (GET_MODE_SIZE (mode) == 2 * UNITS_PER_LONG)
-    {
-      /* This case is triggered when returning a 64 bit value with
-	 -m31 -mzarch.  Although the value would fit into a single
-	 register it has to be forced into a 32 bit register pair in
-	 order to match the ABI.  */
-      rtvec p = rtvec_alloc (2);
-
-      RTVEC_ELT (p, 0)
-	= gen_rtx_EXPR_LIST (SImode, gen_rtx_REG (SImode, 2), const0_rtx);
-      RTVEC_ELT (p, 1)
-	= gen_rtx_EXPR_LIST (SImode, gen_rtx_REG (SImode, 3), GEN_INT (4));
-
-      return gen_rtx_PARALLEL (mode, p);
-    }
-
-  gcc_unreachable ();
+  return gen_rtx_REG (mode, 2);
 }
 
 /* Define where to return a scalar return value of type RET_TYPE.  */
@@ -13852,7 +13627,7 @@ s390_va_start (tree valist, rtx nextarg ATTRIBUTE_UNUSED)
       || (cfun->va_list_fpr_size && n_fpr < FP_ARG_NUM_REG))
     {
       t = make_tree (TREE_TYPE (sav), return_address_pointer_rtx);
-      t = fold_build_pointer_plus_hwi (t, -RETURN_REGNUM * UNITS_PER_LONG);
+      t = fold_build_pointer_plus_hwi (t, -RETURN_REGNUM * UNITS_PER_WORD);
 
       t = build2 (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
       TREE_SIDE_EFFECTS (t) = 1;
@@ -13896,7 +13671,7 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
   int indirect_p, size, n_reg, sav_ofs, sav_scale, max_reg;
   tree lab_false, lab_over = NULL_TREE;
   tree addr = create_tmp_var (ptr_type_node, "addr");
-  bool left_align_p; /* How a value < UNITS_PER_LONG is aligned within
+  bool left_align_p; /* How a value < UNITS_PER_WORD is aligned within
 			a stack slot.  */
 
   f_gpr = TYPE_FIELDS (TREE_TYPE (va_list_type_node));
@@ -13930,12 +13705,9 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
       reg = gpr;
       n_reg = 1;
 
-      /* kernel stack layout on 31 bit: It is assumed here that no padding
-	 will be added by s390_frame_info because for va_args always an even
-	 number of gprs has to be saved r15-r2 = 14 regs.  */
-      sav_ofs = 2 * UNITS_PER_LONG;
-      sav_scale = UNITS_PER_LONG;
-      size = UNITS_PER_LONG;
+      sav_ofs = 2 * UNITS_PER_WORD;
+      sav_scale = UNITS_PER_WORD;
+      size = UNITS_PER_WORD;
       max_reg = GP_ARG_NUM_REG - n_reg;
       left_align_p = false;
     }
@@ -13967,7 +13739,7 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
       indirect_p = 0;
       reg = fpr;
       n_reg = 1;
-      sav_ofs = 16 * UNITS_PER_LONG;
+      sav_ofs = 16 * UNITS_PER_WORD;
       sav_scale = 8;
       max_reg = FP_ARG_NUM_REG - n_reg;
       left_align_p = false;
@@ -13983,17 +13755,14 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
       /* Otherwise into GP registers.  */
       indirect_p = 0;
       reg = gpr;
-      n_reg = (size + UNITS_PER_LONG - 1) / UNITS_PER_LONG;
+      n_reg = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
 
-      /* kernel stack layout on 31 bit: It is assumed here that no padding
-	 will be added by s390_frame_info because for va_args always an even
-	 number of gprs has to be saved r15-r2 = 14 regs.  */
-      sav_ofs = 2 * UNITS_PER_LONG;
+      sav_ofs = 2 * UNITS_PER_WORD;
 
-      if (size < UNITS_PER_LONG)
-	sav_ofs += UNITS_PER_LONG - size;
+      if (size < UNITS_PER_WORD)
+	sav_ofs += UNITS_PER_WORD - size;
 
-      sav_scale = UNITS_PER_LONG;
+      sav_scale = UNITS_PER_WORD;
       max_reg = GP_ARG_NUM_REG - n_reg;
       left_align_p = false;
     }
@@ -14037,15 +13806,15 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
   /* ... Otherwise out of the overflow area.  */
 
   t = ovf;
-  if (size < UNITS_PER_LONG && !left_align_p)
-    t = fold_build_pointer_plus_hwi (t, UNITS_PER_LONG - size);
+  if (size < UNITS_PER_WORD && !left_align_p)
+    t = fold_build_pointer_plus_hwi (t, UNITS_PER_WORD - size);
 
   gimplify_expr (&t, pre_p, NULL, is_gimple_val, fb_rvalue);
 
   gimplify_assign (addr, t, pre_p);
 
-  if (size < UNITS_PER_LONG && left_align_p)
-    t = fold_build_pointer_plus_hwi (t, UNITS_PER_LONG);
+  if (size < UNITS_PER_WORD && left_align_p)
+    t = fold_build_pointer_plus_hwi (t, UNITS_PER_WORD);
   else
     t = fold_build_pointer_plus_hwi (t, size);
 
@@ -14187,20 +13956,10 @@ s390_asm_trampoline_template (FILE *file)
   op[0] = gen_rtx_REG (Pmode, 0);
   op[1] = gen_rtx_REG (Pmode, 1);
 
-  if (TARGET_64BIT)
-    {
-      output_asm_insn ("basr\t%1,0", op);         /* 2 byte */
-      output_asm_insn ("lmg\t%0,%1,14(%1)", op);  /* 6 byte */
-      output_asm_insn ("br\t%1", op);             /* 2 byte */
-      ASM_OUTPUT_SKIP (file, (HOST_WIDE_INT)(TRAMPOLINE_SIZE - 10));
-    }
-  else
-    {
-      output_asm_insn ("basr\t%1,0", op);         /* 2 byte */
-      output_asm_insn ("lm\t%0,%1,6(%1)", op);    /* 4 byte */
-      output_asm_insn ("br\t%1", op);             /* 2 byte */
-      ASM_OUTPUT_SKIP (file, (HOST_WIDE_INT)(TRAMPOLINE_SIZE - 8));
-    }
+  output_asm_insn ("basr\t%1,0", op);         /* 2 byte */
+  output_asm_insn ("lmg\t%0,%1,14(%1)", op);  /* 6 byte */
+  output_asm_insn ("br\t%1", op);             /* 2 byte */
+  ASM_OUTPUT_SKIP (file, (HOST_WIDE_INT)(TRAMPOLINE_SIZE - 10));
 }
 
 /* Emit RTL insns to initialize the variable parts of a trampoline.
@@ -14214,11 +13973,11 @@ s390_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt)
   rtx mem;
 
   emit_block_move (m_tramp, assemble_trampoline_template (),
-		   GEN_INT (2 * UNITS_PER_LONG), BLOCK_OP_NORMAL);
+		   GEN_INT (2 * UNITS_PER_WORD), BLOCK_OP_NORMAL);
 
-  mem = adjust_address (m_tramp, Pmode, 2 * UNITS_PER_LONG);
+  mem = adjust_address (m_tramp, Pmode, 2 * UNITS_PER_WORD);
   emit_move_insn (mem, cxt);
-  mem = adjust_address (m_tramp, Pmode, 3 * UNITS_PER_LONG);
+  mem = adjust_address (m_tramp, Pmode, 3 * UNITS_PER_WORD);
   emit_move_insn (mem, fnaddr);
 }
 
@@ -14257,16 +14016,11 @@ s390_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
 
   op[0] = gen_rtx_REG (Pmode, RETURN_REGNUM);
   op[1] = gen_rtx_REG (Pmode, STACK_POINTER_REGNUM);
-  op[1] = gen_rtx_MEM (Pmode, plus_constant (Pmode, op[1], UNITS_PER_LONG));
-  op[3] = GEN_INT (UNITS_PER_LONG);
+  op[1] = gen_rtx_MEM (Pmode, plus_constant (Pmode, op[1], UNITS_PER_WORD));
+  op[3] = GEN_INT (UNITS_PER_WORD);
 
   op[2] = gen_rtx_SYMBOL_REF (Pmode, flag_fentry ? "__fentry__" : "_mcount");
   SYMBOL_REF_FLAGS (op[2]) |= SYMBOL_FLAG_FUNCTION;
-  if (flag_pic && !TARGET_64BIT)
-    {
-      op[2] = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op[2]), UNSPEC_PLT31);
-      op[2] = gen_rtx_CONST (Pmode, op[2]);
-    }
 
   if (flag_record_mcount)
     fprintf (file, "1:\n");
@@ -14281,43 +14035,25 @@ s390_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED)
       else
 	output_asm_insn ("brasl\t0,%2%K2", op);
     }
-  else if (TARGET_64BIT)
-    {
-      if (flag_nop_mcount)
-	output_asm_nops ("-mnop-mcount", /* stg */ 3 + /* brasl */ 3 +
-			 /* lg */ 3);
-      else
-	{
-	  output_asm_insn ("stg\t%0,%1", op);
-	  if (flag_dwarf2_cfi_asm)
-	    output_asm_insn (".cfi_rel_offset\t%0,%3", op);
-	  output_asm_insn ("brasl\t%0,%2%K2", op);
-	  output_asm_insn ("lg\t%0,%1", op);
-	  if (flag_dwarf2_cfi_asm)
-	    output_asm_insn (".cfi_restore\t%0", op);
-	}
-    }
+
+  if (flag_nop_mcount)
+    output_asm_nops ("-mnop-mcount", /* stg */ 3 + /* brasl */ 3 +
+		     /* lg */ 3);
   else
     {
-      if (flag_nop_mcount)
-	output_asm_nops ("-mnop-mcount", /* st */ 2 + /* brasl */ 3 +
-			 /* l */ 2);
-      else
-	{
-	  output_asm_insn ("st\t%0,%1", op);
-	  if (flag_dwarf2_cfi_asm)
-	    output_asm_insn (".cfi_rel_offset\t%0,%3", op);
-	  output_asm_insn ("brasl\t%0,%2%K2", op);
-	  output_asm_insn ("l\t%0,%1", op);
-	  if (flag_dwarf2_cfi_asm)
-	    output_asm_insn (".cfi_restore\t%0", op);
-	}
+      output_asm_insn ("stg\t%0,%1", op);
+      if (flag_dwarf2_cfi_asm)
+	output_asm_insn (".cfi_rel_offset\t%0,%3", op);
+      output_asm_insn ("brasl\t%0,%2%K2", op);
+      output_asm_insn ("lg\t%0,%1", op);
+      if (flag_dwarf2_cfi_asm)
+	output_asm_insn (".cfi_restore\t%0", op);
     }
 
   if (flag_record_mcount)
     {
       fprintf (file, "\t.section __mcount_loc, \"a\",@progbits\n");
-      fprintf (file, "\t.%s 1b\n", TARGET_64BIT ? "quad" : "long");
+      fprintf (file, "\t.quad 1b\n");
       fprintf (file, "\t.previous\n");
     }
 }
@@ -14386,7 +14122,6 @@ s390_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
 {
   const char *fnname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk));
   rtx op[10];
-  int nonlocal = 0;
 
   assemble_start_function (thunk, fnname);
   /* Make sure unwind info is emitted for the thunk if needed.  */
@@ -14394,15 +14129,6 @@ s390_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
 
   /* Operand 0 is the target function.  */
   op[0] = XEXP (DECL_RTL (function), 0);
-  if (flag_pic && !SYMBOL_REF_LOCAL_P (op[0]))
-    {
-      nonlocal = 1;
-      if (!TARGET_64BIT)
-	{
-	  op[0] = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op[0]), UNSPEC_GOT);
-	  op[0] = gen_rtx_CONST (Pmode, op[0]);
-	}
-    }
 
   /* Operand 1 is the 'this' pointer.  */
   if (aggregate_value_p (TREE_TYPE (TREE_TYPE (function)), function))
@@ -14429,220 +14155,88 @@ s390_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
   op[9] = NULL_RTX;
 
   /* Generate code.  */
-  if (TARGET_64BIT)
-    {
-      /* Setup literal pool pointer if required.  */
-      if ((!DISP_IN_RANGE (delta)
-	   && !CONST_OK_FOR_K (delta)
-	   && !CONST_OK_FOR_Os (delta))
-	  || (!DISP_IN_RANGE (vcall_offset)
-	      && !CONST_OK_FOR_K (vcall_offset)
-	      && !CONST_OK_FOR_Os (vcall_offset)))
-	{
-	  op[5] = gen_label_rtx ();
-	  output_asm_insn ("larl\t%4,%5", op);
-	}
-
-      /* Add DELTA to this pointer.  */
-      if (delta)
-	{
-	  if (CONST_OK_FOR_J (delta))
-	    output_asm_insn ("la\t%1,%2(%1)", op);
-	  else if (DISP_IN_RANGE (delta))
-	    output_asm_insn ("lay\t%1,%2(%1)", op);
-	  else if (CONST_OK_FOR_K (delta))
-	    output_asm_insn ("aghi\t%1,%2", op);
-	  else if (CONST_OK_FOR_Os (delta))
-	    output_asm_insn ("agfi\t%1,%2", op);
-	  else
-	    {
-	      op[6] = gen_label_rtx ();
-	      output_asm_insn ("agf\t%1,%6-%5(%4)", op);
-	    }
-	}
-
-      /* Perform vcall adjustment.  */
-      if (vcall_offset)
-	{
-	  if (DISP_IN_RANGE (vcall_offset))
-	    {
-	      output_asm_insn ("lg\t%4,0(%1)", op);
-	      output_asm_insn ("ag\t%1,%3(%4)", op);
-	    }
-	  else if (CONST_OK_FOR_K (vcall_offset))
-	    {
-	      output_asm_insn ("lghi\t%4,%3", op);
-	      output_asm_insn ("ag\t%4,0(%1)", op);
-	      output_asm_insn ("ag\t%1,0(%4)", op);
-	    }
-	  else if (CONST_OK_FOR_Os (vcall_offset))
-	    {
-	      output_asm_insn ("lgfi\t%4,%3", op);
-	      output_asm_insn ("ag\t%4,0(%1)", op);
-	      output_asm_insn ("ag\t%1,0(%4)", op);
-	    }
-	  else
-	    {
-	      op[7] = gen_label_rtx ();
-	      output_asm_insn ("llgf\t%4,%7-%5(%4)", op);
-	      output_asm_insn ("ag\t%4,0(%1)", op);
-	      output_asm_insn ("ag\t%1,0(%4)", op);
-	    }
-	}
-
-      /* Jump to target.  */
-      output_asm_insn ("jg\t%0%K0", op);
-
-      /* Output literal pool if required.  */
-      if (op[5])
-	{
-	  output_asm_insn (".align\t4", op);
-	  targetm.asm_out.internal_label (file, "L",
-					  CODE_LABEL_NUMBER (op[5]));
-	}
-      if (op[6])
-	{
-	  targetm.asm_out.internal_label (file, "L",
-					  CODE_LABEL_NUMBER (op[6]));
-	  output_asm_insn (".long\t%2", op);
-	}
-      if (op[7])
+  /* Setup literal pool pointer if required.  */
+  if ((!DISP_IN_RANGE (delta)
+       && !CONST_OK_FOR_K (delta)
+       && !CONST_OK_FOR_Os (delta))
+      || (!DISP_IN_RANGE (vcall_offset)
+	  && !CONST_OK_FOR_K (vcall_offset)
+	  && !CONST_OK_FOR_Os (vcall_offset)))
+    {
+      op[5] = gen_label_rtx ();
+      output_asm_insn ("larl\t%4,%5", op);
+    }
+
+  /* Add DELTA to this pointer.  */
+  if (delta)
+    {
+      if (CONST_OK_FOR_J (delta))
+	output_asm_insn ("la\t%1,%2(%1)", op);
+      else if (DISP_IN_RANGE (delta))
+	output_asm_insn ("lay\t%1,%2(%1)", op);
+      else if (CONST_OK_FOR_K (delta))
+	output_asm_insn ("aghi\t%1,%2", op);
+      else if (CONST_OK_FOR_Os (delta))
+	output_asm_insn ("agfi\t%1,%2", op);
+      else
 	{
-	  targetm.asm_out.internal_label (file, "L",
-					  CODE_LABEL_NUMBER (op[7]));
-	  output_asm_insn (".long\t%3", op);
+	  op[6] = gen_label_rtx ();
+	  output_asm_insn ("agf\t%1,%6-%5(%4)", op);
 	}
     }
-  else
-    {
-      /* Setup base pointer if required.  */
-      if (!vcall_offset
-	  || (!DISP_IN_RANGE (delta)
-	      && !CONST_OK_FOR_K (delta)
-	      && !CONST_OK_FOR_Os (delta))
-	  || (!DISP_IN_RANGE (delta)
-	      && !CONST_OK_FOR_K (vcall_offset)
-	      && !CONST_OK_FOR_Os (vcall_offset)))
-	{
-	  op[5] = gen_label_rtx ();
-	  output_asm_insn ("basr\t%4,0", op);
-	  targetm.asm_out.internal_label (file, "L",
-					  CODE_LABEL_NUMBER (op[5]));
-	}
-
-      /* Add DELTA to this pointer.  */
-      if (delta)
-	{
-	  if (CONST_OK_FOR_J (delta))
-	    output_asm_insn ("la\t%1,%2(%1)", op);
-	  else if (DISP_IN_RANGE (delta))
-	    output_asm_insn ("lay\t%1,%2(%1)", op);
-	  else if (CONST_OK_FOR_K (delta))
-	    output_asm_insn ("ahi\t%1,%2", op);
-	  else if (CONST_OK_FOR_Os (delta))
-	    output_asm_insn ("afi\t%1,%2", op);
-	  else
-	    {
-	      op[6] = gen_label_rtx ();
-	      output_asm_insn ("a\t%1,%6-%5(%4)", op);
-	    }
-	}
 
-      /* Perform vcall adjustment.  */
-      if (vcall_offset)
+  /* Perform vcall adjustment.  */
+  if (vcall_offset)
+    {
+      if (DISP_IN_RANGE (vcall_offset))
 	{
-	  if (CONST_OK_FOR_J (vcall_offset))
-	    {
-	      output_asm_insn ("l\t%4,0(%1)", op);
-	      output_asm_insn ("a\t%1,%3(%4)", op);
-	    }
-	  else if (DISP_IN_RANGE (vcall_offset))
-	    {
-	      output_asm_insn ("l\t%4,0(%1)", op);
-	      output_asm_insn ("ay\t%1,%3(%4)", op);
-	    }
-	  else if (CONST_OK_FOR_K (vcall_offset))
-	    {
-	      output_asm_insn ("lhi\t%4,%3", op);
-	      output_asm_insn ("a\t%4,0(%1)", op);
-	      output_asm_insn ("a\t%1,0(%4)", op);
-	    }
-	  else if (CONST_OK_FOR_Os (vcall_offset))
-	    {
-	      output_asm_insn ("iilf\t%4,%3", op);
-	      output_asm_insn ("a\t%4,0(%1)", op);
-	      output_asm_insn ("a\t%1,0(%4)", op);
-	    }
-	  else
-	    {
-	      op[7] = gen_label_rtx ();
-	      output_asm_insn ("l\t%4,%7-%5(%4)", op);
-	      output_asm_insn ("a\t%4,0(%1)", op);
-	      output_asm_insn ("a\t%1,0(%4)", op);
-	    }
-
-	  /* We had to clobber the base pointer register.
-	     Re-setup the base pointer (with a different base).  */
-	  op[5] = gen_label_rtx ();
-	  output_asm_insn ("basr\t%4,0", op);
-	  targetm.asm_out.internal_label (file, "L",
-					  CODE_LABEL_NUMBER (op[5]));
+	  output_asm_insn ("lg\t%4,0(%1)", op);
+	  output_asm_insn ("ag\t%1,%3(%4)", op);
 	}
-
-      /* Jump to target.  */
-      op[8] = gen_label_rtx ();
-
-      if (!flag_pic)
-	output_asm_insn ("l\t%4,%8-%5(%4)", op);
-      else if (!nonlocal)
-	output_asm_insn ("a\t%4,%8-%5(%4)", op);
-      /* We cannot call through .plt, since .plt requires %r12 loaded.  */
-      else if (flag_pic == 1)
+      else if (CONST_OK_FOR_K (vcall_offset))
 	{
-	  output_asm_insn ("a\t%4,%8-%5(%4)", op);
-	  output_asm_insn ("l\t%4,%0(%4)", op);
+	  output_asm_insn ("lghi\t%4,%3", op);
+	  output_asm_insn ("ag\t%4,0(%1)", op);
+	  output_asm_insn ("ag\t%1,0(%4)", op);
 	}
-      else if (flag_pic == 2)
+      else if (CONST_OK_FOR_Os (vcall_offset))
 	{
-	  op[9] = gen_rtx_REG (Pmode, 0);
-	  output_asm_insn ("l\t%9,%8-4-%5(%4)", op);
-	  output_asm_insn ("a\t%4,%8-%5(%4)", op);
-	  output_asm_insn ("ar\t%4,%9", op);
-	  output_asm_insn ("l\t%4,0(%4)", op);
+	  output_asm_insn ("lgfi\t%4,%3", op);
+	  output_asm_insn ("ag\t%4,0(%1)", op);
+	  output_asm_insn ("ag\t%1,0(%4)", op);
 	}
-
-      output_asm_insn ("br\t%4", op);
-
-      /* Output literal pool.  */
-      output_asm_insn (".align\t4", op);
-
-      if (nonlocal && flag_pic == 2)
-	output_asm_insn (".long\t%0", op);
-      if (nonlocal)
+      else
 	{
-	  op[0] = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
-	  SYMBOL_REF_FLAGS (op[0]) = SYMBOL_FLAG_LOCAL;
+	  op[7] = gen_label_rtx ();
+	  output_asm_insn ("llgf\t%4,%7-%5(%4)", op);
+	  output_asm_insn ("ag\t%4,0(%1)", op);
+	  output_asm_insn ("ag\t%1,0(%4)", op);
 	}
+    }
 
-      targetm.asm_out.internal_label (file, "L", CODE_LABEL_NUMBER (op[8]));
-      if (!flag_pic)
-	output_asm_insn (".long\t%0", op);
-      else
-	output_asm_insn (".long\t%0-%5", op);
+  /* Jump to target.  */
+  output_asm_insn ("jg\t%0%K0", op);
 
-      if (op[6])
-	{
-	  targetm.asm_out.internal_label (file, "L",
-					  CODE_LABEL_NUMBER (op[6]));
-	  output_asm_insn (".long\t%2", op);
-	}
-      if (op[7])
-	{
-	  targetm.asm_out.internal_label (file, "L",
-					  CODE_LABEL_NUMBER (op[7]));
-	  output_asm_insn (".long\t%3", op);
-	}
+  /* Output literal pool if required.  */
+  if (op[5])
+    {
+      output_asm_insn (".align\t4", op);
+      targetm.asm_out.internal_label (file, "L",
+				      CODE_LABEL_NUMBER (op[5]));
+    }
+  if (op[6])
+    {
+      targetm.asm_out.internal_label (file, "L",
+				      CODE_LABEL_NUMBER (op[6]));
+      output_asm_insn (".long\t%2", op);
     }
+  if (op[7])
+    {
+      targetm.asm_out.internal_label (file, "L",
+				      CODE_LABEL_NUMBER (op[7]));
+      output_asm_insn (".long\t%3", op);
+    }
+
   final_end_function ();
   assemble_end_function (thunk, fnname);
 }
@@ -14739,24 +14333,18 @@ s390_indirect_branch_via_inline_thunk (rtx execute_target)
       ASM_OUTPUT_LABEL (asm_out_file, label);
     }
 
-  if (!TARGET_ZARCH)
-    fputs ("\t.machinemode zarch\n", asm_out_file);
-
   if (REG_P (execute_target))
     fprintf (asm_out_file, "\tex\t%%r0,0(%%r%d)\n", REGNO (execute_target));
   else
     output_asm_insn ("\texrl\t%%r0,%0", &execute_target);
 
-  if (!TARGET_ZARCH)
-    fputs ("\t.machinemode esa\n", asm_out_file);
-
   fputs ("0:\tj\t0b\n", asm_out_file);
 }
 
 static bool
 s390_valid_pointer_mode (scalar_int_mode mode)
 {
-  return (mode == SImode || (TARGET_64BIT && mode == DImode));
+  return mode == SImode || mode == DImode;
 }
 
 /* Checks whether the given CALL_EXPR would use a caller
@@ -14802,7 +14390,7 @@ s390_call_saved_register_used (tree call_expr)
       if (REG_P (parm_rtx))
 	{
 	  int size = s390_function_arg_size (arg.mode, arg.type);
-	  int nregs = (size + UNITS_PER_LONG - 1) / UNITS_PER_LONG;
+	  int nregs = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
 
 	  for (reg = 0; reg < nregs; reg++)
 	    if (!call_used_or_fixed_reg_p (reg + REGNO (parm_rtx)))
@@ -14863,11 +14451,6 @@ s390_function_ok_for_sibcall (tree decl, tree exp)
   if (TARGET_TPF_PROFILING)
     return false;
 
-  /* The 31 bit PLT code uses register 12 (GOT pointer - caller saved)
-     which would have to be restored before the sibcall.  */
-  if (!TARGET_64BIT && flag_pic && decl && !targetm.binds_local_p (decl))
-    return false;
-
   /* The thunks for indirect branches require r1 if no exrl is
      available.  r1 might not be available when doing a sibling
      call.  */
@@ -14908,7 +14491,6 @@ rtx_insn *
 s390_emit_call (rtx addr_location, rtx tls_call, rtx result_reg,
 		rtx retaddr_reg)
 {
-  bool plt31_call_p = false;
   rtx_insn *insn;
   rtx vec[4] = { NULL_RTX };
   int elts = 0;
@@ -14918,49 +14500,18 @@ s390_emit_call (rtx addr_location, rtx tls_call, rtx result_reg,
   rtx *clobber_thunk_reg = &vec[3];
   int i;
 
-  /* Direct function calls need special treatment.  */
-  if (GET_CODE (addr_location) == SYMBOL_REF)
-    {
-      /* When calling a global routine in PIC mode, we must
-	 replace the symbol itself with the PLT stub.  */
-      if (flag_pic && !SYMBOL_REF_LOCAL_P (addr_location) && !TARGET_64BIT)
-	{
-	  if (retaddr_reg != NULL_RTX)
-	    {
-	      addr_location = gen_rtx_UNSPEC (Pmode,
-					      gen_rtvec (1, addr_location),
-					      UNSPEC_PLT31);
-	      addr_location = gen_rtx_CONST (Pmode, addr_location);
-	      plt31_call_p = true;
-	    }
-	  else
-	    /* For -fpic code the PLT entries might use r12 which is
-	       call-saved.  Therefore we cannot do a sibcall when
-	       calling directly using a symbol ref.  When reaching
-	       this point we decided (in s390_function_ok_for_sibcall)
-	       to do a sibcall for a function pointer but one of the
-	       optimizers was able to get rid of the function pointer
-	       by propagating the symbol ref into the call.  This
-	       optimization is illegal for S/390 so we turn the direct
-	       call into a indirect call again.  */
-	    addr_location = force_reg (Pmode, addr_location);
-	}
-    }
-
   /* If it is already an indirect call or the code above moved the
      SYMBOL_REF to somewhere else make sure the address can be found in
      register 1.  */
   if (retaddr_reg == NULL_RTX
-      && GET_CODE (addr_location) != SYMBOL_REF
-      && !plt31_call_p)
+      && GET_CODE (addr_location) != SYMBOL_REF)
     {
       emit_move_insn (gen_rtx_REG (Pmode, SIBCALL_REGNUM), addr_location);
       addr_location = gen_rtx_REG (Pmode, SIBCALL_REGNUM);
     }
 
   if (TARGET_INDIRECT_BRANCH_NOBP_CALL
-      && GET_CODE (addr_location) != SYMBOL_REF
-      && !plt31_call_p)
+      && GET_CODE (addr_location) != SYMBOL_REF)
     {
       /* Indirect branch thunks require the target to be a single GPR.  */
       addr_location = force_reg (Pmode, addr_location);
@@ -15011,8 +14562,8 @@ s390_emit_call (rtx addr_location, rtx tls_call, rtx result_reg,
 
   insn = emit_call_insn (*call);
 
-  /* 31-bit PLT stubs and tls calls use the GOT register implicitly.  */
-  if (plt31_call_p || tls_call != NULL_RTX)
+  /* tls calls use the GOT register implicitly.  */
+  if (tls_call != NULL_RTX)
     {
       /* s390_function_ok_for_sibcall should
 	 have denied sibcalls in this case.  */
@@ -15033,16 +14584,9 @@ s390_conditional_register_usage (void)
     fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1;
   fixed_regs[BASE_REGNUM] = 0;
   fixed_regs[RETURN_REGNUM] = 0;
-  if (TARGET_64BIT)
-    {
-      for (i = FPR8_REGNUM; i <= FPR15_REGNUM; i++)
-	call_used_regs[i] = 0;
-    }
-  else
-    {
-      call_used_regs[FPR4_REGNUM] = 0;
-      call_used_regs[FPR6_REGNUM] = 0;
-    }
+
+  for (i = FPR8_REGNUM; i <= FPR15_REGNUM; i++)
+    call_used_regs[i] = 0;
 
   if (TARGET_SOFT_FLOAT)
     {
@@ -15188,7 +14732,7 @@ s390_optimize_prologue (void)
 	  if (cfun_frame_layout.first_save_gpr != -1)
 	    save_gprs (base,
 		       off + (cfun_frame_layout.first_save_gpr
-			      - first) * UNITS_PER_LONG,
+			      - first) * UNITS_PER_WORD,
 		       cfun_frame_layout.first_save_gpr,
 		       cfun_frame_layout.last_save_gpr, insn);
 
@@ -15244,7 +14788,7 @@ s390_optimize_prologue (void)
 	    {
 	      rtx rpat = restore_gprs (base,
 				       off + (cfun_frame_layout.first_restore_gpr
-					      - first) * UNITS_PER_LONG,
+					      - first) * UNITS_PER_WORD,
 				       cfun_frame_layout.first_restore_gpr,
 				       cfun_frame_layout.last_restore_gpr);
 
@@ -16602,15 +16146,6 @@ static void
 s390_option_override_internal (struct gcc_options *opts,
 			       struct gcc_options *opts_set)
 {
-  /* Architecture mode defaults according to ABI.  */
-  if (!(opts_set->x_target_flags & MASK_ZARCH))
-    {
-      if (TARGET_64BIT)
-	opts->x_target_flags |= MASK_ZARCH;
-      else
-	opts->x_target_flags &= ~MASK_ZARCH;
-    }
-
   /* Set the march default in case it hasn't been specified on cmdline.  */
   if (!opts_set->x_s390_arch)
     opts->x_s390_arch = PROCESSOR_2064_Z900;
@@ -16627,8 +16162,6 @@ s390_option_override_internal (struct gcc_options *opts,
   if (opts->x_s390_arch == PROCESSOR_NATIVE
       || opts->x_s390_tune == PROCESSOR_NATIVE)
     gcc_unreachable ();
-  if (TARGET_64BIT && !TARGET_ZARCH_P (opts->x_target_flags))
-    error ("64-bit ABI not supported in ESA/390 mode");
 
   if (opts->x_s390_indirect_branch == indirect_branch_thunk_inline
       || opts->x_s390_indirect_branch_call == indirect_branch_thunk_inline
@@ -16656,10 +16189,10 @@ s390_option_override_internal (struct gcc_options *opts,
     }
 
   /* Enable hardware transactions if available and not explicitly
-     disabled by user.  E.g. with -m31 -march=zEC12 -mzarch */
+     disabled by user.  E.g. with -march=zEC12.  */
   if (!TARGET_OPT_HTM_P (opts_set->x_target_flags))
     {
-      if (TARGET_CPU_HTM_P (opts) && TARGET_ZARCH_P (opts->x_target_flags))
+      if (TARGET_CPU_HTM_P (opts))
 	opts->x_target_flags |= MASK_OPT_HTM;
       else
 	opts->x_target_flags &= ~MASK_OPT_HTM;
@@ -16679,16 +16212,15 @@ s390_option_override_internal (struct gcc_options *opts,
     }
   else
     {
-      if (TARGET_CPU_VX_P (opts) && TARGET_ZARCH_P (opts->x_target_flags))
+      if (TARGET_CPU_VX_P (opts))
 	/* Enable vector support if available and not explicitly disabled
-	   by user.  E.g. with -m31 -march=z13 -mzarch */
+	   by user.  E.g. with -march=z13.  */
 	opts->x_target_flags |= MASK_OPT_VX;
       else
 	opts->x_target_flags &= ~MASK_OPT_VX;
     }
 
-  /* Use hardware DFP if available and not explicitly disabled by
-     user. E.g. with -m31 -march=z10 -mzarch   */
+  /* Use hardware DFP if available and not explicitly disabled by user.  */
   if (!TARGET_HARD_DFP_P (opts_set->x_target_flags))
     {
       if (TARGET_DFP_P (opts))
@@ -16705,9 +16237,6 @@ s390_option_override_internal (struct gcc_options *opts,
 	    error ("hardware decimal floating-point instructions"
 		   " not available on %s",
 		   processor_table[(int)opts->x_s390_arch].name);
-	  if (!TARGET_ZARCH_P (opts->x_target_flags))
-	    error ("hardware decimal floating-point instructions"
-		   " not available in ESA/390 mode");
 	}
       else
 	opts->x_target_flags &= ~MASK_HARD_DFP;
@@ -16807,6 +16336,11 @@ s390_option_override_internal (struct gcc_options *opts,
   else
     SET_OPTION_IF_UNSET (opts, opts_set, param_vect_partial_vector_usage, 0);
 
+  if (flag_m31)
+    error ("%<-m31%> is no longer supported");
+  if (flag_mesa)
+    error ("%<-mesa%> is no longer supported");
+
   /* Set the default alignment.  */
   s390_default_align (opts);
 
@@ -16816,12 +16350,6 @@ s390_option_override_internal (struct gcc_options *opts,
   /* Call target specific restore function to do post-init work.  At the moment,
      this just sets opts->x_s390_cost_pointer.  */
   s390_function_specific_restore (opts, opts_set, NULL);
-
-  /* Check whether -mfentry is supported. It cannot be used in 31-bit mode,
-     because 31-bit PLT stubs assume that %r12 contains GOT address, which is
-     not the case when the code runs before the prolog. */
-  if (opts->x_flag_fentry && !TARGET_64BIT)
-    error ("%<-mfentry%> is supported only for 64-bit CPUs");
 }
 
 static void
@@ -17251,8 +16779,7 @@ s390_can_inline_p (tree caller, tree callee)
 
   /* Flags which affect the ABI and in general prevent inlining.  */
   unsigned HOST_WIDE_INT must_match_masks
-    = (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP | MASK_SOFT_FLOAT
-       | MASK_LONG_DOUBLE_128 | MASK_OPT_VX);
+    = (MASK_HARD_DFP | MASK_SOFT_FLOAT | MASK_LONG_DOUBLE_128 | MASK_OPT_VX);
 
   /* Flags which we in general want to prevent inlining but accept for
      always_inline.  */
@@ -17459,8 +16986,7 @@ s390_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size,
 				     enum by_pieces_operation op ATTRIBUTE_UNUSED,
 				     bool speed_p ATTRIBUTE_UNUSED)
 {
-  return (size == 1 || size == 2
-	  || size == 4 || (TARGET_ZARCH && size == 8));
+  return size == 1 || size == 2 || size == 4 || size == 8;
 }
 
 /* Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV hook.  */
@@ -17566,7 +17092,7 @@ s390_preferred_simd_mode (scalar_mode mode)
 	return V16QImode;
       default:;
       }
-  return word_mode;
+  return DImode;
 }
 
 /* Our hardware does not require vectors to be strictly aligned.  */
@@ -17829,16 +17355,8 @@ s390_rawmemchr (machine_mode elt_mode, rtx dst, rtx src, rtx pat)
   emit_label (loop_end);
   LABEL_NUSES (loop_end) = 1;
 
-  if (TARGET_64BIT)
-    {
-      lens = convert_to_mode (V2DImode, lens, 1);
-      emit_insn (gen_vec_extractv2didi (offset, lens, GEN_INT (0)));
-    }
-  else
-    {
-      lens = convert_to_mode (V4SImode, lens, 1);
-      emit_insn (gen_vec_extractv4sisi (offset, lens, GEN_INT (1)));
-    }
+  lens = convert_to_mode (V2DImode, lens, 1);
+  emit_insn (gen_vec_extractv2didi (offset, lens, GEN_INT (0)));
   force_expand_binop (Pmode, add_optab, addr, offset, dst, 1, OPTAB_DIRECT);
 }
 
@@ -17847,7 +17365,7 @@ s390_rawmemchr (machine_mode elt_mode, rtx dst, rtx src, rtx pat)
 static unsigned HOST_WIDE_INT
 s390_asan_shadow_offset (void)
 {
-  return TARGET_64BIT ? HOST_WIDE_INT_1U << 52 : HOST_WIDE_INT_UC (0x20000000);
+  return HOST_WIDE_INT_1U << 52;
 }
 
 #ifdef HAVE_GAS_HIDDEN
@@ -17932,17 +17450,9 @@ s390_output_indirect_thunk_function (unsigned int regno, bool z10_p)
 	  fputs ("\t.machine push\n", asm_out_file);
 	  fputs ("\t.machine z10\n", asm_out_file);
 	}
-      /* We use exrl even if -mzarch hasn't been specified on the
-	 command line so we have to tell the assembler to accept
-	 it.  */
-      if (!TARGET_ZARCH)
-	fputs ("\t.machinemode zarch\n", asm_out_file);
 
       fputs ("\texrl\t0,1f\n", asm_out_file);
 
-      if (!TARGET_ZARCH)
-	fputs ("\t.machinemode esa\n", asm_out_file);
-
       if (!TARGET_CPU_Z10)
 	fputs ("\t.machine pop\n", asm_out_file);
     }
@@ -18853,8 +18363,6 @@ s390_c_mode_for_floating_type (enum tree_index ti)
 bool
 s390_bitint_type_info (int n, struct bitint_info *info)
 {
-  if (!TARGET_64BIT)
-    return false;
   if (n <= 8)
     info->limb_mode = QImode;
   else if (n <= 16)
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index 4764a87c7a6b..2ca7689b0962 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -53,8 +53,7 @@ enum processor_flags
 #define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_9175_Z17 ? PROCESSOR_9175_Z17 : s390_tune ))
 
 /* These flags indicate that the generated code should run on a cpu
-   providing the respective hardware facility regardless of the
-   current cpu mode (ESA or z/Architecture).  */
+   providing the respective hardware facility.  */
 
 #define TARGET_CPU_IEEE_FLOAT \
 	(s390_arch_flags & PF_IEEE_FLOAT)
@@ -135,72 +134,46 @@ enum processor_flags
    providing the respective hardware facility when run in
    z/Architecture mode.  */
 
-#define TARGET_LONG_DISPLACEMENT \
-	(TARGET_ZARCH && TARGET_CPU_LONG_DISPLACEMENT)
+#define TARGET_LONG_DISPLACEMENT TARGET_CPU_LONG_DISPLACEMENT
 #define TARGET_LONG_DISPLACEMENT_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) \
-	 && TARGET_CPU_LONG_DISPLACEMENT_P (opts))
-#define TARGET_EXTIMM \
-	(TARGET_ZARCH && TARGET_CPU_EXTIMM)
-#define TARGET_EXTIMM_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_EXTIMM_P (opts))
-#define TARGET_DFP \
-	(TARGET_ZARCH && TARGET_CPU_DFP && TARGET_HARD_FLOAT)
+	(TARGET_CPU_LONG_DISPLACEMENT_P (opts))
+#define TARGET_EXTIMM TARGET_CPU_EXTIMM
+#define TARGET_EXTIMM_P(opts) (TARGET_CPU_EXTIMM_P (opts))
+#define TARGET_DFP (TARGET_CPU_DFP && TARGET_HARD_FLOAT)
 #define TARGET_DFP_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_DFP_P (opts) \
+	(TARGET_CPU_DFP_P (opts) \
 	 && TARGET_HARD_FLOAT_P (opts->x_target_flags))
-#define TARGET_Z10 \
-	(TARGET_ZARCH && TARGET_CPU_Z10)
-#define TARGET_Z10_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z10_P (opts))
-#define TARGET_Z196 \
-	(TARGET_ZARCH && TARGET_CPU_Z196)
-#define TARGET_Z196_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z196_P (opts))
-#define TARGET_ZEC12 \
-	(TARGET_ZARCH && TARGET_CPU_ZEC12)
-#define TARGET_ZEC12_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_ZEC12_P (opts))
+#define TARGET_Z10 TARGET_CPU_Z10
+#define TARGET_Z10_P(opts) (TARGET_CPU_Z10_P (opts))
+#define TARGET_Z196 TARGET_CPU_Z196
+#define TARGET_Z196_P(opts) (TARGET_CPU_Z196_P (opts))
+#define TARGET_ZEC12 TARGET_CPU_ZEC12
+#define TARGET_ZEC12_P(opts) (TARGET_CPU_ZEC12_P (opts))
 #define TARGET_HTM (TARGET_OPT_HTM)
 #define TARGET_HTM_P(opts) (TARGET_OPT_HTM_P (opts->x_target_flags))
-#define TARGET_Z13 \
-	(TARGET_ZARCH && TARGET_CPU_Z13)
-#define TARGET_Z13_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z13_P (opts))
-#define TARGET_VX \
-	(TARGET_ZARCH && TARGET_CPU_VX && TARGET_OPT_VX && TARGET_HARD_FLOAT)
+#define TARGET_Z13 TARGET_CPU_Z13
+#define TARGET_Z13_P(opts) (TARGET_CPU_Z13_P (opts))
+#define TARGET_VX (TARGET_CPU_VX && TARGET_OPT_VX && TARGET_HARD_FLOAT)
 #define TARGET_VX_P(opts) \
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_VX_P (opts) \
+	(TARGET_CPU_VX_P (opts) \
 	 && TARGET_OPT_VX_P (opts->x_target_flags) \
 	 && TARGET_HARD_FLOAT_P (opts->x_target_flags))
-#define TARGET_Z14 (TARGET_ZARCH && TARGET_CPU_Z14)
-#define TARGET_Z14_P(opts)						\
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z14_P (opts))
-#define TARGET_VXE				\
-	(TARGET_VX && TARGET_CPU_VXE)
-#define TARGET_VXE_P(opts)						\
-	(TARGET_VX_P (opts) && TARGET_CPU_VXE_P (opts))
-#define TARGET_Z15 (TARGET_ZARCH && TARGET_CPU_Z15)
-#define TARGET_Z15_P(opts)						\
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z15_P (opts))
-#define TARGET_VXE2					\
-	(TARGET_VX && TARGET_CPU_VXE2)
-#define TARGET_VXE2_P(opts)						\
-	(TARGET_VX_P (opts) && TARGET_CPU_VXE2_P (opts))
-#define TARGET_Z16 (TARGET_ZARCH && TARGET_CPU_Z16)
-#define TARGET_Z16_P(opts)						\
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z16_P (opts))
-#define TARGET_NNPA					\
-	(TARGET_ZARCH && TARGET_CPU_NNPA)
-#define TARGET_NNPA_P(opts)						\
-	(TARGET_ZARCH_P (opts) && TARGET_CPU_NNPA_P (opts))
-#define TARGET_VXE3 \
-	(TARGET_VX && TARGET_CPU_VXE3)
-#define TARGET_VXE3_P(opts)						\
-	(TARGET_VX_P (opts) && TARGET_CPU_VXE3_P (opts))
-#define TARGET_Z17 (TARGET_ZARCH && TARGET_CPU_Z17)
-#define TARGET_Z17_P(opts)						\
-	(TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z17_P (opts))
+#define TARGET_Z14 TARGET_CPU_Z14
+#define TARGET_Z14_P(opts) (TARGET_CPU_Z14_P (opts))
+#define TARGET_VXE (TARGET_VX && TARGET_CPU_VXE)
+#define TARGET_VXE_P(opts) (TARGET_VX_P (opts) && TARGET_CPU_VXE_P (opts))
+#define TARGET_Z15 TARGET_CPU_Z15
+#define TARGET_Z15_P(opts) (TARGET_CPU_Z15_P (opts))
+#define TARGET_VXE2 (TARGET_VX && TARGET_CPU_VXE2)
+#define TARGET_VXE2_P(opts) (TARGET_VX_P (opts) && TARGET_CPU_VXE2_P (opts))
+#define TARGET_Z16 TARGET_CPU_Z16
+#define TARGET_Z16_P(opts) (TARGET_CPU_Z16_P (opts))
+#define TARGET_NNPA TARGET_CPU_NNPA
+#define TARGET_NNPA_P(opts) (TARGET_CPU_NNPA_P (opts))
+#define TARGET_VXE3 (TARGET_VX && TARGET_CPU_VXE3)
+#define TARGET_VXE3_P(opts) (TARGET_VX_P (opts) && TARGET_CPU_VXE3_P (opts))
+#define TARGET_Z17 TARGET_CPU_Z17
+#define TARGET_Z17_P(opts) (TARGET_CPU_Z17_P (opts))
 
 #if defined(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13)
 #define TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS TARGET_Z13
@@ -267,18 +240,12 @@ enum processor_flags
 /* Target CPU builtins.  */
 #define TARGET_CPU_CPP_BUILTINS() s390_cpu_cpp_builtins (pfile)
 
-#ifdef DEFAULT_TARGET_64BIT
-#define TARGET_DEFAULT     (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP	\
-			    | MASK_OPT_HTM | MASK_OPT_VX)
-#else
-#define TARGET_DEFAULT             0
-#endif
+#define TARGET_DEFAULT (MASK_HARD_DFP | MASK_OPT_HTM | MASK_OPT_VX)
 
 /* Support for configure-time defaults.
    The order here is important so that -march doesn't squash the
    tune values.  */
 #define OPTION_DEFAULT_SPECS					\
-  { "mode", "%{!mesa:%{!mzarch:-m%(VALUE)}}" },			\
   { "tune", "%{!mtune=*:%{!march=*:-mtune=%(VALUE)}}" },	\
   { "arch", "%{!march=*:-march=%(VALUE)}" }
 
@@ -290,22 +257,14 @@ extern const char *s390_host_detect_local_cpu (int argc, const char **argv);
 #define MARCH_MTUNE_NATIVE_SPECS				\
   "%{mtune=native:%<mtune=native %:local_cpu_detect(tune)} "	\
   "%{march=native:%<march=native"				\
-  " %:local_cpu_detect(arch %{mesa|mzarch:mesa_mzarch})}"
+  " %:local_cpu_detect(arch)}"
 #else
 # define MARCH_MTUNE_NATIVE_SPECS ""
 #endif
 
-#ifdef DEFAULT_TARGET_64BIT
-#define S390_TARGET_BITS_STRING "64"
-#else
-#define S390_TARGET_BITS_STRING "31"
-#endif
-
 /* Defaulting rules.  */
 #define DRIVER_SELF_SPECS					\
   MARCH_MTUNE_NATIVE_SPECS,					\
-  "%{!m31:%{!m64:-m" S390_TARGET_BITS_STRING "}}",		\
-  "%{!mesa:%{!mzarch:%{m31:-mesa}%{m64:-mzarch}}}",		\
   "%{!march=*:-march=z900}"
 
 /* Target machine storage layout.  */
@@ -322,34 +281,14 @@ extern const char *s390_host_detect_local_cpu (int argc, const char **argv);
    being accessed.  */
 #define STACK_CHECK_MOVING_SP 1
 
-#ifndef IN_LIBGCC2
-
 /* Width of a word, in units (bytes).  */
-  #define UNITS_PER_WORD (TARGET_ZARCH ? 8 : 4)
-
-/* Width of a pointer.  To be used instead of UNITS_PER_WORD in
-   ABI-relevant contexts.  This always matches
-   GET_MODE_SIZE (Pmode).  */
-  #define UNITS_PER_LONG (TARGET_64BIT ? 8 : 4)
-  #define MIN_UNITS_PER_WORD 4
-  #define MAX_BITS_PER_WORD 64
-#else
-
-  /* In libgcc, UNITS_PER_WORD has ABI-relevant effects, e.g. whether
-     the library should export TImode functions or not.  Thus, we have
-     to redefine UNITS_PER_WORD depending on __s390x__ for libgcc.  */
-  #ifdef __s390x__
-    #define UNITS_PER_WORD 8
-  #else
-    #define UNITS_PER_WORD 4
-  #endif
-#endif
+#define UNITS_PER_WORD 8
 
 /* Width of a pointer, in bits.  */
-#define POINTER_SIZE (TARGET_64BIT ? 64 : 32)
+#define POINTER_SIZE 64
 
 /* Allocation boundary (in *bits*) for storing arguments in argument list.  */
-#define PARM_BOUNDARY (TARGET_64BIT ? 64 : 32)
+#define PARM_BOUNDARY 64
 
 /* Boundary (in *bits*) on which stack pointer should be aligned.  */
 #define STACK_BOUNDARY 64
@@ -375,7 +314,7 @@ extern const char *s390_host_detect_local_cpu (int argc, const char **argv);
    NONLOCAL needs twice Pmode to maintain both backchain and SP.  */
 #define STACK_SAVEAREA_MODE(LEVEL)					\
   ((LEVEL) == SAVE_FUNCTION ? VOIDmode					\
-   : (LEVEL) == SAVE_NONLOCAL ? (TARGET_64BIT ? OImode : TImode) : Pmode)
+   : (LEVEL) == SAVE_NONLOCAL ? OImode : Pmode)
 
 
 /* Type layout.  */
@@ -383,7 +322,7 @@ extern const char *s390_host_detect_local_cpu (int argc, const char **argv);
 /* Sizes in bits of the source language data types.  */
 #define SHORT_TYPE_SIZE 16
 #define INT_TYPE_SIZE 32
-#define LONG_TYPE_SIZE (TARGET_64BIT ? 64 : 32)
+#define LONG_TYPE_SIZE 64
 #define LONG_LONG_TYPE_SIZE 64
 
 /* We use "unsigned char" as default.  */
@@ -448,8 +387,7 @@ extern const char *s390_host_detect_local_cpu (int argc, const char **argv);
    The 'fake' hard registers are call-clobbered and fixed.
    The access registers are call-saved and fixed.
 
-   On 31-bit, FPRs 18-19 are call-clobbered;
-   on 64-bit, FPRs 24-31 are call-clobbered.
+   FPRs 24-31 are call-clobbered.
    The remaining FPRs are call-saved.
 
    All non-FP vector registers are call-clobbered v16-v31.  */
@@ -615,7 +553,7 @@ extern const enum reg_class regclass_map[FIRST_PSEUDO_REGISTER];
    dynamic allocations (alloca), and finally the local variables.  */
 
 /* Offset from stack-pointer to first location of outgoing args.  */
-#define STACK_POINTER_OFFSET (TARGET_64BIT ? 160 : 96)
+#define STACK_POINTER_OFFSET 160
 
 /* Offset from the stack pointer register to an item dynamically
    allocated on the stack, e.g., by `alloca'.  */
@@ -639,7 +577,7 @@ extern const enum reg_class regclass_map[FIRST_PSEUDO_REGISTER];
 #define DYNAMIC_CHAIN_ADDRESS(FRAME)                                          \
   (TARGET_PACKED_STACK ?                                                      \
    plus_constant (Pmode, (FRAME),					      \
-		  STACK_POINTER_OFFSET - UNITS_PER_LONG) : (FRAME))
+		  STACK_POINTER_OFFSET - UNITS_PER_WORD) : (FRAME))
 
 /* For -mpacked-stack this adds 160 - 8 (96 - 4) to the output of
    builtin_frame_address.  Otherwise arg pointer -
@@ -654,9 +592,6 @@ extern const enum reg_class regclass_map[FIRST_PSEUDO_REGISTER];
 #define RETURN_ADDR_RTX(COUNT, FRAME)					      \
   s390_return_addr_rtx ((COUNT), DYNAMIC_CHAIN_ADDRESS ((FRAME)))
 
-/* In 31-bit mode, we need to mask off the high bit of return addresses.  */
-#define MASK_RETURN_ADDR (TARGET_64BIT ? constm1_rtx : GEN_INT (0x7fffffff))
-
 
 /* Exception handling.  */
 
@@ -676,7 +611,7 @@ extern const enum reg_class regclass_map[FIRST_PSEUDO_REGISTER];
    : DW_EH_PE_absptr)
 
 /* Register save slot alignment.  */
-#define DWARF_CIE_DATA_ALIGNMENT (-UNITS_PER_LONG)
+#define DWARF_CIE_DATA_ALIGNMENT (-UNITS_PER_WORD)
 
 /* Let the assembler generate debug line info.  */
 #define DWARF2_ASM_LINE_DEBUG_INFO 1
@@ -744,11 +679,10 @@ CUMULATIVE_ARGS;
 #define LAST_VEC_ARG_REGNO 53
 
 /* Arguments can be placed in general registers 2 to 6, or in floating
-   point registers 0 and 2 for 31 bit and fprs 0, 2, 4 and 6 for 64
-   bit.  */
+   point registers 0, 2, 4 and 6.  */
 #define FUNCTION_ARG_REGNO_P(N)						\
   (((N) >=2 && (N) < 7) || (N) == 16 || (N) == 17			\
-   || (TARGET_64BIT && ((N) == 18 || (N) == 19))			\
+   || ((N) == 18 || (N) == 19)						\
    || (TARGET_VX && ((N) >= FIRST_VEC_ARG_REGNO && (N) <= LAST_VEC_ARG_REGNO)))
 
 
@@ -776,7 +710,7 @@ CUMULATIVE_ARGS;
 
 /* Trampolines for nested functions.  */
 
-#define TRAMPOLINE_SIZE		(TARGET_64BIT ? 32 : 16)
+#define TRAMPOLINE_SIZE		32
 #define TRAMPOLINE_ALIGNMENT	BITS_PER_WORD
 
 /* Addressing modes, and classification of registers for them.  */
@@ -836,12 +770,12 @@ CUMULATIVE_ARGS;
 
 /* An integer expression for the size in bits of the largest integer machine
    mode that should actually be used.  We allow pairs of registers.  */
-#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (TARGET_64BIT ? TImode : DImode)
+#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (TImode)
 
 /* The maximum number of bytes that a single instruction can move quickly
    between memory and registers or between two memory locations.  */
-#define MOVE_MAX (TARGET_ZARCH ? 16 : 8)
-#define MOVE_MAX_PIECES (TARGET_ZARCH ? 8 : 4)
+#define MOVE_MAX 16
+#define MOVE_MAX_PIECES 8
 #define MAX_MOVE_MAX 16
 
 /* Don't perform CSE on function addresses.  */
@@ -851,11 +785,8 @@ CUMULATIVE_ARGS;
    to split a struct move into several word-size moves.  For S/390
    only small values make sense here since struct moves are relatively
    cheap thanks to mvc so the small default value chosen for archs
-   with memmove patterns should be ok.  But this value is multiplied
-   in tree-sra with UNITS_PER_WORD to make a decision so we adjust it
-   here to compensate for that factor since mvc costs exactly the same
-   on 31 and 64 bit.  */
-#define MOVE_RATIO(speed) (TARGET_64BIT? 2 : 4)
+   with memmove patterns should be ok.  */
+#define MOVE_RATIO(speed) 2
 
 
 /* Sections.  */
@@ -869,18 +800,6 @@ CUMULATIVE_ARGS;
 /* Output before writable (uninitialized) data.  */
 #define BSS_SECTION_ASM_OP ".bss"
 
-/* S/390 constant pool breaks the devices in crtstuff.c to control section
-   in where code resides.  We have to write it as asm code.  */
-#ifndef __s390x__
-#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
-    asm (SECTION_OP "\n\
-	bras\t%r2,1f\n\
-0:	.long\t" USER_LABEL_PREFIX #FUNC " - 0b\n\
-1:	l\t%r3,0(%r2)\n\
-	bas\t%r14,0(%r3,%r2)\n\
-	.previous");
-#endif
-
 
 /* Position independent code.  */
 
@@ -945,7 +864,7 @@ CUMULATIVE_ARGS;
 #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)				\
 do {									\
   char buf[32];								\
-  fputs (integer_asm_op (UNITS_PER_LONG, TRUE), (FILE));		\
+  fputs (integer_asm_op (UNITS_PER_WORD, TRUE), (FILE));		\
   ASM_GENERATE_INTERNAL_LABEL (buf, "L", (VALUE));			\
   assemble_name ((FILE), buf);						\
   fputc ('\n', (FILE));							\
@@ -955,7 +874,7 @@ do {									\
 #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)		\
 do {									\
   char buf[32];								\
-  fputs (integer_asm_op (UNITS_PER_LONG, TRUE), (FILE));		\
+  fputs (integer_asm_op (UNITS_PER_WORD, TRUE), (FILE));		\
   ASM_GENERATE_INTERNAL_LABEL (buf, "L", (VALUE));			\
   assemble_name ((FILE), buf);						\
   fputc ('-', (FILE));							\
@@ -986,15 +905,12 @@ do {									\
 
 /* Specify the machine mode that this machine uses for the index in the
    tablejump instruction.  */
-#define CASE_VECTOR_MODE (TARGET_64BIT ? DImode : SImode)
+#define CASE_VECTOR_MODE DImode
 
 /* Specify the machine mode that pointers have.
    After generation of rtl, the compiler makes no further distinction
    between pointers and any other objects of this machine mode.  */
-#define Pmode (TARGET_64BIT ? DImode : SImode)
-
-/* This is -1 for "pointer mode" extend.  See ptr_extend in s390.md.  */
-#define POINTERS_EXTEND_UNSIGNED -1
+#define Pmode DImode
 
 /* A function address in a call instruction is a byte address (for
    indexing purposes) so give the MEM rtx a byte's mode.  */
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 3b6ea26cbc22..587077b84fa6 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -79,7 +79,6 @@
    UNSPEC_GOTENT
    UNSPEC_GOT
    UNSPEC_GOTOFF
-   UNSPEC_PLT31
    UNSPEC_PLTOFF
 
    ; Literal pool
@@ -610,7 +609,7 @@
   (const (symbol_ref "s390_tune_attr")))
 
 (define_attr "cpu_facility"
-  "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,z15,vxe2,z16,nnpa,vxe3,z17"
+  "standard,ieee,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,z15,vxe2,z16,nnpa,vxe3,z17"
   (const_string "standard"))
 
 (define_attr "enabled" ""
@@ -621,10 +620,6 @@
 	      (match_test "TARGET_CPU_IEEE_FLOAT"))
 	 (const_int 1)
 
-	 (and (eq_attr "cpu_facility" "zarch")
-	      (match_test "TARGET_ZARCH"))
-	 (const_int 1)
-
 	 (and (eq_attr "cpu_facility" "longdisp")
 	      (match_test "TARGET_LONG_DISPLACEMENT"))
 	 (const_int 1)
@@ -637,9 +632,6 @@
 	      (match_test "TARGET_DFP"))
 	 (const_int 1)
 
-         (eq_attr "cpu_facility" "cpu_zarch")
-	 (const_int 1)
-
          (and (eq_attr "cpu_facility" "z10")
               (match_test "TARGET_Z10"))
 	 (const_int 1)
@@ -774,34 +766,20 @@
 ; 32 bit int<->fp conversion instructions are available since VXE2 (z15).
 (define_mode_iterator VX_CONV_BFP [DF (SF "TARGET_VXE2")])
 
-;; These mode iterators allow 31-bit and 64-bit GPR patterns to be generated
+;; These mode iterators allow 32-bit and 64-bit GPR patterns to be generated
 ;; from the same template.
-(define_mode_iterator GPR [(DI "TARGET_ZARCH") SI])
-(define_mode_iterator DGPR [(TI "TARGET_ZARCH") DI SI])
+(define_mode_iterator TDSI [TI DI SI])
 (define_mode_iterator DSI [DI SI])
 (define_mode_iterator TDI [TI DI])
 
-;; These mode iterators allow :P to be used for patterns that operate on
-;; pointer-sized quantities.  Exactly one of the two alternatives will match.
-(define_mode_iterator P [(DI "TARGET_64BIT") (SI "!TARGET_64BIT")])
-
-;; These macros refer to the actual word_mode of the configuration.
-;; This is equal to Pmode except on 31-bit machines in zarch mode.
-(define_mode_iterator DW [(TI "TARGET_ZARCH") (DI "!TARGET_ZARCH")])
-(define_mode_iterator W  [(DI "TARGET_ZARCH") (SI "!TARGET_ZARCH")])
-
-;; Used by the umul pattern to express modes having half the size.
-(define_mode_attr DWH [(TI "DI") (DI "SI")])
-(define_mode_attr dwh [(TI "di") (DI "si")])
-
 ;; This mode iterator allows the QI and HI patterns to be defined from
 ;; the same template.
 (define_mode_iterator HQI [HI QI])
 
 ;; This mode iterator allows the integer patterns to be defined from the
 ;; same template.
-(define_mode_iterator INT [(DI "TARGET_ZARCH") SI HI QI])
-(define_mode_iterator DINT [(TI "TARGET_ZARCH") DI SI HI QI])
+(define_mode_iterator INT [DI SI HI QI])
+(define_mode_iterator DINT [TI DI SI HI QI])
 (define_mode_iterator SINT [SI HI QI])
 
 ;; This iterator allows some 'ashift' and 'lshiftrt' pattern to be defined from
@@ -893,12 +871,12 @@
 (define_mode_attr _d [(TF "") (FPRX2 "") (DF "") (SF "") (TD "d") (DD "d")
 		      (SD "d")])
 
-;; In GPR and P templates, a constraint like "<d0>" will expand to "d" in DImode
-;; and "0" in SImode. This allows to combine instructions of which the 31bit
+;; In DSI templates, a constraint like "<d0>" will expand to "d" in DImode
+;; and "0" in SImode. This allows to combine instructions of which the 32bit
 ;; version only operates on one register.
 (define_mode_attr d0 [(DI "d") (SI "0")])
 
-;; In combination with d0 this allows to combine instructions of which the 31bit
+;; In combination with d0 this allows to combine instructions of which the 32bit
 ;; version only operates on one register. The DImode version needs an additional
 ;; register for the assembler output.
 (define_mode_attr 1 [(DI "%1,") (SI "")])
@@ -923,28 +901,24 @@
 ;; in "RSE" for TImode and "RS" for DImode.
 (define_mode_attr TE [(TI "E") (DI "")])
 
-;; In GPR templates, a string like "lc<g>r" will expand to "lcgr" in DImode
+;; In DSI templates, a string like "lc<g>r" will expand to "lcgr" in DImode
 ;; and "lcr" in SImode.
 (define_mode_attr g [(DI "g") (SI "")])
 
-;; In GPR templates, a string like "sl<y>" will expand to "slg" in DImode
+;; In DSI templates, a string like "sl<y>" will expand to "slg" in DImode
 ;; and "sly" in SImode. This is useful because on 64bit the ..g instructions
-;; were enhanced with long displacements whereas 31bit instructions got a ..y
+;; were enhanced with long displacements whereas 32bit instructions got a ..y
 ;; variant for long displacements.
 (define_mode_attr y [(DI "g") (SI "y")])
 
-;; In DW templates, a string like "cds<g>" will expand to "cdsg" in TImode
-;; and "cds" in DImode.
-(define_mode_attr tg [(TI "g") (DI "")])
-
 ;; In TDI templates, a string like "c<d>sg".
 (define_mode_attr td [(TI "d") (DI "")])
 
-;; In GPR templates, a string like "c<gf>dbr" will expand to "cgdbr" in DImode
+;; In DSI templates, a string like "c<gf>dbr" will expand to "cgdbr" in DImode
 ;; and "cfdbr" in SImode.
 (define_mode_attr gf [(DI "g") (SI "f") (DF "g") (SF "f")])
 
-;; In GPR templates, a string like sll<gk> will expand to sllg for DI
+;; In DSI templates, a string like sll<gk> will expand to sllg for DI
 ;; and sllk for SI.  This way it is possible to merge the new z196 SI
 ;; 3 operands shift instructions into the existing patterns.
 (define_mode_attr gk [(DI "g") (SI "k")])
@@ -1039,8 +1013,7 @@
                          (match_operand:DI 1 "immediate_operand"
 					     "N0HD0,N1HD0,N2HD0,N3HD0"))
                  (match_operand:DI 2 "immediate_operand" "n,n,n,n")))]
-  "TARGET_ZARCH
-   && s390_match_ccmode (insn, s390_tm_ccmode (operands[1], operands[2], true))
+  "s390_match_ccmode (insn, s390_tm_ccmode (operands[1], operands[2], true))
    && s390_single_part (operands[1], DImode, HImode, 0) >= 0"
   "@
    tmhh\t%0,%i1
@@ -1089,7 +1062,7 @@
 	  (match_operand:DI 1 "const0_operand" "")))
    (set (match_operand:DI 2 "register_operand" "=d,d")
         (sign_extend:DI (match_dup 0)))]
-  "s390_match_ccmode(insn, CCSmode) && TARGET_ZARCH"
+  "s390_match_ccmode(insn, CCSmode)"
   "ltgfr\t%2,%0
    ltgf\t%2,%0"
   [(set_attr "op_type"      "RRE,RXY")
@@ -1099,9 +1072,9 @@
 ; ltr, lt, ltgr, ltg
 (define_insn "*tst<mode>_extimm"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:GPR 0 "nonimmediate_operand" "d,T")
-                 (match_operand:GPR 1 "const0_operand" "")))
-   (set (match_operand:GPR 2 "register_operand" "=d,d")
+        (compare (match_operand:DSI 0 "nonimmediate_operand" "d,T")
+                 (match_operand:DSI 1 "const0_operand" "")))
+   (set (match_operand:DSI 2 "register_operand" "=d,d")
         (match_dup 0))]
   "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM"
   "@
@@ -1113,10 +1086,10 @@
 ; Peephole to combine a load-and-test from volatile memory which combine does
 ; not do.
 (define_peephole2
-  [(set (match_operand:GPR 0 "register_operand")
-	(match_operand:GPR 2 "memory_operand"))
+  [(set (match_operand:DSI 0 "register_operand")
+	(match_operand:DSI 2 "memory_operand"))
    (set (reg CC_REGNUM)
-	(compare (match_dup 0) (match_operand:GPR 1 "const0_operand")))]
+	(compare (match_dup 0) (match_operand:DSI 1 "const0_operand")))]
   "s390_match_ccmode (peep2_next_insn (1), CCSmode) && TARGET_EXTIMM
    && GENERAL_REG_P (operands[0])
    && satisfies_constraint_T (operands[2])
@@ -1129,9 +1102,9 @@
 ; ltr, lt, ltgr, ltg
 (define_insn "*tst<mode>_cconly_extimm"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:GPR 0 "nonimmediate_operand" "d,T")
-                 (match_operand:GPR 1 "const0_operand" "")))
-   (clobber (match_scratch:GPR 2 "=X,d"))]
+        (compare (match_operand:DSI 0 "nonimmediate_operand" "d,T")
+                 (match_operand:DSI 1 "const0_operand" "")))
+   (clobber (match_scratch:DSI 2 "=X,d"))]
   "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM"
   "@
    lt<g>r\t%0,%0
@@ -1145,7 +1118,7 @@
                  (match_operand:DI 1 "const0_operand" "")))
    (set (match_operand:DI 2 "register_operand" "=d")
         (match_dup 0))]
-  "s390_match_ccmode(insn, CCSmode) && TARGET_ZARCH && !TARGET_EXTIMM"
+  "s390_match_ccmode(insn, CCSmode) && !TARGET_EXTIMM"
   "ltgr\t%2,%0"
   [(set_attr "op_type" "RRE")
    (set_attr "z10prop" "z10_fr_E1")])
@@ -1179,20 +1152,11 @@
    (set_attr "cpu_facility" "*,*,longdisp")
    (set_attr "z10prop" "z10_fr_E1,z10_super_E1,z10_super_E1")])
 
-(define_insn "*tstdi_cconly_31"
-  [(set (reg CC_REGNUM)
-        (compare (match_operand:DI 0 "register_operand" "d")
-                 (match_operand:DI 1 "const0_operand" "")))]
-  "s390_match_ccmode(insn, CCSmode) && !TARGET_ZARCH"
-  "srda\t%0,0"
-  [(set_attr "op_type" "RS")
-   (set_attr "atype"   "reg")])
-
 ; ltr, ltgr
 (define_insn "*tst<mode>_cconly2"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:GPR 0 "register_operand" "d")
-                 (match_operand:GPR 1 "const0_operand" "")))]
+        (compare (match_operand:DSI 0 "register_operand" "d")
+                 (match_operand:DSI 1 "const0_operand" "")))]
   "s390_match_ccmode(insn, CCSmode)"
   "lt<g>r\t%0,%0"
   [(set_attr "op_type" "RR<E>")
@@ -1276,7 +1240,7 @@
   [(set (reg CC_REGNUM)
         (compare (match_operand:DI 0 "nonimmediate_operand" "%d,d,d,d,Q")
                  (match_operand:DI 1 "general_operand" "d,K,Os,T,BQ")))]
-  "s390_match_ccmode (insn, CCTmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCTmode)"
   "@
    cgr\t%0,%1
    cghi\t%0,%h1
@@ -1309,7 +1273,7 @@
         (compare (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand"
 						     "d,T,b"))
                  (match_operand:DI 0 "register_operand" "d, d,d")))]
-  "s390_match_ccmode(insn, CCSRmode) && TARGET_ZARCH"
+  "s390_match_ccmode(insn, CCSRmode)"
   "@
    cgfr\t%0,%1
    cgf\t%0,%1
@@ -1348,7 +1312,7 @@
 (define_insn "*cmpdi_ccs_signhi_rl"
   [(set (reg CC_REGNUM)
 	(compare (sign_extend:DI (match_operand:HI 1 "memory_operand" "T,b"))
-		 (match_operand:GPR 0 "register_operand"  "d,d")))]
+		 (match_operand:DSI 0 "register_operand"  "d,d")))]
   "s390_match_ccmode(insn, CCSRmode) && TARGET_Z10"
   "@
    cgh\t%0,%1
@@ -1360,9 +1324,9 @@
 ; cr, chi, cfi, c, cy, cgr, cghi, cgfi, cg, chsi, cghsi, crl, cgrl
 (define_insn "*cmp<mode>_ccs"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:GPR 0 "nonimmediate_operand"
+        (compare (match_operand:DSI 0 "nonimmediate_operand"
                                       "d,d,Q, d,d,d,d")
-                 (match_operand:GPR 1 "general_operand"
+                 (match_operand:DSI 1 "general_operand"
                                       "d,K,K,Os,R,T,b")))]
   "s390_match_ccmode(insn, CCSmode)"
   "@
@@ -1395,11 +1359,11 @@
    (set_attr "relative_long" "yes")])
 
 ; clhrl, clghrl
-(define_insn "*cmp<GPR:mode>_ccu_zerohi_rldi"
+(define_insn "*cmp<DSI:mode>_ccu_zerohi_rldi"
   [(set (reg CC_REGNUM)
- 	(compare (zero_extend:GPR (mem:HI (match_operand:DI 1
+	(compare (zero_extend:DSI (mem:HI (match_operand:DI 1
 					  "larl_operand" "X")))
-		 (match_operand:GPR 0 "register_operand" "d")))]
+		 (match_operand:DSI 0 "register_operand" "d")))]
   "s390_match_ccmode(insn, CCURmode) && TARGET_Z10"
   "cl<g>hrl\t%0,%1"
   [(set_attr "op_type" "RIL")
@@ -1412,7 +1376,7 @@
         (compare (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand"
                                                         "d,T,b"))
                  (match_operand:DI 0 "register_operand" "d,d,d")))]
-  "s390_match_ccmode (insn, CCURmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCURmode)"
   "@
    clgfr\t%0,%1
    clgf\t%0,%1
@@ -1429,7 +1393,7 @@
                                      "d, d,d,Q,d, Q,BQ")
                  (match_operand:DI 1 "general_operand"
                                      "d,Op,b,D,T,BQ,Q")))]
-  "s390_match_ccmode (insn, CCUmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCUmode)"
   "@
    clgr\t%0,%1
    clgfi\t%0,%1
@@ -1540,7 +1504,7 @@
    (match_operand:SPACESHIP_INT 1 "register_operand")
    (match_operand:SPACESHIP_INT 2 "register_operand")
    (match_operand:SI 3 "const_int_operand")]
-  "TARGET_Z13 && TARGET_64BIT"
+  "TARGET_Z13"
   "s390_expand_int_spaceship (operands[0], operands[1], operands[2], operands[3]); DONE;")
 
 (define_mode_iterator SPACESHIP_BFP [TF DF SF])
@@ -1549,7 +1513,7 @@
    (match_operand:SPACESHIP_BFP 1 "register_operand")
    (match_operand:SPACESHIP_BFP 2 "register_operand")
    (match_operand:SI 3 "const_int_operand")]
-  "TARGET_Z13 && TARGET_64BIT && TARGET_HARD_FLOAT"
+  "TARGET_Z13 && TARGET_HARD_FLOAT"
   "s390_expand_fp_spaceship (operands[0], operands[1], operands[2], operands[3]); DONE;")
 
 
@@ -1665,8 +1629,8 @@
 (define_insn "*cmp_and_br_signed_<mode>"
   [(set (pc)
 	(if_then_else (match_operator 0 "s390_signed_integer_comparison"
-			[(match_operand:GPR 1 "register_operand"  "d,d")
-			 (match_operand:GPR 2 "nonmemory_operand" "d,C")])
+			[(match_operand:DSI 1 "register_operand"  "d,d")
+			 (match_operand:DSI 2 "nonmemory_operand" "d,C")])
 		      (label_ref (match_operand 3 "" ""))
 		      (pc)))
    (clobber (reg:CC CC_REGNUM))]
@@ -1693,8 +1657,8 @@
 (define_insn "*cmp_and_br_unsigned_<mode>"
   [(set (pc)
 	(if_then_else (match_operator 0 "s390_unsigned_integer_comparison"
-			[(match_operand:GPR 1 "register_operand"  "d,d")
-			 (match_operand:GPR 2 "nonmemory_operand" "d,I")])
+			[(match_operand:DSI 1 "register_operand"  "d,d")
+			 (match_operand:DSI 2 "nonmemory_operand" "d,I")])
 		      (label_ref (match_operand 3 "" ""))
 		      (pc)))
    (clobber (reg:CC CC_REGNUM))]
@@ -1723,8 +1687,8 @@
 (define_insn "*icmp_and_br_signed_<mode>"
   [(set (pc)
 	(if_then_else (match_operator 0 "s390_signed_integer_comparison"
-			[(match_operand:GPR 1 "register_operand"  "d,d")
-			 (match_operand:GPR 2 "nonmemory_operand" "d,C")])
+			[(match_operand:DSI 1 "register_operand"  "d,d")
+			 (match_operand:DSI 2 "nonmemory_operand" "d,C")])
 		      (pc)
 		      (label_ref (match_operand 3 "" ""))))
    (clobber (reg:CC CC_REGNUM))]
@@ -1751,8 +1715,8 @@
 (define_insn "*icmp_and_br_unsigned_<mode>"
   [(set (pc)
 	(if_then_else (match_operator 0 "s390_unsigned_integer_comparison"
-			[(match_operand:GPR 1 "register_operand"  "d,d")
-			 (match_operand:GPR 2 "nonmemory_operand" "d,I")])
+			[(match_operand:DSI 1 "register_operand"  "d,d")
+			 (match_operand:DSI 2 "nonmemory_operand" "d,I")])
 		      (pc)
 		      (label_ref (match_operand 3 "" ""))))
    (clobber (reg:CC CC_REGNUM))]
@@ -1787,7 +1751,7 @@
 (define_insn "*movti_bigconst"
   [(set (match_operand:TI 0 "register_operand"              "=d")
         (match_operand:TI 1 "reload_const_wide_int_operand" ""))]
-  "TARGET_ZARCH"
+  ""
   "#")
 
 ; FIXME: More constants are possible by enabling jxx, jyy constraints
@@ -1795,7 +1759,7 @@
 (define_insn "movti"
   [(set (match_operand:TI 0 "nonimmediate_operand" "=d,S,v,  v,  v,  v,  v,  v,v,d,v,R,d,    d, d,    d, d,o")
         (match_operand:TI 1 "general_operand"      " S,d,v,j00,jm1,jyy,jxx,jzz,d,v,R,v,K,NxHD0,Os,NxSD0,dT,d"))]
-  "TARGET_ZARCH"
+  ""
   "@
    lmg\t%0,%N0,%S1
    stmg\t%1,%N1,%S0
@@ -1822,7 +1786,7 @@
 (define_split
   [(set (match_operand:TI 0 "nonimmediate_operand" "")
         (match_operand:TI 1 "general_operand" ""))]
-  "TARGET_ZARCH && reload_completed
+  "reload_completed
    && s390_split_ok_p (operands[0], operands[1], TImode, 0)"
   [(set (match_dup 2) (match_dup 4))
    (set (match_dup 3) (match_dup 5))]
@@ -1836,7 +1800,7 @@
 (define_split
   [(set (match_operand:TI 0 "nonimmediate_operand" "")
         (match_operand:TI 1 "general_operand" ""))]
-  "TARGET_ZARCH && reload_completed
+  "reload_completed
    && s390_split_ok_p (operands[0], operands[1], TImode, 1)"
   [(set (match_dup 2) (match_dup 4))
    (set (match_dup 3) (match_dup 5))]
@@ -1853,7 +1817,7 @@
 (define_split
   [(set (match_operand:TI 0 "register_operand" "")
         (match_operand:TI 1 "memory_operand" ""))]
-  "TARGET_ZARCH && reload_completed
+  "reload_completed
    && !VECTOR_REG_P (operands[0])
    && !s_operand (operands[1], VOIDmode)"
   [(set (match_dup 0) (match_dup 1))]
@@ -1892,30 +1856,30 @@
 ; Unfortunately there is no such variant for QI, TI and FP mode moves.
 ; These patterns are also used for unaligned SI and DI accesses.
 
-(define_expand "reload<ALL:mode><P:mode>_tomem_z10"
+(define_expand "reload<ALL:mode>di_tomem_z10"
   [(parallel [(match_operand:ALL 0 "memory_operand"   "")
 	      (match_operand:ALL 1 "register_operand" "=d")
-	      (match_operand:P   2 "register_operand" "=&a")])]
+	      (match_operand:DI  2 "register_operand" "=&a")])]
   "TARGET_Z10"
 {
   s390_reload_symref_address (operands[1], operands[0], operands[2], 1);
   DONE;
 })
 
-(define_expand "reload<ALL:mode><P:mode>_toreg_z10"
+(define_expand "reload<ALL:mode>di_toreg_z10"
   [(parallel [(match_operand:ALL 0 "register_operand" "=d")
 	      (match_operand:ALL 1 "memory_operand"   "")
-	      (match_operand:P   2 "register_operand" "=a")])]
+	      (match_operand:DI  2 "register_operand" "=a")])]
   "TARGET_Z10"
 {
   s390_reload_symref_address (operands[0], operands[1], operands[2], 0);
   DONE;
 })
 
-(define_expand "reload<P:mode>_larl_odd_addend_z10"
-  [(parallel [(match_operand:P 0 "register_operand" "=d")
-	      (match_operand:P 1 "larl_operand"     "")
-	      (match_operand:P 2 "register_operand" "=a")])]
+(define_expand "reloaddi_larl_odd_addend_z10"
+  [(parallel [(match_operand:DI 0 "register_operand" "=d")
+	      (match_operand:DI 1 "larl_operand"     "")
+	      (match_operand:DI 2 "register_operand" "=a")])]
   "TARGET_Z10"
 {
   s390_reload_larl_operand (operands[0], operands[1], operands[2]);
@@ -1924,10 +1888,10 @@
 
 ; Handles loading a PLUS (load address) expression
 
-(define_expand "reload<mode>_plus"
-  [(parallel [(match_operand:P 0 "register_operand"  "=a")
-              (match_operand:P 1 "s390_plus_operand" "")
-              (match_operand:P 2 "register_operand"  "=&a")])]
+(define_expand "reloaddi_plus"
+  [(parallel [(match_operand:DI 0 "register_operand"  "=a")
+	      (match_operand:DI 1 "s390_plus_operand" "")
+	      (match_operand:DI 2 "register_operand"  "=&a")])]
   ""
 {
   s390_expand_plus_operand (operands[0], operands[1], operands[2]);
@@ -1943,10 +1907,10 @@
 ; - non-offsetable memory accesses for multiword moves
 ; - full vector reg moves with long displacements
 
-(define_expand "reload<mode>_la_in"
-  [(parallel [(match_operand 0   "register_operand" "")
-              (match_operand 1   "" "")
-              (match_operand:P 2 "register_operand" "=&a")])]
+(define_expand "reloaddi_la_in"
+  [(parallel [(match_operand 0    "register_operand" "")
+	      (match_operand 1    "" "")
+	      (match_operand:DI 2 "register_operand" "=&a")])]
   ""
 {
   gcc_assert (MEM_P (operands[1]));
@@ -1956,10 +1920,10 @@
   DONE;
 })
 
-(define_expand "reload<mode>_la_out"
-  [(parallel [(match_operand   0 "" "")
-              (match_operand   1 "register_operand" "")
-              (match_operand:P 2 "register_operand" "=&a")])]
+(define_expand "reloaddi_la_out"
+  [(parallel [(match_operand    0 "" "")
+	      (match_operand    1 "register_operand" "")
+	      (match_operand:DI 2 "register_operand" "=&a")])]
   ""
 {
   gcc_assert (MEM_P (operands[0]));
@@ -1969,10 +1933,10 @@
   DONE;
 })
 
-(define_expand "reload<mode>_PIC_addr"
-  [(parallel [(match_operand   0 "register_operand" "=d")
-	      (match_operand   1 "larl_operand"     "")
-	      (match_operand:P 2 "register_operand" "=a")])]
+(define_expand "reloaddi_PIC_addr"
+  [(parallel [(match_operand    0 "register_operand" "=d")
+	      (match_operand    1 "larl_operand"     "")
+	      (match_operand:DI 2 "register_operand" "=a")])]
   ""
 {
   rtx new_rtx = legitimize_pic_address (operands[1], operands[2]);
@@ -1989,11 +1953,10 @@
   ""
 {
   /* Handle symbolic constants.  */
-  if (TARGET_64BIT
-      && (SYMBOLIC_CONST (operands[1])
-	  || (GET_CODE (operands[1]) == PLUS
-	      && XEXP (operands[1], 0) == pic_offset_table_rtx
-	      && SYMBOLIC_CONST (XEXP (operands[1], 1)))))
+  if (SYMBOLIC_CONST (operands[1])
+      || (GET_CODE (operands[1]) == PLUS
+	  && XEXP (operands[1], 0) == pic_offset_table_rtx
+	  && SYMBOLIC_CONST (XEXP (operands[1], 1))))
     emit_symbolic_move (operands);
 })
 
@@ -2002,7 +1965,7 @@
          "=d,    d,    d,    d,    d, d,    d,    d,f,d,!*f,d,d,d,d,T,!*f,!*f,!*f,!R,!T,b,Q,d,t,Q,t,v,v,v,d,v,R,d")
         (match_operand:DI 1 "general_operand"
          " K,N0HD0,N1HD0,N2HD0,N3HD0,Os,N0SD0,N1SD0,d,f,j00,L,b,d,T,d, *f,  R,  T,*f,*f,d,K,t,d,t,Q,K,v,d,v,R,v,ZL"))]
-  "TARGET_ZARCH"
+  ""
   "@
    lghi\t%0,%h1
    llihh\t%0,%i1
@@ -2092,7 +2055,7 @@
   [(set (match_operand:DI 0 "register_operand" "=d")
 	(ashift:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "a"))
 		   (const_int LXAMODEITER)))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
   "lxa<lxamode>\t%0,0(%1,0)"
   [(set_attr "op_type" "RXY")])
 
@@ -2102,7 +2065,7 @@
 	(ashift:DI (sign_extend:DI (plus:SI (match_operand:SI 1 "register_operand" "a")
 					    (match_operand:SI 2 "const_int_operand")))
 		   (const_int LXAMODEITER)))]
-  "TARGET_Z17 && TARGET_64BIT && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
+  "TARGET_Z17 && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
   "lxa<lxamode>\t%0,%2(%1,0)"
   [(set_attr "op_type" "RXY")])
 
@@ -2112,7 +2075,7 @@
 	(plus:DI (ashift:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "a"))
 			    (const_int LXAMODEITER))
 		 (match_operand:DI 2 "register_operand" "a")))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
   "lxa<lxamode>\t%0,0(%1,%2)"
   [(set_attr "op_type" "RXY")])
 
@@ -2123,7 +2086,7 @@
 						     (match_operand:SI 2 "const_int_operand")))
 			    (const_int LXAMODEITER))
 		 (match_operand:DI 3 "register_operand" "a")))]
-  "TARGET_Z17 && TARGET_64BIT && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
+  "TARGET_Z17 && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
   "lxa<lxamode>\t%0,%2(%1,%3)"
   [(set_attr "op_type" "RXY")])
 
@@ -2132,7 +2095,7 @@
 	(plus:DI (sign_extend:DI (plus:SI (match_operand:SI 1 "register_operand" "a")
 					  (match_operand:SI 2 "const_int_operand")))
 		 (match_operand:DI 3 "register_operand" "a")))]
-  "TARGET_Z17 && TARGET_64BIT && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
+  "TARGET_Z17 && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
   "lxab\t%0,%2(%1,%3)"
   [(set_attr "op_type" "RXY")])
 
@@ -2149,7 +2112,7 @@
 				      0)
 			   (const_int LXAMODEITER))
 		(const_int <LLXAMASK>)))]
-  "TARGET_Z17 && TARGET_64BIT && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
+  "TARGET_Z17 && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
   "llxa<lxamode>\t%0,%2(%1,0)"
   [(set_attr "op_type" "RXY")])
 
@@ -2160,7 +2123,7 @@
 				    (const_int LXAMODEITER))
 			 (const_int <LLXAMASK>))
 		 (match_operand:DI 2 "register_operand" "a")))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
   "llxa<lxamode>\t%0,0(%1,%2)"
   [(set_attr "op_type" "RXY")])
 
@@ -2173,7 +2136,7 @@
 				    (const_int LXAMODEITER))
 			 (const_int <LLXAMASK>))
 		 (match_operand:DI 3 "register_operand" "a")))]
-  "TARGET_Z17 && TARGET_64BIT && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
+  "TARGET_Z17 && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
   "llxa<lxamode>\t%0,%2(%1,%3)"
   [(set_attr "op_type" "RXY")])
 
@@ -2182,29 +2145,20 @@
 	(plus:DI (zero_extend:DI (plus:SI (match_operand:SI 1 "register_operand" "a")
 					  (match_operand:SI 2 "const_int_operand")))
 		 (match_operand:DI 3 "register_operand" "a")))]
-  "TARGET_Z17 && TARGET_64BIT && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
+  "TARGET_Z17 && INTVAL (operands[2]) >= -0x80000 && INTVAL (operands[2]) <= 0x7FFFF"
   "llxab\t%0,%2(%1,%3)"
   [(set_attr "op_type" "RXY")])
 
 ; Splitters for loading TLS pointer from UNSPEC_GET_TP.
-; UNSPEC_GET_TP is used instead of %a0:P, since the latter is a hard register,
+; UNSPEC_GET_TP is used instead of %a0:DI, since the latter is a hard register,
 ; and those are not handled by Partial Redundancy Elimination (gcse.cc), which
 ; results in generation of redundant thread pointer loads.
 
-(define_insn_and_split "*get_tp_31"
-  [(set (match_operand:SI 0 "register_operand" "=r")
-	(unspec:SI [(match_operand:SI 1 "register_operand" "t")]
-		   UNSPEC_GET_TP))]
-  ""
-  "#"
-  "&& reload_completed"
-  [(set (match_dup 0) (match_dup 1))])
-
 (define_insn_and_split "*get_tp_64"
   [(set (match_operand:DI 0 "register_operand" "=r")
 	(unspec:DI [(match_operand:DI 1 "register_operand" "t")]
 		   UNSPEC_GET_TP))]
-  "TARGET_ZARCH"
+  ""
   "#"
   "&& reload_completed"
   [(set (match_dup 2) (match_dup 3))
@@ -2218,7 +2172,7 @@
 (define_split
   [(set (match_operand:DI 0 "register_operand" "")
         (match_operand:DI 1 "register_operand" ""))]
-  "TARGET_ZARCH && ACCESS_REG_P (operands[0]) && reload_completed
+  "ACCESS_REG_P (operands[0]) && reload_completed
    && dead_or_set_p (insn, operands[1])"
   [(set (match_dup 3) (match_dup 2))
    (set (match_dup 1) (lshiftrt:DI (match_dup 1) (const_int 32)))
@@ -2229,7 +2183,7 @@
 (define_split
   [(set (match_operand:DI 0 "register_operand" "")
         (match_operand:DI 1 "register_operand" ""))]
-  "TARGET_ZARCH && ACCESS_REG_P (operands[0]) && reload_completed
+  "ACCESS_REG_P (operands[0]) && reload_completed
    && !dead_or_set_p (insn, operands[1])"
   [(set (match_dup 3) (match_dup 2))
    (set (match_dup 1) (rotate:DI (match_dup 1) (const_int 32)))
@@ -2238,95 +2192,10 @@
   "operands[2] = gen_lowpart (SImode, operands[1]);
    s390_split_access_reg (operands[0], &operands[3], &operands[4]);")
 
-(define_insn "*movdi_31"
-  [(set (match_operand:DI 0 "nonimmediate_operand"
-                            "=d,d,Q,S,d  ,o,!*f,!*f,!*f,!*f,!R,!T,d")
-        (match_operand:DI 1 "general_operand"
-                            " Q,S,d,d,dPT,d, *f,  R,  T,j00,*f,*f,b"))]
-  "!TARGET_ZARCH"
-  "@
-   lm\t%0,%N0,%S1
-   lmy\t%0,%N0,%S1
-   stm\t%1,%N1,%S0
-   stmy\t%1,%N1,%S0
-   #
-   #
-   ldr\t%0,%1
-   ld\t%0,%1
-   ldy\t%0,%1
-   lzdr\t%0
-   std\t%1,%0
-   stdy\t%1,%0
-   #"
-  [(set_attr "op_type" "RS,RSY,RS,RSY,*,*,RR,RX,RXY,RRE,RX,RXY,*")
-   (set_attr "type" "lm,lm,stm,stm,*,*,floaddf,floaddf,floaddf,fsimpdf,fstoredf,fstoredf,*")
-   (set_attr "cpu_facility" "*,longdisp,*,longdisp,*,*,*,*,longdisp,*,*,longdisp,z10")])
-
-; For a load from a symbol ref we can use one of the target registers
-; together with larl to load the address.
-(define_split
-  [(set (match_operand:DI 0 "register_operand" "")
-        (match_operand:DI 1 "memory_operand" ""))]
-  "!TARGET_ZARCH && reload_completed && TARGET_Z10
-   && larl_operand (XEXP (operands[1], 0), SImode)"
-  [(set (match_dup 2) (match_dup 3))
-   (set (match_dup 0) (match_dup 1))]
-{
-  operands[2] = operand_subword (operands[0], 1, 0, DImode);
-  operands[3] = XEXP (operands[1], 0);
-  operands[1] = replace_equiv_address (operands[1], operands[2]);
-})
-
-(define_split
-  [(set (match_operand:DI 0 "nonimmediate_operand" "")
-        (match_operand:DI 1 "general_operand" ""))]
-  "!TARGET_ZARCH && reload_completed
-   && !s_operand (operands[0], DImode)
-   && !s_operand (operands[1], DImode)
-   && s390_split_ok_p (operands[0], operands[1], DImode, 0)"
-  [(set (match_dup 2) (match_dup 4))
-   (set (match_dup 3) (match_dup 5))]
-{
-  operands[2] = operand_subword (operands[0], 0, 0, DImode);
-  operands[3] = operand_subword (operands[0], 1, 0, DImode);
-  operands[4] = operand_subword (operands[1], 0, 0, DImode);
-  operands[5] = operand_subword (operands[1], 1, 0, DImode);
-})
-
-(define_split
-  [(set (match_operand:DI 0 "nonimmediate_operand" "")
-        (match_operand:DI 1 "general_operand" ""))]
-  "!TARGET_ZARCH && reload_completed
-   && !s_operand (operands[0], DImode)
-   && !s_operand (operands[1], DImode)
-   && s390_split_ok_p (operands[0], operands[1], DImode, 1)"
-  [(set (match_dup 2) (match_dup 4))
-   (set (match_dup 3) (match_dup 5))]
-{
-  operands[2] = operand_subword (operands[0], 1, 0, DImode);
-  operands[3] = operand_subword (operands[0], 0, 0, DImode);
-  operands[4] = operand_subword (operands[1], 1, 0, DImode);
-  operands[5] = operand_subword (operands[1], 0, 0, DImode);
-})
-
-(define_split
-  [(set (match_operand:DI 0 "register_operand" "")
-        (match_operand:DI 1 "memory_operand" ""))]
-  "!TARGET_ZARCH && reload_completed
-   && !FP_REG_P (operands[0])
-   && !s_operand (operands[1], VOIDmode)"
-  [(set (match_dup 0) (match_dup 1))]
-{
-  rtx addr = operand_subword (operands[0], 1, 0, DImode);
-  s390_load_address (addr, XEXP (operands[1], 0));
-  operands[1] = replace_equiv_address (operands[1], addr);
-})
-
 (define_peephole2
   [(set (match_operand:DI 0 "register_operand" "")
         (mem:DI (match_operand 1 "address_operand" "")))]
-  "TARGET_ZARCH
-   && !FP_REG_P (operands[0])
+  "!FP_REG_P (operands[0])
    && GET_CODE (operands[1]) == SYMBOL_REF
    && CONSTANT_POOL_ADDRESS_P (operands[1])
    && get_pool_mode (operands[1]) == DImode
@@ -2337,7 +2206,7 @@
 (define_insn "*la_64"
   [(set (match_operand:DI 0 "register_operand" "=d,d")
         (match_operand:QI 1 "address_operand" "ZR,ZT"))]
-  "TARGET_64BIT"
+  ""
   "@
    la\t%0,%a1
    lay\t%0,%a1"
@@ -2351,8 +2220,7 @@
     [(set (match_operand:DI 0 "register_operand" "")
           (match_operand:QI 1 "address_operand" ""))
      (clobber (reg:CC CC_REGNUM))])]
-  "TARGET_64BIT
-   && preferred_la_operand_p (operands[1], const0_rtx)"
+  "preferred_la_operand_p (operands[1], const0_rtx)"
   [(set (match_dup 0) (match_dup 1))]
   "")
 
@@ -2364,8 +2232,7 @@
           (plus:DI (match_dup 0)
                    (match_operand:DI 2 "nonmemory_operand" "")))
      (clobber (reg:CC CC_REGNUM))])]
-  "TARGET_64BIT
-   && !reg_overlap_mentioned_p (operands[0], operands[2])
+  "!reg_overlap_mentioned_p (operands[0], operands[2])
    && preferred_la_operand_p (operands[1], operands[2])"
   [(set (match_dup 0) (plus:DI (match_dup 1) (match_dup 2)))]
   "")
@@ -2376,8 +2243,7 @@
 (define_peephole2
   [(set (match_operand:DI 0 "register_operand" "")
 	(match_operand:DI 1 "memory_operand" ""))]
-  "TARGET_64BIT
-   && TARGET_EXTIMM
+  "TARGET_EXTIMM
    && GENERAL_REG_P (operands[0])
    && s390_const_int_pool_entry_p (operands[1], nullptr)
    && peep2_reg_dead_p (1, gen_rtx_REG (CCmode, CC_REGNUM))"
@@ -2407,37 +2273,12 @@
 ; movsi instruction pattern(s).
 ;
 
-(define_expand "movsi"
-  [(set (match_operand:SI 0 "general_operand" "")
-        (match_operand:SI 1 "general_operand" ""))]
-  ""
-{
-  /* Handle symbolic constants.  */
-  if (!TARGET_64BIT
-      && (SYMBOLIC_CONST (operands[1])
-	  || (GET_CODE (operands[1]) == PLUS
-	      && XEXP (operands[1], 0) == pic_offset_table_rtx
-	      && SYMBOLIC_CONST (XEXP(operands[1], 1)))))
-    emit_symbolic_move (operands);
-})
-
-(define_insn "*movsi_larl"
-  [(set (match_operand:SI 0 "register_operand" "=d")
-        (match_operand:SI 1 "larl_operand" "X"))]
-  "!TARGET_64BIT
-   && !FP_REG_P (operands[0])"
-  "larl\t%0,%1"
-   [(set_attr "op_type" "RIL")
-    (set_attr "type"    "larl")
-    (set_attr "z10prop" "z10_fwd_A1")
-    (set_attr "relative_long" "yes")])
-
-(define_insn "*movsi_zarch"
+(define_insn "movsi"
   [(set (match_operand:SI 0 "nonimmediate_operand"
 	 "=d,    d,    d, d,d,d,d,d,d,R,T,!*f,!*f,!*f,!*f,!*f,!R,!T,d,t,Q,b,Q,t,v,v,v,d,v,R")
         (match_operand:SI 1 "general_operand"
 	 " K,N0HS0,N1HS0,Os,L,b,d,R,T,d,d, *f, *f,  R,  R,  T,*f,*f,t,d,t,d,K,Q,K,v,d,v,R,v"))]
-  "TARGET_ZARCH"
+  ""
   "@
    lhi\t%0,%h1
    llilh\t%0,%i1
@@ -2525,31 +2366,6 @@
                               *,*,*,*,*,*,*,*,*,*,
                               *,yes,*,*,*,*,*,*,*,*")])
 
-(define_insn "*movsi_esa"
-  [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,R,!*f,!*f,!*f,!*f,!R,d,t,Q,t")
-        (match_operand:SI 1 "general_operand"       "K,d,R,d, *f, *f,  R,  R,*f,t,d,t,Q"))]
-  "!TARGET_ZARCH"
-  "@
-   lhi\t%0,%h1
-   lr\t%0,%1
-   l\t%0,%1
-   st\t%1,%0
-   ldr\t%0,%1
-   ler\t%0,%1
-   lde\t%0,%1
-   le\t%0,%1
-   ste\t%1,%0
-   ear\t%0,%1
-   sar\t%0,%1
-   stam\t%1,%1,%S0
-   lam\t%0,%0,%S1"
-  [(set_attr "op_type" "RI,RR,RX,RX,RR,RR,RXE,RX,RX,RRE,RRE,RS,RS")
-   (set_attr "type" "*,lr,load,store,floadsf,floadsf,floadsf,floadsf,fstoresf,*,*,*,*")
-   (set_attr "z10prop" "z10_fwd_A1,z10_fr_E1,z10_fwd_A3,z10_rec,*,*,*,*,*,z10_super_E1,
-                        z10_super,*,*")
-   (set_attr "cpu_facility" "*,*,*,*,vx,*,vx,*,*,*,*,*,*")
-])
-
 (define_peephole2
   [(set (match_operand:SI 0 "register_operand" "")
         (mem:SI (match_operand 1 "address_operand" "")))]
@@ -2561,82 +2377,6 @@
   [(set (match_dup 0) (match_dup 2))]
   "operands[2] = get_pool_constant (operands[1]);")
 
-(define_insn "*la_31"
-  [(set (match_operand:SI 0 "register_operand" "=d,d")
-        (match_operand:QI 1 "address_operand" "ZR,ZT"))]
-  "!TARGET_64BIT && legitimate_la_operand_p (operands[1])"
-  "@
-   la\t%0,%a1
-   lay\t%0,%a1"
-  [(set_attr "op_type"  "RX,RXY")
-   (set_attr "type"     "la")
-   (set_attr "cpu_facility" "*,longdisp")
-   (set_attr "z10prop" "z10_fwd_A1,z10_fwd_A1")])
-
-(define_peephole2
-  [(parallel
-    [(set (match_operand:SI 0 "register_operand" "")
-          (match_operand:QI 1 "address_operand" ""))
-     (clobber (reg:CC CC_REGNUM))])]
-  "!TARGET_64BIT
-   && preferred_la_operand_p (operands[1], const0_rtx)"
-  [(set (match_dup 0) (match_dup 1))]
-  "")
-
-(define_peephole2
-  [(set (match_operand:SI 0 "register_operand" "")
-        (match_operand:SI 1 "register_operand" ""))
-   (parallel
-    [(set (match_dup 0)
-          (plus:SI (match_dup 0)
-                   (match_operand:SI 2 "nonmemory_operand" "")))
-     (clobber (reg:CC CC_REGNUM))])]
-  "!TARGET_64BIT
-   && !reg_overlap_mentioned_p (operands[0], operands[2])
-   && preferred_la_operand_p (operands[1], operands[2])"
-  [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))]
-  "")
-
-(define_insn "*la_31_and"
-  [(set (match_operand:SI 0 "register_operand" "=d,d")
-        (and:SI (match_operand:QI 1 "address_operand" "ZR,ZT")
-                (const_int 2147483647)))]
-  "!TARGET_64BIT"
-  "@
-   la\t%0,%a1
-   lay\t%0,%a1"
-  [(set_attr "op_type"  "RX,RXY")
-   (set_attr "type"     "la")
-   (set_attr "cpu_facility" "*,longdisp")
-   (set_attr "z10prop" "z10_fwd_A1,z10_fwd_A1")])
-
-(define_insn_and_split "*la_31_and_cc"
-  [(set (match_operand:SI 0 "register_operand" "=d")
-        (and:SI (match_operand:QI 1 "address_operand" "p")
-                (const_int 2147483647)))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_64BIT"
-  "#"
-  "&& reload_completed"
-  [(set (match_dup 0)
-        (and:SI (match_dup 1) (const_int 2147483647)))]
-  ""
-  [(set_attr "op_type"  "RX")
-   (set_attr "type"     "la")])
-
-(define_insn "force_la_31"
-  [(set (match_operand:SI 0 "register_operand" "=d,d")
-        (match_operand:QI 1 "address_operand" "ZR,ZT"))
-   (use (const_int 0))]
-  "!TARGET_64BIT"
-  "@
-   la\t%0,%a1
-   lay\t%0,%a1"
-  [(set_attr "op_type"  "RX")
-   (set_attr "type"     "la")
-   (set_attr "cpu_facility" "*,longdisp")
-   (set_attr "z10prop" "z10_fwd_A1,z10_fwd_A1")])
-
 ;
 ; movhi instruction pattern(s).
 ;
@@ -2714,7 +2454,7 @@
 {
   /* On z/Architecture, zero-extending from memory to register
      is just as fast as a QImode load.  */
-  if (TARGET_ZARCH && optimize && can_create_pseudo_p ()
+  if (optimize && can_create_pseudo_p ()
       && register_operand (operands[0], VOIDmode)
       && GET_CODE (operands[1]) == MEM)
     {
@@ -2799,7 +2539,7 @@
 (define_insn "movstrictsi"
   [(set (strict_low_part (match_operand:SI 0 "subreg_register_operand" "+d,d,d,d"))
                          (match_operand:SI 1 "general_operand"          "d,R,T,t"))]
-  "TARGET_ZARCH"
+  ""
   "@
    lr\t%0,%1
    l\t%0,%1
@@ -2823,7 +2563,7 @@
 (define_insn "*mov<mode>_64"
   [(set (match_operand:TD_TF 0 "nonimmediate_operand" "=f,f,f,o,d,S, d,o")
         (match_operand:TD_TF 1 "general_operand"      " G,f,o,f,S,d,dT,d"))]
-  "TARGET_ZARCH"
+  ""
   "@
    lzxr\t%0
    lxr\t%0,%1
@@ -2837,25 +2577,12 @@
    (set_attr "type"         "fsimptf,fsimptf,*,*,lm,stm,*,*")
    (set_attr "cpu_facility" "z196,*,*,*,*,*,*,*")])
 
-(define_insn "*mov<mode>_31"
-  [(set (match_operand:TD_TF 0 "nonimmediate_operand" "=f,f,f,o")
-        (match_operand:TD_TF 1 "general_operand"      " G,f,o,f"))]
-  "!TARGET_ZARCH"
-  "@
-   lzxr\t%0
-   lxr\t%0,%1
-   #
-   #"
-  [(set_attr "op_type"      "RRE,RRE,*,*")
-   (set_attr "type"         "fsimptf,fsimptf,*,*")
-   (set_attr "cpu_facility" "z196,*,*,*")])
-
 ; TFmode in GPRs splitters
 
 (define_split
   [(set (match_operand:TD_TF 0 "nonimmediate_operand" "")
         (match_operand:TD_TF 1 "general_operand"      ""))]
-  "TARGET_ZARCH && reload_completed
+  "reload_completed
    && !s_operand (operands[0], <MODE>mode)
    && !s_operand (operands[1], <MODE>mode)
    && s390_split_ok_p (operands[0], operands[1], <MODE>mode, 0)"
@@ -2871,7 +2598,7 @@
 (define_split
   [(set (match_operand:TD_TF 0 "nonimmediate_operand" "")
         (match_operand:TD_TF 1 "general_operand"      ""))]
-  "TARGET_ZARCH && reload_completed
+  "reload_completed
    && !s_operand (operands[0], <MODE>mode)
    && !s_operand (operands[1], <MODE>mode)
    && s390_split_ok_p (operands[0], operands[1], <MODE>mode, 1)"
@@ -2887,7 +2614,7 @@
 (define_split
   [(set (match_operand:TD_TF 0 "register_operand" "")
         (match_operand:TD_TF 1 "memory_operand"   ""))]
-  "TARGET_ZARCH && reload_completed
+  "reload_completed
    && GENERAL_REG_P (operands[0])
    && !s_operand (operands[1], VOIDmode)"
   [(set (match_dup 0) (match_dup 1))]
@@ -2979,7 +2706,7 @@
 (define_insn "*mov<mode>_64"
   [(set (match_operand:DD_DF 0 "nonimmediate_operand" "=f,f,f,f,R,T,d,d,d,d,b,T")
         (match_operand:DD_DF 1 "general_operand"      " G,f,R,T,f,f,G,d,b,T,d,d"))]
-  "TARGET_ZARCH"
+  ""
   "@
    lzdr\t%0
    ldr\t%0,%1
@@ -3000,75 +2727,6 @@
    (set_attr "cpu_facility" "z196,*,*,longdisp,*,longdisp,*,*,z10,*,z10,*")
    (set_attr "relative_long" "*,*,*,*,*,*,*,*,yes,*,*,*")])
 
-(define_insn "*mov<mode>_31"
-  [(set (match_operand:DD_DF 0 "nonimmediate_operand"
-                               "=f,f,f,f,R,T,d,d,Q,S,  d,o")
-        (match_operand:DD_DF 1 "general_operand"
-                               " G,f,R,T,f,f,Q,S,d,d,dPT,d"))]
-  "!TARGET_ZARCH"
-  "@
-   lzdr\t%0
-   ldr\t%0,%1
-   ld\t%0,%1
-   ldy\t%0,%1
-   std\t%1,%0
-   stdy\t%1,%0
-   lm\t%0,%N0,%S1
-   lmy\t%0,%N0,%S1
-   stm\t%1,%N1,%S0
-   stmy\t%1,%N1,%S0
-   #
-   #"
-  [(set_attr "op_type" "RRE,RR,RX,RXY,RX,RXY,RS,RSY,RS,RSY,*,*")
-   (set_attr "type"    "fsimpdf,fload<mode>,fload<mode>,fload<mode>,
-                        fstore<mode>,fstore<mode>,lm,lm,stm,stm,*,*")
-   (set_attr "cpu_facility" "z196,*,*,longdisp,*,longdisp,*,longdisp,*,longdisp,*,*")])
-
-(define_split
-  [(set (match_operand:DD_DF 0 "nonimmediate_operand" "")
-        (match_operand:DD_DF 1 "general_operand" ""))]
-  "!TARGET_ZARCH && reload_completed
-   && !s_operand (operands[0], <MODE>mode)
-   && !s_operand (operands[1], <MODE>mode)
-   && s390_split_ok_p (operands[0], operands[1], <MODE>mode, 0)"
-  [(set (match_dup 2) (match_dup 4))
-   (set (match_dup 3) (match_dup 5))]
-{
-  operands[2] = operand_subword (operands[0], 0, 0, <MODE>mode);
-  operands[3] = operand_subword (operands[0], 1, 0, <MODE>mode);
-  operands[4] = operand_subword (operands[1], 0, 0, <MODE>mode);
-  operands[5] = operand_subword (operands[1], 1, 0, <MODE>mode);
-})
-
-(define_split
-  [(set (match_operand:DD_DF 0 "nonimmediate_operand" "")
-        (match_operand:DD_DF 1 "general_operand" ""))]
-  "!TARGET_ZARCH && reload_completed
-   && !s_operand (operands[0], <MODE>mode)
-   && !s_operand (operands[1], <MODE>mode)
-   && s390_split_ok_p (operands[0], operands[1], <MODE>mode, 1)"
-  [(set (match_dup 2) (match_dup 4))
-   (set (match_dup 3) (match_dup 5))]
-{
-  operands[2] = operand_subword (operands[0], 1, 0, <MODE>mode);
-  operands[3] = operand_subword (operands[0], 0, 0, <MODE>mode);
-  operands[4] = operand_subword (operands[1], 1, 0, <MODE>mode);
-  operands[5] = operand_subword (operands[1], 0, 0, <MODE>mode);
-})
-
-(define_split
-  [(set (match_operand:DD_DF 0 "register_operand" "")
-        (match_operand:DD_DF 1 "memory_operand" ""))]
-  "!TARGET_ZARCH && reload_completed
-   && !FP_REG_P (operands[0])
-   && !s_operand (operands[1], VOIDmode)"
-  [(set (match_dup 0) (match_dup 1))]
-{
-  rtx addr = operand_subword (operands[0], 1, 0, <MODE>mode);
-  s390_load_address (addr, XEXP (operands[1], 0));
-  operands[1] = replace_equiv_address (operands[1], addr);
-})
-
 ;
 ; mov(sf|sd) instruction pattern(s).
 ;
@@ -3116,7 +2774,7 @@
 (define_insn "movhf"
   [(set (match_operand:HF 0 "nonimmediate_operand")
 	(match_operand:HF 1 "general_operand"))]
-  "TARGET_64BIT"
+  ""
   {@ [ cons: =0, 1; attrs: op_type, cpu_facility ]
      [ v , v   ; VRR , vx       ] vlr\t%v0,%v1
      [ v , d   ; VRS , vx       ] vlvgh\t%v0,%1,0
@@ -3294,7 +2952,7 @@
   count = INTVAL (operands[2]);
   regno = REGNO (operands[0]);
   mode = GET_MODE (operands[0]);
-  if (mode != SImode && (!TARGET_ZARCH || mode != DImode))
+  if (mode != SImode && mode != DImode)
     FAIL;
 
   operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count));
@@ -3333,7 +2991,7 @@
   [(match_parallel 0 "load_multiple_operation"
 		   [(set (match_operand:DI 1 "register_operand" "=r")
 			 (match_operand:DI 2 "s_operand" "S"))])]
-  "reload_completed && TARGET_ZARCH"
+  "reload_completed"
 {
   int words = XVECLEN (operands[0], 0);
   operands[0] = gen_rtx_REG (DImode, REGNO (operands[1]) + words - 1);
@@ -3385,7 +3043,7 @@
   count = INTVAL (operands[2]);
   regno = REGNO (operands[1]);
   mode = GET_MODE (operands[1]);
-  if (mode != SImode && (!TARGET_ZARCH || mode != DImode))
+  if (mode != SImode && mode != DImode)
     FAIL;
 
   operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count));
@@ -3425,7 +3083,7 @@
   [(match_parallel 0 "store_multiple_operation"
 		   [(set (match_operand:DI 1 "s_operand" "=S")
 			 (match_operand:DI 2 "register_operand" "r"))])]
-  "reload_completed && TARGET_ZARCH"
+  "reload_completed"
 {
   int words = XVECLEN (operands[0], 0);
   operands[0] = gen_rtx_REG (DImode, REGNO (operands[2]) + words - 1);
@@ -3481,35 +3139,35 @@
 ; strlenM instruction pattern(s).
 ;
 
-(define_expand "strlen<mode>"
-  [(match_operand:P   0 "register_operand" "")  ; result
+(define_expand "strlendi"
+  [(match_operand:DI  0 "register_operand" "")  ; result
    (match_operand:BLK 1 "memory_operand" "")    ; input string
    (match_operand:SI  2 "immediate_operand" "") ; search character
    (match_operand:SI  3 "immediate_operand" "")] ; known alignment
   ""
 {
   if (!TARGET_VX || operands[2] != const0_rtx)
-    emit_insn (gen_strlen_srst<mode> (operands[0], operands[1],
-				      operands[2], operands[3]));
+    emit_insn (gen_strlen_srstdi (operands[0], operands[1],
+				  operands[2], operands[3]));
   else
     s390_expand_vec_strlen (operands[0], operands[1], operands[3]);
 
   DONE;
 })
 
-(define_expand "strlen_srst<mode>"
+(define_expand "strlen_srstdi"
   [(set (reg:SI 0) (match_operand:SI 2 "immediate_operand" ""))
    (parallel
     [(set (match_dup 4)
-	  (unspec:P [(const_int 0)
+	  (unspec:DI [(const_int 0)
 		      (match_operand:BLK 1 "memory_operand" "")
 		      (reg:SI 0)
 		      (match_operand 3 "immediate_operand" "")] UNSPEC_SRST))
-     (clobber (scratch:P))
+     (clobber (scratch:DI))
      (clobber (reg:CC CC_REGNUM))])
    (parallel
-    [(set (match_operand:P 0 "register_operand" "")
-          (minus:P (match_dup 4) (match_dup 5)))
+    [(set (match_operand:DI 0 "register_operand" "")
+          (minus:DI (match_dup 4) (match_dup 5)))
      (clobber (reg:CC CC_REGNUM))])]
   ""
 {
@@ -3519,13 +3177,13 @@
   operands[1] = replace_equiv_address (operands[1], operands[5]);
 })
 
-(define_insn "*strlen<mode>"
-  [(set (match_operand:P 0 "register_operand" "=a")
-	(unspec:P [(match_operand:P 2 "general_operand" "0")
-		    (mem:BLK (match_operand:P 3 "register_operand" "1"))
+(define_insn "*strlendi"
+  [(set (match_operand:DI 0 "register_operand" "=a")
+	(unspec:DI [(match_operand:DI 2 "general_operand" "0")
+		    (mem:BLK (match_operand:DI 3 "register_operand" "1"))
 		    (reg:SI 0)
 		    (match_operand 4 "immediate_operand" "")] UNSPEC_SRST))
-   (clobber (match_scratch:P 1 "=a"))
+   (clobber (match_scratch:DI 1 "=a"))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "srst\t%0,%1\;jo\t.-4"
@@ -3566,12 +3224,12 @@
   operands[4] = addr2;
 })
 
-(define_insn "*cmpstr<mode>"
-  [(clobber (match_operand:P 0 "register_operand" "=d"))
-   (clobber (match_operand:P 1 "register_operand" "=d"))
+(define_insn "*cmpstrdi"
+  [(clobber (match_operand:DI 0 "register_operand" "=d"))
+   (clobber (match_operand:DI 1 "register_operand" "=d"))
    (set (reg:CCU CC_REGNUM)
-	(compare:CCU (mem:BLK (match_operand:P 2 "register_operand" "0"))
-		     (mem:BLK (match_operand:P 3 "register_operand" "1"))))
+	(compare:CCU (mem:BLK (match_operand:DI 2 "register_operand" "0"))
+		     (mem:BLK (match_operand:DI 3 "register_operand" "1"))))
    (use (reg:SI 0))]
   ""
   "clst\t%0,%1\;jo\t.-4"
@@ -3583,28 +3241,15 @@
 ;
 
 (define_expand "movstr"
-  [(match_operand 0 "register_operand" "")
-   (match_operand 1 "memory_operand" "")
-   (match_operand 2 "memory_operand" "")]
-  ""
-{
-  if (TARGET_64BIT)
-    emit_insn (gen_movstrdi (operands[0], operands[1], operands[2]));
-  else
-    emit_insn (gen_movstrsi (operands[0], operands[1], operands[2]));
-  DONE;
-})
-
-(define_expand "movstr<P:mode>"
   [(set (reg:SI 0) (const_int 0))
    (parallel
     [(clobber (match_dup 3))
      (set (match_operand:BLK 1 "memory_operand" "")
 	  (match_operand:BLK 2 "memory_operand" ""))
-     (set (match_operand:P 0 "register_operand" "")
-	  (unspec:P [(match_dup 1)
-		   (match_dup 2)
-		   (reg:SI 0)] UNSPEC_MVST))
+     (set (match_operand:DI 0 "register_operand" "")
+	  (unspec:DI [(match_dup 1)
+		      (match_dup 2)
+		      (reg:SI 0)] UNSPEC_MVST))
      (clobber (reg:CC CC_REGNUM))])]
   ""
 {
@@ -3627,13 +3272,13 @@
 })
 
 (define_insn "*movstr"
-  [(clobber (match_operand:P 2 "register_operand" "=d"))
-   (set (mem:BLK (match_operand:P 1 "register_operand" "0"))
-	(mem:BLK (match_operand:P 3 "register_operand" "2")))
-   (set (match_operand:P 0 "register_operand" "=d")
-	(unspec:P [(mem:BLK (match_dup 1))
-		 (mem:BLK (match_dup 3))
-		 (reg:SI 0)] UNSPEC_MVST))
+  [(clobber (match_operand:DI 2 "register_operand" "=d"))
+   (set (mem:BLK (match_operand:DI 1 "register_operand" "0"))
+	(mem:BLK (match_operand:DI 3 "register_operand" "2")))
+   (set (match_operand:DI 0 "register_operand" "=d")
+	(unspec:DI [(mem:BLK (match_dup 1))
+		    (mem:BLK (match_dup 3))
+		    (reg:SI 0)] UNSPEC_MVST))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "mvst\t%1,%2\;jo\t.-4"
@@ -3648,7 +3293,7 @@
 (define_expand "cpymem<mode>"
   [(set (match_operand:BLK 0 "memory_operand" "")   ; destination
         (match_operand:BLK 1 "memory_operand" ""))  ; source
-   (use (match_operand:GPR 2 "general_operand" "")) ; size
+   (use (match_operand:DSI 2 "general_operand" "")) ; size
    (match_operand 3 "")  ; align
    (match_operand 4 "")  ; expected align
    (match_operand 5 "")  ; expected size
@@ -3680,11 +3325,11 @@
         (match_operand:BLK 1 "memory_operand" "Q,Q,Q,Q"))
    (use (match_operand 2 "nonmemory_operand" "n,a,a,a"))
    (use (match_operand 3 "immediate_operand" "X,R,X,X"))
-   (clobber (match_scratch:P 4 "=X,X,X,&a"))]
+   (clobber (match_scratch:DI 4 "=X,X,X,&a"))]
   "(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)"
   "#"
   [(set_attr "type"         "cs")
-   (set_attr "cpu_facility" "*,*,z10,cpu_zarch")])
+   (set_attr "cpu_facility" "*,*,z10,*")])
 
 (define_split
   [(set (match_operand:BLK 0 "memory_operand" "")
@@ -3754,12 +3399,10 @@
      (clobber (reg:CC CC_REGNUM))])]
   ""
 {
-  machine_mode sreg_mode = TARGET_ZARCH ? DImode : SImode;
-  machine_mode dreg_mode = TARGET_ZARCH ? TImode : DImode;
-  rtx reg0 = gen_reg_rtx (dreg_mode);
-  rtx reg1 = gen_reg_rtx (dreg_mode);
-  rtx addr0 = gen_lowpart (Pmode, gen_highpart (sreg_mode, reg0));
-  rtx addr1 = gen_lowpart (Pmode, gen_highpart (sreg_mode, reg1));
+  rtx reg0 = gen_reg_rtx (TImode);
+  rtx reg1 = gen_reg_rtx (TImode);
+  rtx addr0 = gen_lowpart (Pmode, gen_highpart (DImode, reg0));
+  rtx addr1 = gen_lowpart (Pmode, gen_highpart (DImode, reg1));
   rtx len0 = gen_lowpart (Pmode, reg0);
   rtx len1 = gen_lowpart (Pmode, reg1);
 
@@ -3778,27 +3421,14 @@
 })
 
 (define_insn "*cpymem_long"
-  [(clobber (match_operand:<DBL> 0 "register_operand" "=d"))
-   (clobber (match_operand:<DBL> 1 "register_operand" "=d"))
-   (set (mem:BLK (subreg:P (match_operand:<DBL> 2 "register_operand" "0") 0))
-        (mem:BLK (subreg:P (match_operand:<DBL> 3 "register_operand" "1") 0)))
-   (use (match_dup 2))
-   (use (match_dup 3))
-   (clobber (reg:CC CC_REGNUM))]
-  "TARGET_64BIT || !TARGET_ZARCH"
-  "mvcle\t%0,%1,0\;jo\t.-4"
-  [(set_attr "length" "8")
-   (set_attr "type" "vs")])
-
-(define_insn "*cpymem_long_31z"
   [(clobber (match_operand:TI 0 "register_operand" "=d"))
    (clobber (match_operand:TI 1 "register_operand" "=d"))
-   (set (mem:BLK (subreg:SI (match_operand:TI 2 "register_operand" "0") 4))
-        (mem:BLK (subreg:SI (match_operand:TI 3 "register_operand" "1") 4)))
+   (set (mem:BLK (subreg:DI (match_operand:TI 2 "register_operand" "0") 0))
+        (mem:BLK (subreg:DI (match_operand:TI 3 "register_operand" "1") 0)))
    (use (match_dup 2))
    (use (match_dup 3))
    (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_64BIT && TARGET_ZARCH"
+  ""
   "mvcle\t%0,%1,0\;jo\t.-4"
   [(set_attr "length" "8")
    (set_attr "type" "vs")])
@@ -3806,7 +3436,7 @@
 (define_expand "movmem<mode>"
   [(set (match_operand:BLK 0 "memory_operand")   ; destination
         (match_operand:BLK 1 "memory_operand"))  ; source
-   (use (match_operand:GPR 2 "general_operand")) ; size
+   (use (match_operand:DSI 2 "general_operand")) ; size
    (match_operand 3 "")  ; align
    (match_operand 4 "")  ; expected align
    (match_operand 5 "")  ; expected size
@@ -3872,7 +3502,7 @@
 (define_expand "signbithf2"
   [(match_operand:SI 0 "register_operand")
    (match_operand:HF 1 "nonimmediate_operand")]
-  "TARGET_HARD_FLOAT && TARGET_Z10 && TARGET_64BIT"
+  "TARGET_HARD_FLOAT && TARGET_Z10"
 {
   if (TARGET_VX)
     {
@@ -3894,12 +3524,12 @@
    (match_operand:SIGNBIT_SINGLE 1 "nonimmediate_operand")]
   ""
 {
-  if (TARGET_VX && TARGET_64BIT)
+  if (TARGET_VX)
     {
       emit_insn (gen_rtx_SET (operands[0], simplify_gen_subreg (SImode, operands[1], <MODE>mode, 0)));
       emit_insn (gen_rtx_SET (operands[0], gen_rtx_LSHIFTRT (SImode, operands[0], GEN_INT (31))));
     }
-  else if (TARGET_Z10 && TARGET_64BIT)
+  else if (TARGET_Z10)
     emit_insn (gen_signbit<mode>2_z10 (operands[0], operands[1]));
   else
     emit_insn (gen_signbit_tdc<mode>2 (operands[0], force_reg (<MODE>mode, operands[1])));
@@ -3914,14 +3544,14 @@
   [(set (match_operand:SI 0 "register_operand" "=d")
 	(unspec:SI [(match_operand:SIGNBIT_HALF_SINGLE 1 "nonimmediate_operand" "fRT")]
 		   UNSPEC_SIGNBIT))]
-  "TARGET_Z10 && TARGET_64BIT"
+  "TARGET_Z10"
   "#")
 
 (define_split
   [(set (match_operand:SI 0 "register_operand")
 	(unspec:SI [(match_operand:SIGNBIT_HALF_SINGLE 1 "register_operand")]
 		   UNSPEC_SIGNBIT))]
-  "TARGET_Z10 && TARGET_64BIT && reload_completed"
+  "TARGET_Z10 && reload_completed"
   [(set (match_dup 0) (match_dup 1))
    (set (match_dup 0) (lshiftrt:DI (match_dup 0) (const_int 63)))]
 {
@@ -3933,7 +3563,7 @@
   [(set (match_operand:SI 0 "register_operand")
 	(unspec:SI [(match_operand:SIGNBIT_HALF_SINGLE 1 "memory_operand")]
 		   UNSPEC_SIGNBIT))]
-  "TARGET_Z10 && TARGET_64BIT && reload_completed"
+  "TARGET_Z10 && reload_completed"
   [(set (match_dup 0) (match_dup 1))
    (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 31)))]
 {
@@ -3959,7 +3589,7 @@
    (match_operand:SIGNBIT_DBL_TETRA 1 "nonimmediate_operand")]
   ""
 {
-  if (TARGET_Z10 && TARGET_64BIT)
+  if (TARGET_Z10)
     {
       rtx reg_di = gen_reg_rtx (DImode);
       if (<MODE>mode == TFmode || <MODE>mode == TDmode)
@@ -4018,7 +3648,7 @@
 (define_expand "setmem<mode>"
   [(set (match_operand:BLK 0 "memory_operand" "")   ; destination
         (match_operand:QI 2 "general_operand" ""))  ; value
-   (use (match_operand:GPR 1 "general_operand" "")) ; size
+   (use (match_operand:DSI 1 "general_operand" "")) ; size
    (match_operand 3 "")  ; align
    (match_operand 4 "")  ; expected align
    (match_operand 5 "")  ; expected size
@@ -4046,12 +3676,12 @@
         (const_int 0))
    (use (match_operand 1 "nonmemory_operand" "n,a,a,a"))
    (use (match_operand 2 "immediate_operand" "X,R,X,X"))
-   (clobber (match_scratch:P 3 "=X,X,X,&a"))
+   (clobber (match_scratch:DI 3 "=X,X,X,&a"))
    (clobber (reg:CC CC_REGNUM))]
   "(GET_MODE (operands[1]) == Pmode || GET_MODE (operands[1]) == VOIDmode)"
   "#"
   [(set_attr "type" "cs")
-   (set_attr "cpu_facility" "*,*,z10,cpu_zarch")])
+   (set_attr "cpu_facility" "*,*,z10,*")])
 
 (define_split
   [(set (match_operand:BLK 0 "memory_operand" "")
@@ -4118,21 +3748,19 @@
 
 ; Initialize a block of arbitrary length with (operands[2] % 256).
 
-(define_expand "setmem_long_<P:mode>"
+(define_expand "setmem_long_di"
   [(parallel
     [(clobber (match_dup 1))
      (set (match_operand:BLK 0 "memory_operand" "")
-	  (unspec:BLK [(match_operand:P 2 "setmem_operand" "")
-		      (match_dup 4)] UNSPEC_REPLICATE_BYTE))
+	  (unspec:BLK [(match_operand:DI 2 "setmem_operand" "")
+		       (match_dup 4)] UNSPEC_REPLICATE_BYTE))
      (use (match_dup 3))
      (clobber (reg:CC CC_REGNUM))])]
   ""
 {
-  machine_mode sreg_mode = TARGET_ZARCH ? DImode : SImode;
-  machine_mode dreg_mode = TARGET_ZARCH ? TImode : DImode;
-  rtx reg0 = gen_reg_rtx (dreg_mode);
-  rtx reg1 = gen_reg_rtx (dreg_mode);
-  rtx addr0 = gen_lowpart (Pmode, gen_highpart (sreg_mode, reg0));
+  rtx reg0 = gen_reg_rtx (TImode);
+  rtx reg1 = gen_reg_rtx (TImode);
+  rtx addr0 = gen_lowpart (Pmode, gen_highpart (DImode, reg0));
   rtx len0 = gen_lowpart (Pmode, reg0);
 
   emit_clobber (reg0);
@@ -4147,57 +3775,28 @@
   operands[4] = gen_lowpart (Pmode, operands[1]);
 })
 
-; Patterns for 31 bit + Esa and 64 bit + Zarch.
-
 (define_insn "*setmem_long"
-  [(clobber (match_operand:<DBL> 0 "register_operand" "=d"))
-   (set (mem:BLK (subreg:P (match_operand:<DBL> 3 "register_operand" "0") 0))
-        (unspec:BLK [(match_operand:P 2 "setmem_operand" "Y")
-		     (subreg:P (match_dup 3) <modesize>)]
-		     UNSPEC_REPLICATE_BYTE))
-   (use (match_operand:<DBL> 1 "register_operand" "d"))
-   (clobber (reg:CC CC_REGNUM))]
-  "TARGET_64BIT || !TARGET_ZARCH"
-  "mvcle\t%0,%1,%Y2\;jo\t.-4"
-  [(set_attr "length" "8")
-   (set_attr "type" "vs")])
-
-(define_insn "*setmem_long_and"
-  [(clobber (match_operand:<DBL> 0 "register_operand" "=d"))
-   (set (mem:BLK (subreg:P (match_operand:<DBL> 3 "register_operand" "0") 0))
-        (unspec:BLK [(zero_extend:P (match_operand:QI 2 "setmem_operand" "Y"))
-		    (subreg:P (match_dup 3) <modesize>)]
-		    UNSPEC_REPLICATE_BYTE))
-   (use (match_operand:<DBL> 1 "register_operand" "d"))
-   (clobber (reg:CC CC_REGNUM))]
-  "(TARGET_64BIT || !TARGET_ZARCH)"
-  "mvcle\t%0,%1,%Y2\;jo\t.-4"
-  [(set_attr "length" "8")
-   (set_attr "type" "vs")])
-
-; Variants for 31 bit + Zarch, necessary because of the odd in-register offsets
-; of the SImode subregs.
-
-(define_insn "*setmem_long_31z"
   [(clobber (match_operand:TI 0 "register_operand" "=d"))
-   (set (mem:BLK (subreg:SI (match_operand:TI 3 "register_operand" "0") 4))
-        (unspec:BLK [(match_operand:SI 2 "setmem_operand" "Y")
-		     (subreg:SI (match_dup 3) 12)] UNSPEC_REPLICATE_BYTE))
+   (set (mem:BLK (subreg:DI (match_operand:TI 3 "register_operand" "0") 0))
+        (unspec:BLK [(match_operand:DI 2 "setmem_operand" "Y")
+		     (subreg:DI (match_dup 3) <modesize>)]
+		     UNSPEC_REPLICATE_BYTE))
    (use (match_operand:TI 1 "register_operand" "d"))
    (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_64BIT && TARGET_ZARCH"
+  ""
   "mvcle\t%0,%1,%Y2\;jo\t.-4"
   [(set_attr "length" "8")
    (set_attr "type" "vs")])
 
-(define_insn "*setmem_long_and_31z"
+(define_insn "*setmem_long_and"
   [(clobber (match_operand:TI 0 "register_operand" "=d"))
-   (set (mem:BLK (subreg:SI (match_operand:TI 3 "register_operand" "0") 4))
-        (unspec:BLK [(zero_extend:SI (match_operand:QI 2 "setmem_operand" "Y"))
-		    (subreg:SI (match_dup 3) 12)] UNSPEC_REPLICATE_BYTE))
+   (set (mem:BLK (subreg:DI (match_operand:TI 3 "register_operand" "0") 0))
+        (unspec:BLK [(zero_extend:DI (match_operand:QI 2 "setmem_operand" "Y"))
+		     (subreg:DI (match_dup 3) <modesize>)]
+		    UNSPEC_REPLICATE_BYTE))
    (use (match_operand:TI 1 "register_operand" "d"))
    (clobber (reg:CC CC_REGNUM))]
-  "(!TARGET_64BIT && TARGET_ZARCH)"
+  ""
   "mvcle\t%0,%1,%Y2\;jo\t.-4"
   [(set_attr "length" "8")
    (set_attr "type" "vs")])
@@ -4241,11 +3840,11 @@
                      (match_operand:BLK 1 "memory_operand" "Q,Q,Q,Q")))
    (use (match_operand 2 "nonmemory_operand" "n,a,a,a"))
    (use (match_operand 3 "immediate_operand" "X,R,X,X"))
-   (clobber (match_scratch:P 4 "=X,X,X,&a"))]
+   (clobber (match_scratch:DI 4 "=X,X,X,&a"))]
   "(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)"
   "#"
   [(set_attr "type" "cs")
-   (set_attr "cpu_facility" "*,*,z10,cpu_zarch")])
+   (set_attr "cpu_facility" "*,*,z10,*")])
 
 (define_split
   [(set (reg:CCU CC_REGNUM)
@@ -4319,12 +3918,10 @@
      (use (match_dup 3))])]
   ""
 {
-  machine_mode sreg_mode = TARGET_ZARCH ? DImode : SImode;
-  machine_mode dreg_mode = TARGET_ZARCH ? TImode : DImode;
-  rtx reg0 = gen_reg_rtx (dreg_mode);
-  rtx reg1 = gen_reg_rtx (dreg_mode);
-  rtx addr0 = gen_lowpart (Pmode, gen_highpart (sreg_mode, reg0));
-  rtx addr1 = gen_lowpart (Pmode, gen_highpart (sreg_mode, reg1));
+  rtx reg0 = gen_reg_rtx (TImode);
+  rtx reg1 = gen_reg_rtx (TImode);
+  rtx addr0 = gen_lowpart (Pmode, gen_highpart (DImode, reg0));
+  rtx addr1 = gen_lowpart (Pmode, gen_highpart (DImode, reg1));
   rtx len0 = gen_lowpart (Pmode, reg0);
   rtx len1 = gen_lowpart (Pmode, reg1);
 
@@ -4343,31 +3940,17 @@
 })
 
 (define_insn "*cmpmem_long"
-  [(clobber (match_operand:<DBL> 0 "register_operand" "=d"))
-   (clobber (match_operand:<DBL> 1 "register_operand" "=d"))
-   (set (reg:CCU CC_REGNUM)
-        (compare:CCU (mem:BLK (subreg:P (match_operand:<DBL> 2 "register_operand" "0") 0))
-                     (mem:BLK (subreg:P (match_operand:<DBL> 3 "register_operand" "1") 0))))
-   (use (match_dup 2))
-   (use (match_dup 3))]
-  "TARGET_64BIT || !TARGET_ZARCH"
-  "clcle\t%0,%1,0\;jo\t.-4"
-  [(set_attr "length" "8")
-   (set_attr "type" "vs")])
-
-(define_insn "*cmpmem_long_31z"
   [(clobber (match_operand:TI 0 "register_operand" "=d"))
    (clobber (match_operand:TI 1 "register_operand" "=d"))
    (set (reg:CCU CC_REGNUM)
-        (compare:CCU (mem:BLK (subreg:SI (match_operand:TI 2 "register_operand" "0") 4))
-                     (mem:BLK (subreg:SI (match_operand:TI 3 "register_operand" "1") 4))))
+        (compare:CCU (mem:BLK (subreg:DI (match_operand:TI 2 "register_operand" "0") 0))
+                     (mem:BLK (subreg:DI (match_operand:TI 3 "register_operand" "1") 0))))
    (use (match_dup 2))
    (use (match_dup 3))]
-  "!TARGET_64BIT && TARGET_ZARCH"
+  ""
   "clcle\t%0,%1,0\;jo\t.-4"
-  [(set_attr "op_type" "NN")
-   (set_attr "type"    "vs")
-   (set_attr "length"  "8")])
+  [(set_attr "length" "8")
+   (set_attr "type" "vs")])
 
 ; Convert CCUmode condition code to integer.
 ; Result is zero if EQ, positive if LTU, negative if GTU.
@@ -4410,7 +3993,7 @@
         (sign_extend:DI (unspec:SI [(match_operand:CCU 1 "register_operand" "0")]
                                    UNSPEC_STRCMPCC_TO_INT)))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "#"
   "&& reload_completed"
   [(set (match_dup 0) (ashift:DI (match_dup 0) (const_int 34)))
@@ -4427,7 +4010,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=d")
         (sign_extend:DI (unspec:SI [(match_dup 1)] UNSPEC_STRCMPCC_TO_INT)))]
-  "s390_match_ccmode (insn, CCSmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCSmode)"
   "#"
   "&& reload_completed"
   [(set (match_dup 0) (ashift:DI (match_dup 0) (const_int 34)))
@@ -4463,24 +4046,11 @@
 	(unspec:DI [(match_operand:BLK 1 "s_operand" "S")
 		    (match_operand 2 "const_int_operand" "n")] UNSPEC_ICM))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "icmh\t%0,%2,%S1"
   [(set_attr "op_type" "RSY")
    (set_attr "z10prop" "z10_super")])
 
-(define_insn "*sethighpartdi_31"
-  [(set (match_operand:DI 0 "register_operand" "=d,d")
-	(unspec:DI [(match_operand:BLK 1 "s_operand" "Q,S")
-		    (match_operand 2 "const_int_operand" "n,n")] UNSPEC_ICM))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH"
-  "@
-   icm\t%0,%2,%S1
-   icmy\t%0,%2,%S1"
-  [(set_attr "op_type" "RS,RSY")
-   (set_attr "cpu_facility" "*,longdisp")
-   (set_attr "z10prop" "z10_super_E1,z10_super_E1")])
-
 ;
 ; extv instruction patterns
 ;
@@ -4513,9 +4083,9 @@
 })
 
 (define_insn "*extzv<mode><clobbercc_or_nocc>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-      (zero_extract:GPR
-        (match_operand:GPR 1 "register_operand" "d")
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+      (zero_extract:DSI
+        (match_operand:DSI 1 "register_operand" "d")
         (match_operand 2 "const_int_operand" "")   ; size
         (match_operand 3 "const_int_operand" ""))) ; start
   ]
@@ -4609,8 +4179,8 @@
    (set_attr "z10prop" "z10_super_E1")])
 
 (define_insn_and_split "*pre_z10_extzv<mode>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(zero_extract:GPR (match_operand:QI 1 "s_operand" "S")
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(zero_extract:DSI (match_operand:QI 1 "s_operand" "S")
 		          (match_operand 2 "nonzero_shift_count_operand" "")
 		          (const_int 0)))
    (clobber (reg:CC CC_REGNUM))]
@@ -4618,9 +4188,9 @@
   "#"
   "&& reload_completed"
   [(parallel
-    [(set (match_dup 0) (unspec:GPR [(match_dup 1) (match_dup 3)] UNSPEC_ICM))
+    [(set (match_dup 0) (unspec:DSI [(match_dup 1) (match_dup 3)] UNSPEC_ICM))
      (clobber (reg:CC CC_REGNUM))])
-   (set (match_dup 0) (lshiftrt:GPR (match_dup 0) (match_dup 2)))]
+   (set (match_dup 0) (lshiftrt:DSI (match_dup 0) (match_dup 2)))]
 {
   int bitsize = INTVAL (operands[2]);
   int size = (bitsize - 1) / BITS_PER_UNIT + 1; /* round up */
@@ -4629,13 +4199,13 @@
 
   operands[1] = adjust_address (operands[1], BLKmode, 0);
   set_mem_size (operands[1], size);
-  operands[2] = GEN_INT (<GPR:bitsize> - bitsize);
+  operands[2] = GEN_INT (<DSI:bitsize> - bitsize);
   operands[3] = GEN_INT (mask);
 })
 
 (define_insn_and_split "*pre_z10_extv<mode>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(sign_extract:GPR (match_operand:QI 1 "s_operand" "S")
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(sign_extract:DSI (match_operand:QI 1 "s_operand" "S")
 		          (match_operand 2 "nonzero_shift_count_operand" "")
 		          (const_int 0)))
    (clobber (reg:CC CC_REGNUM))]
@@ -4643,10 +4213,10 @@
   "#"
   "&& reload_completed"
   [(parallel
-    [(set (match_dup 0) (unspec:GPR [(match_dup 1) (match_dup 3)] UNSPEC_ICM))
+    [(set (match_dup 0) (unspec:DSI [(match_dup 1) (match_dup 3)] UNSPEC_ICM))
      (clobber (reg:CC CC_REGNUM))])
    (parallel
-    [(set (match_dup 0) (ashiftrt:GPR (match_dup 0) (match_dup 2)))
+    [(set (match_dup 0) (ashiftrt:DSI (match_dup 0) (match_dup 2)))
      (clobber (reg:CC CC_REGNUM))])]
 {
   int bitsize = INTVAL (operands[2]);
@@ -4656,7 +4226,7 @@
 
   operands[1] = adjust_address (operands[1], BLKmode, 0);
   set_mem_size (operands[1], size);
-  operands[2] = GEN_INT (<GPR:bitsize> - bitsize);
+  operands[2] = GEN_INT (<DSI:bitsize> - bitsize);
   operands[3] = GEN_INT (mask);
 })
 
@@ -4681,10 +4251,10 @@
 ; the location operand isn't word mode.  However, we do this in the
 ; back-end when generating atomic operations. See s390_two_part_insv.
 (define_insn "*insv<mode><clobbercc_or_nocc>"
-  [(set (zero_extract:GPR (match_operand:GPR 0 "nonimmediate_operand" "+d")
+  [(set (zero_extract:DSI (match_operand:DSI 0 "nonimmediate_operand" "+d")
 			  (match_operand 1 "const_int_operand"    "I")  ; size
 			  (match_operand 2 "const_int_operand"    "I")) ; pos
-	(match_operand:GPR 3 "nonimmediate_operand" "d"))]
+	(match_operand:DSI 3 "nonimmediate_operand" "d"))]
   "<z10_or_zEC12_cond>
    && EXTRACT_ARGS_IN_RANGE (INTVAL (operands[1]), INTVAL (operands[2]),
 			     GET_MODE_BITSIZE (<MODE>mode))
@@ -4696,11 +4266,11 @@
 ; and op1 with a mask being 1 for the selected bits and 0 for the rest
 ; and op3=op0 with a mask being 0 for the selected bits and 1 for the rest
 (define_insn "*insv<mode><clobbercc_or_nocc>_noshift"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d,d")
-	(ior:GPR (and:GPR (match_operand:GPR 1 "nonimmediate_operand" "d,0")
-			  (match_operand:GPR 2 "contiguous_bitmask_operand" ""))
-		 (and:GPR (match_operand:GPR 3 "nonimmediate_operand" "0,d")
-			  (match_operand:GPR 4 "const_int_operand" ""))))]
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d,d")
+	(ior:DSI (and:DSI (match_operand:DSI 1 "nonimmediate_operand" "d,0")
+			  (match_operand:DSI 2 "contiguous_bitmask_operand" ""))
+		 (and:DSI (match_operand:DSI 3 "nonimmediate_operand" "0,d")
+			  (match_operand:DSI 4 "const_int_operand" ""))))]
   "<z10_or_zEC12_cond> && INTVAL (operands[2]) == ~INTVAL (operands[4])"
   "@
    <risbg_n>\t%0,%1,%<bfstart>2,%<bfend>2,0
@@ -4750,11 +4320,11 @@
 ; Implement appending Y on the left of S bits of X
 ; x = (y << s) | (x & ((1 << s) - 1))
 (define_insn "*insv<mode><clobbercc_or_nocc>_appendbitsleft"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d")
-	(ior:GPR (and:GPR (match_operand:GPR 1 "nonimmediate_operand" "0")
-			  (match_operand:GPR 2 "immediate_operand" ""))
-		 (ashift:GPR (match_operand:GPR 3 "nonimmediate_operand" "d")
-			     (match_operand:GPR 4 "nonzero_shift_count_operand" ""))))]
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d")
+	(ior:DSI (and:DSI (match_operand:DSI 1 "nonimmediate_operand" "0")
+			  (match_operand:DSI 2 "immediate_operand" ""))
+		 (ashift:DSI (match_operand:DSI 3 "nonimmediate_operand" "d")
+			     (match_operand:DSI 4 "nonzero_shift_count_operand" ""))))]
   "<z10_or_zEC12_cond>
    && UINTVAL (operands[2]) == (HOST_WIDE_INT_1U << UINTVAL (operands[4])) - 1"
   "<risbg_n>\t%0,%3,<bitoff>,64-%4-1,%4"
@@ -4763,13 +4333,13 @@
 
 ; a = ((i32)a & -16777216) | (((ui32)b) >> 8)
 (define_insn "*<risbg_n>_<mode>_ior_and_lshiftrt"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(ior:GPR (and:GPR
-		  (match_operand:GPR 1 "register_operand" "0")
-		  (match_operand:GPR 2 "const_int_operand" ""))
-		 (lshiftrt:GPR
-		  (match_operand:GPR 3 "register_operand" "d")
-		  (match_operand:GPR 4 "nonzero_shift_count_operand" ""))))]
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(ior:DSI (and:DSI
+		  (match_operand:DSI 1 "register_operand" "0")
+		  (match_operand:DSI 2 "const_int_operand" ""))
+		 (lshiftrt:DSI
+		  (match_operand:DSI 3 "register_operand" "d")
+		  (match_operand:DSI 4 "nonzero_shift_count_operand" ""))))]
   "<z10_or_zEC12_cond> && UINTVAL (operands[2])
    == (HOST_WIDE_INT_M1U
        << (GET_MODE_BITSIZE (<MODE>mode) - UINTVAL (operands[4])))"
@@ -4825,17 +4395,17 @@
 ;  -> z = y >> d; z = risbg;
 
 (define_split
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "")
-	(ior:GPR (lshiftrt:GPR (match_operand:GPR 1 "nonimmediate_operand" "")
-			       (match_operand:GPR 2 "nonzero_shift_count_operand" ""))
-		 (ashift:GPR (match_operand:GPR 3 "nonimmediate_operand" "")
-			     (match_operand:GPR 4 "nonzero_shift_count_operand" ""))))]
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "")
+	(ior:DSI (lshiftrt:DSI (match_operand:DSI 1 "nonimmediate_operand" "")
+			       (match_operand:DSI 2 "nonzero_shift_count_operand" ""))
+		 (ashift:DSI (match_operand:DSI 3 "nonimmediate_operand" "")
+			     (match_operand:DSI 4 "nonzero_shift_count_operand" ""))))]
   "TARGET_ZEC12 && UINTVAL (operands[2]) + UINTVAL (operands[4]) >= <bitsize>"
   [(set (match_dup 6)
-	(lshiftrt:GPR (match_dup 1) (match_dup 2)))
+	(lshiftrt:DSI (match_dup 1) (match_dup 2)))
    (set (match_dup 0)
-	(ior:GPR (and:GPR (match_dup 6) (match_dup 5))
-		 (ashift:GPR (match_dup 3) (match_dup 4))))]
+	(ior:DSI (and:DSI (match_dup 6) (match_dup 5))
+		 (ashift:DSI (match_dup 3) (match_dup 4))))]
 {
   operands[5] = GEN_INT ((HOST_WIDE_INT_1U << UINTVAL (operands[4])) - 1);
   if (reg_overlap_mentioned_p (operands[0], operands[3]))
@@ -4850,19 +4420,19 @@
 
 (define_split
   [(parallel
-    [(set (match_operand:GPR 0 "nonimmediate_operand" "")
-	  (ior:GPR (lshiftrt:GPR (match_operand:GPR 1 "nonimmediate_operand" "")
-				 (match_operand:GPR 2 "nonzero_shift_count_operand" ""))
-		   (ashift:GPR (match_operand:GPR 3 "nonimmediate_operand" "")
-			       (match_operand:GPR 4 "nonzero_shift_count_operand" ""))))
+    [(set (match_operand:DSI 0 "nonimmediate_operand" "")
+	  (ior:DSI (lshiftrt:DSI (match_operand:DSI 1 "nonimmediate_operand" "")
+				 (match_operand:DSI 2 "nonzero_shift_count_operand" ""))
+		   (ashift:DSI (match_operand:DSI 3 "nonimmediate_operand" "")
+			       (match_operand:DSI 4 "nonzero_shift_count_operand" ""))))
      (clobber (reg:CC CC_REGNUM))])]
   "TARGET_Z10 && !TARGET_ZEC12 && UINTVAL (operands[2]) + UINTVAL (operands[4]) >= <bitsize>"
   [(set (match_dup 6)
-	(lshiftrt:GPR (match_dup 1) (match_dup 2)))
+	(lshiftrt:DSI (match_dup 1) (match_dup 2)))
    (parallel
     [(set (match_dup 0)
-	  (ior:GPR (and:GPR (match_dup 6) (match_dup 5))
-		   (ashift:GPR (match_dup 3) (match_dup 4))))
+	  (ior:DSI (and:DSI (match_dup 6) (match_dup 5))
+		   (ashift:DSI (match_dup 3) (match_dup 4))))
      (clobber (reg:CC CC_REGNUM))])]
 {
   operands[5] = GEN_INT ((HOST_WIDE_INT_1U << UINTVAL (operands[4])) - 1);
@@ -4878,11 +4448,11 @@
 
 ; rosbg, rxsbg
 (define_insn "*r<noxa>sbg_<mode>_noshift"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d")
-	(IXOR:GPR
-	  (and:GPR (match_operand:GPR 1 "nonimmediate_operand" "d")
-                   (match_operand:GPR 2 "contiguous_bitmask_operand" ""))
-	  (match_operand:GPR 3 "nonimmediate_operand" "0")))
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d")
+	(IXOR:DSI
+	  (and:DSI (match_operand:DSI 1 "nonimmediate_operand" "d")
+                   (match_operand:DSI 2 "contiguous_bitmask_operand" ""))
+	  (match_operand:DSI 3 "nonimmediate_operand" "0")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z10"
   "r<noxa>sbg\t%0,%1,%<bfstart>2,%<bfend>2,0"
@@ -4905,14 +4475,14 @@
 
 ; rosbg, rxsbg
 (define_insn "*r<noxa>sbg_<mode>_srl_bitmask"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d")
-	(IXOR:GPR
-	  (and:GPR
-	    (lshiftrt:GPR
-              (match_operand:GPR 1 "nonimmediate_operand" "d")
-              (match_operand:GPR 3 "nonzero_shift_count_operand" ""))
-            (match_operand:GPR 2 "contiguous_bitmask_nowrap_operand" ""))
-	  (match_operand:GPR 4 "nonimmediate_operand" "0")))
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d")
+	(IXOR:DSI
+	  (and:DSI
+	    (lshiftrt:DSI
+              (match_operand:DSI 1 "nonimmediate_operand" "d")
+              (match_operand:DSI 3 "nonzero_shift_count_operand" ""))
+            (match_operand:DSI 2 "contiguous_bitmask_nowrap_operand" ""))
+	  (match_operand:DSI 4 "nonimmediate_operand" "0")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z10
    && s390_extzv_shift_ok (<bitsize>, 64 - INTVAL (operands[3]),
@@ -4925,14 +4495,14 @@
 
 ; rosbg, rxsbg
 (define_insn "*r<noxa>sbg_<mode>_sll_bitmask"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d")
-	(IXOR:GPR
-	  (and:GPR
-	    (ashift:GPR
-              (match_operand:GPR 1 "nonimmediate_operand" "d")
-              (match_operand:GPR 3 "nonzero_shift_count_operand" ""))
-            (match_operand:GPR 2 "contiguous_bitmask_nowrap_operand" ""))
-	  (match_operand:GPR 4 "nonimmediate_operand" "0")))
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d")
+	(IXOR:DSI
+	  (and:DSI
+	    (ashift:DSI
+              (match_operand:DSI 1 "nonimmediate_operand" "d")
+              (match_operand:DSI 3 "nonzero_shift_count_operand" ""))
+            (match_operand:DSI 2 "contiguous_bitmask_nowrap_operand" ""))
+	  (match_operand:DSI 4 "nonimmediate_operand" "0")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z10
    && s390_extzv_shift_ok (<bitsize>, INTVAL (operands[3]),
@@ -4945,12 +4515,12 @@
 ;; a = a ^ (b << const_int)
 ; rosbg, rxsbg
 (define_insn "*r<noxa>sbg_<mode>_sll"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d")
-	(IXOR:GPR
-	  (ashift:GPR
-            (match_operand:GPR 1 "nonimmediate_operand" "d")
-            (match_operand:GPR 2 "nonzero_shift_count_operand" ""))
-	  (match_operand:GPR 3 "nonimmediate_operand" "0")))
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d")
+	(IXOR:DSI
+	  (ashift:DSI
+            (match_operand:DSI 1 "nonimmediate_operand" "d")
+            (match_operand:DSI 2 "nonzero_shift_count_operand" ""))
+	  (match_operand:DSI 3 "nonimmediate_operand" "0")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z10"
   {
@@ -4964,12 +4534,12 @@
 ;; a = a ^ (b >> const_int)
 ; rosbg, rxsbg
 (define_insn "*r<noxa>sbg_<mode>_srl"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d")
-	(IXOR:GPR
-	  (lshiftrt:GPR
-            (match_operand:GPR 1 "nonimmediate_operand" "d")
-            (match_operand:GPR 2 "nonzero_shift_count_operand" ""))
-	  (match_operand:GPR 3 "nonimmediate_operand" "0")))
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d")
+	(IXOR:DSI
+	  (lshiftrt:DSI
+            (match_operand:DSI 1 "nonimmediate_operand" "d")
+            (match_operand:DSI 2 "nonzero_shift_count_operand" ""))
+	  (match_operand:DSI 3 "nonimmediate_operand" "0")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z10"
   {
@@ -5055,11 +4625,11 @@
   "rnsbg\t%0,%4,%2,%2+%1-1,%3"
   [(set_attr "op_type" "RIE")])
 
-(define_insn "*insv<mode>_mem_reg"
-  [(set (zero_extract:W (match_operand:QI 0 "memory_operand" "+Q,S")
-			(match_operand 1 "const_int_operand" "n,n")
-			(const_int 0))
-	(match_operand:W 2 "register_operand" "d,d"))]
+(define_insn "*insvdi_mem_reg"
+  [(set (zero_extract:DI (match_operand:QI 0 "memory_operand" "+Q,S")
+			 (match_operand 1 "const_int_operand" "n,n")
+			 (const_int 0))
+	(match_operand:DI 2 "register_operand" "d,d"))]
   "EXTRACT_ARGS_IN_RANGE (INTVAL (operands[1]), 0, 64)
    && INTVAL (operands[1]) > 0
    && INTVAL (operands[1]) <= GET_MODE_BITSIZE (SImode)
@@ -5081,8 +4651,7 @@
 			 (const_int 0))
 	(lshiftrt:DI (match_operand:DI 2 "register_operand" "d")
 		     (const_int 32)))]
-  "TARGET_ZARCH
-   && EXTRACT_ARGS_IN_RANGE (INTVAL (operands[1]), 0, 64)
+  "EXTRACT_ARGS_IN_RANGE (INTVAL (operands[1]), 0, 64)
    && INTVAL (operands[1]) > 0
    && INTVAL (operands[1]) <= GET_MODE_BITSIZE (SImode)
    && INTVAL (operands[1]) % BITS_PER_UNIT == 0"
@@ -5100,8 +4669,7 @@
 			 (const_int 16)
 			 (match_operand 1 "const_int_operand" "n"))
 	(match_operand:DI 2 "const_int_operand" "n"))]
-  "TARGET_ZARCH
-   && EXTRACT_ARGS_IN_RANGE (16, INTVAL (operands[1]), 64)
+  "EXTRACT_ARGS_IN_RANGE (16, INTVAL (operands[1]), 64)
    && INTVAL (operands[1]) >= 0
    && INTVAL (operands[1]) < BITS_PER_WORD
    && INTVAL (operands[1]) % 16 == 0"
@@ -5149,7 +4717,7 @@
 	(unspec:DI [(match_operand:DI 1 "register_operand" "d")
 		    (match_operand:DI 2 "register_operand" "d")]
 		   UNSPEC_BDEPG))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
   "bdepg\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
@@ -5162,7 +4730,7 @@
 	(unspec:DI [(match_operand:DI 1 "register_operand" "d")
 		    (match_operand:DI 2 "register_operand" "d")]
 		   UNSPEC_BEXTG))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
   "bextg\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
@@ -5171,25 +4739,10 @@
 ; extendsidi2 instruction pattern(s).
 ;
 
-(define_expand "extendsidi2"
-  [(set (match_operand:DI 0 "register_operand" "")
-        (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "")))]
-  ""
-{
-  if (!TARGET_ZARCH)
-    {
-      emit_clobber (operands[0]);
-      emit_move_insn (gen_highpart (SImode, operands[0]), operands[1]);
-      emit_move_insn (gen_lowpart (SImode, operands[0]), const0_rtx);
-      emit_insn (gen_ashrdi3 (operands[0], operands[0], GEN_INT (32)));
-      DONE;
-    }
-})
-
-(define_insn "*extendsidi2"
+(define_insn "extendsidi2"
   [(set (match_operand:DI 0 "register_operand" "=d,d,d")
         (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,T,b")))]
-  "TARGET_ZARCH"
+  ""
   "@
    lgfr\t%0,%1
    lgf\t%0,%1
@@ -5209,14 +4762,7 @@
         (sign_extend:DSI (match_operand:HQI 1 "nonimmediate_operand" "")))]
   ""
 {
-  if (<DSI:MODE>mode == DImode && !TARGET_ZARCH)
-    {
-      rtx tmp = gen_reg_rtx (SImode);
-      emit_insn (gen_extend<HQI:mode>si2 (tmp, operands[1]));
-      emit_insn (gen_extendsidi2 (operands[0], tmp));
-      DONE;
-    }
-  else if (!TARGET_EXTIMM)
+  if (!TARGET_EXTIMM)
     {
       rtx bitcount = GEN_INT (<DSI:bitsize> - <HQI:bitsize>);
 
@@ -5234,7 +4780,7 @@
 (define_insn "*extendhidi2_extimm"
   [(set (match_operand:DI 0 "register_operand" "=d,d,d")
         (sign_extend:DI (match_operand:HI 1 "general_operand" "d,T,b")))]
-  "TARGET_ZARCH && TARGET_EXTIMM"
+  "TARGET_EXTIMM"
   "@
    lghr\t%0,%1
    lgh\t%0,%1
@@ -5248,7 +4794,7 @@
 (define_insn "*extendhidi2"
   [(set (match_operand:DI 0 "register_operand" "=d")
         (sign_extend:DI (match_operand:HI 1 "memory_operand" "T")))]
-  "TARGET_ZARCH"
+  ""
   "lgh\t%0,%1"
   [(set_attr "op_type" "RXY")
    (set_attr "z10prop" "z10_super_E1")])
@@ -5289,8 +4835,8 @@
 
 ; lbr, lgbr, lb, lgb
 (define_insn "*extendqi<mode>2_extimm"
-  [(set (match_operand:GPR 0 "register_operand" "=d,d")
-        (sign_extend:GPR (match_operand:QI 1 "nonimmediate_operand" "d,T")))]
+  [(set (match_operand:DSI 0 "register_operand" "=d,d")
+        (sign_extend:DSI (match_operand:QI 1 "nonimmediate_operand" "d,T")))]
   "TARGET_EXTIMM"
   "@
    l<g>br\t%0,%1
@@ -5300,54 +4846,40 @@
 
 ; lb, lgb
 (define_insn "*extendqi<mode>2"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-        (sign_extend:GPR (match_operand:QI 1 "memory_operand" "T")))]
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+        (sign_extend:DSI (match_operand:QI 1 "memory_operand" "T")))]
   "!TARGET_EXTIMM && TARGET_LONG_DISPLACEMENT"
   "l<g>b\t%0,%1"
   [(set_attr "op_type" "RXY")
    (set_attr "z10prop" "z10_super_E1")])
 
 (define_insn_and_split "*extendqi<mode>2_short_displ"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-        (sign_extend:GPR (match_operand:QI 1 "s_operand" "Q")))
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+        (sign_extend:DSI (match_operand:QI 1 "s_operand" "Q")))
    (clobber (reg:CC CC_REGNUM))]
   "!TARGET_EXTIMM && !TARGET_LONG_DISPLACEMENT"
   "#"
   "&& reload_completed"
   [(parallel
-    [(set (match_dup 0) (unspec:GPR [(match_dup 1) (const_int 8)] UNSPEC_ICM))
+    [(set (match_dup 0) (unspec:DSI [(match_dup 1) (const_int 8)] UNSPEC_ICM))
      (clobber (reg:CC CC_REGNUM))])
    (parallel
-    [(set (match_dup 0) (ashiftrt:GPR (match_dup 0) (match_dup 2)))
+    [(set (match_dup 0) (ashiftrt:DSI (match_dup 0) (match_dup 2)))
      (clobber (reg:CC CC_REGNUM))])]
 {
   operands[1] = adjust_address (operands[1], BLKmode, 0);
   set_mem_size (operands[1], GET_MODE_SIZE (QImode));
-  operands[2] = GEN_INT (<GPR:bitsize> - BITS_PER_UNIT);
+  operands[2] = GEN_INT (<DSI:bitsize> - BITS_PER_UNIT);
 })
 
 ;
 ; zero_extendsidi2 instruction pattern(s).
 ;
 
-(define_expand "zero_extendsidi2"
-  [(set (match_operand:DI 0 "register_operand" "")
-        (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "")))]
-  ""
-{
-  if (!TARGET_ZARCH)
-    {
-      emit_clobber (operands[0]);
-      emit_move_insn (gen_lowpart (SImode, operands[0]), operands[1]);
-      emit_move_insn (gen_highpart (SImode, operands[0]), const0_rtx);
-      DONE;
-    }
-})
-
-(define_insn "*zero_extendsidi2"
+(define_insn "zero_extendsidi2"
   [(set (match_operand:DI 0 "register_operand" "=d,d,d,d")
         (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,T,b,v")))]
-  "TARGET_ZARCH"
+  ""
   "@
    llgfr\t%0,%1
    llgf\t%0,%1
@@ -5367,7 +4899,7 @@
   [(set (match_operand:DI 0 "register_operand" "=d")
         (and:DI (subreg:DI (match_operand:SI 1 "memory_operand" "T") 0)
 		(const_int 2147483647)))]
-  "TARGET_ZARCH"
+  ""
   "llgt\t%0,%1"
   [(set_attr "op_type"  "RXE")
    (set_attr "z10prop" "z10_super_E1")])
@@ -5377,7 +4909,7 @@
         (and:DI (subreg:DI (match_operand:SI 1 "memory_operand" "T") 0)
 		(const_int 2147483647)))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "#"
   "&& reload_completed"
   [(set (match_dup 0)
@@ -5389,7 +4921,7 @@
   [(set (match_operand:SI 0 "register_operand" "=d,d")
         (and:SI (match_operand:SI 1 "nonimmediate_operand" "d,T")
 		(const_int 2147483647)))]
-  "TARGET_ZARCH"
+  ""
   "@
    llgtr\t%0,%1
    llgt\t%0,%1"
@@ -5400,7 +4932,7 @@
   [(set (match_operand:DI 0 "register_operand" "=d,d")
         (and:DI (match_operand:DI 1 "nonimmediate_operand" "d,o")
                 (const_int 2147483647)))]
-  "TARGET_ZARCH"
+  ""
   "@
    llgtr\t%0,%1
    llgt\t%0,%N1"
@@ -5412,7 +4944,7 @@
         (and:DSI (match_operand:DSI 1 "nonimmediate_operand" "")
                  (const_int 2147483647)))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && reload_completed"
+  "reload_completed"
   [(set (match_dup 0)
         (and:DSI (match_dup 1)
                  (const_int 2147483647)))]
@@ -5427,14 +4959,7 @@
         (zero_extend:DI (match_operand:HQI 1 "nonimmediate_operand" "")))]
   ""
 {
-  if (!TARGET_ZARCH)
-    {
-      rtx tmp = gen_reg_rtx (SImode);
-      emit_insn (gen_zero_extend<mode>si2 (tmp, operands[1]));
-      emit_insn (gen_zero_extendsidi2 (operands[0], tmp));
-      DONE;
-    }
-  else if (!TARGET_EXTIMM)
+  if (!TARGET_EXTIMM)
     {
       rtx bitcount = GEN_INT (64 - <HQI:bitsize>);
       operands[1] = gen_lowpart (DImode, operands[1]);
@@ -5460,8 +4985,8 @@
 
 ; llhrl, llghrl
 (define_insn "*zero_extendhi<mode>2_z10"
-  [(set (match_operand:GPR 0 "register_operand" "=d,d,d,d")
-        (zero_extend:GPR (match_operand:HI 1 "nonimmediate_operand" "d,T,b,v")))]
+  [(set (match_operand:DSI 0 "register_operand" "=d,d,d,d")
+        (zero_extend:DSI (match_operand:HI 1 "nonimmediate_operand" "d,T,b,v")))]
   "TARGET_Z10"
   "@
    ll<g>hr\t%0,%1
@@ -5475,9 +5000,9 @@
    (set_attr "relative_long" "*,*,yes,*")])
 
 ; llhr, llcr, llghr, llgcr, llh, llc, llgh, llgc
-(define_insn "*zero_extend<HQI:mode><GPR:mode>2_extimm"
-  [(set (match_operand:GPR 0 "register_operand" "=d,d,d")
-        (zero_extend:GPR (match_operand:HQI 1 "nonimmediate_operand" "d,T,v")))]
+(define_insn "*zero_extend<HQI:mode><DSI:mode>2_extimm"
+  [(set (match_operand:DSI 0 "register_operand" "=d,d,d")
+        (zero_extend:DSI (match_operand:HQI 1 "nonimmediate_operand" "d,T,v")))]
   "TARGET_EXTIMM"
   "@
    ll<g><hc>r\t%0,%1
@@ -5488,37 +5013,14 @@
    (set_attr "z10prop" "z10_super_E1,z10_fwd_A3,*")])
 
 ; llgh, llgc
-(define_insn "*zero_extend<HQI:mode><GPR:mode>2"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-        (zero_extend:GPR (match_operand:HQI 1 "memory_operand" "T")))]
-  "TARGET_ZARCH && !TARGET_EXTIMM"
+(define_insn "*zero_extend<HQI:mode><DSI:mode>2"
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+        (zero_extend:DSI (match_operand:HQI 1 "memory_operand" "T")))]
+  "!TARGET_EXTIMM"
   "llg<hc>\t%0,%1"
   [(set_attr "op_type" "RXY")
    (set_attr "z10prop" "z10_fwd_A3")])
 
-(define_insn_and_split "*zero_extendhisi2_31"
-  [(set (match_operand:SI 0 "register_operand" "=&d")
-        (zero_extend:SI (match_operand:HI 1 "s_operand" "S")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH"
-  "#"
-  "&& reload_completed"
-  [(set (match_dup 0) (const_int 0))
-   (parallel
-    [(set (strict_low_part (match_dup 2)) (match_dup 1))
-     (clobber (reg:CC CC_REGNUM))])]
-  "operands[2] = gen_lowpart (HImode, operands[0]);")
-
-(define_insn_and_split "*zero_extendqisi2_31"
-  [(set (match_operand:SI 0 "register_operand" "=&d")
-        (zero_extend:SI (match_operand:QI 1 "memory_operand" "T")))]
-  "!TARGET_ZARCH"
-  "#"
-  "&& reload_completed"
-  [(set (match_dup 0) (const_int 0))
-   (set (strict_low_part (match_dup 2)) (match_dup 1))]
-  "operands[2] = gen_lowpart (QImode, operands[0]);")
-
 ;
 ; zero_extendqihi2 instruction pattern(s).
 ;
@@ -5526,7 +5028,7 @@
 (define_expand "zero_extendqihi2"
   [(set (match_operand:HI 0 "register_operand" "")
         (zero_extend:HI (match_operand:QI 1 "register_operand" "")))]
-  "TARGET_ZARCH && !TARGET_EXTIMM"
+  "!TARGET_EXTIMM"
 {
   operands[1] = gen_lowpart (HImode, operands[1]);
   emit_insn (gen_andhi3 (operands[0], operands[1], GEN_INT (0xff)));
@@ -5536,21 +5038,11 @@
 (define_insn "*zero_extendqihi2_64"
   [(set (match_operand:HI 0 "register_operand" "=d")
         (zero_extend:HI (match_operand:QI 1 "memory_operand" "T")))]
-  "TARGET_ZARCH && !TARGET_EXTIMM"
+  "!TARGET_EXTIMM"
   "llgc\t%0,%1"
   [(set_attr "op_type" "RXY")
    (set_attr "z10prop" "z10_fwd_A3")])
 
-(define_insn_and_split "*zero_extendqihi2_31"
-  [(set (match_operand:HI 0 "register_operand" "=&d")
-        (zero_extend:HI (match_operand:QI 1 "memory_operand" "T")))]
-  "!TARGET_ZARCH"
-  "#"
-  "&& reload_completed"
-  [(set (match_dup 0) (const_int 0))
-   (set (strict_low_part (match_dup 2)) (match_dup 1))]
-  "operands[2] = gen_lowpart (QImode, operands[0]);")
-
 ;
 ; fixuns_trunc(dd|td|sf|df|tf)(si|di)2 expander
 ;
@@ -5558,11 +5050,11 @@
 ; This is the only entry point for fixuns_trunc.  It multiplexes the
 ; expansion to either the *_emu expanders below for pre z196 machines
 ; or emits the default pattern otherwise.
-(define_expand "fixuns_trunc<FP:mode><GPR:mode>2<FP:tf_fpr>"
+(define_expand "fixuns_trunc<FP:mode><DSI:mode>2<FP:tf_fpr>"
   [(parallel
-    [(set (match_operand:GPR 0 "register_operand" "")
-	  (unsigned_fix:GPR (match_operand:FP 1 "register_operand" "")))
-     (unspec:GPR [(match_dup 2)] UNSPEC_ROUND)
+    [(set (match_operand:DSI 0 "register_operand" "")
+	  (unsigned_fix:DSI (match_operand:FP 1 "register_operand" "")))
+     (unspec:DSI [(match_dup 2)] UNSPEC_ROUND)
      (clobber (reg:CC CC_REGNUM))])]
   "TARGET_HARD_FLOAT"
 {
@@ -5570,9 +5062,9 @@
     {
       /* We don't provide emulation for TD|DD->SI.  */
       if (GET_MODE_CLASS (<FP:MODE>mode) == MODE_DECIMAL_FLOAT
-	  && <GPR:MODE>mode == SImode)
+	  && <DSI:MODE>mode == SImode)
 	FAIL;
-      emit_insn (gen_fixuns_trunc<FP:mode><GPR:mode>2_emu (operands[0],
+      emit_insn (gen_fixuns_trunc<FP:mode><DSI:mode>2_emu (operands[0],
 							       operands[1]));
       DONE;
     }
@@ -5587,11 +5079,11 @@
 
 ; Emulate the unsigned conversion with the signed version for pre z196
 ; machines.
-(define_expand "fixuns_trunc<BFP:mode><GPR:mode>2_emu"
+(define_expand "fixuns_trunc<BFP:mode><DSI:mode>2_emu"
   [(parallel
-    [(set (match_operand:GPR 0 "register_operand" "")
-	  (unsigned_fix:GPR (match_operand:BFP 1 "register_operand" "")))
-     (unspec:GPR [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
+    [(set (match_operand:DSI 0 "register_operand" "")
+	  (unsigned_fix:DSI (match_operand:BFP 1 "register_operand" "")))
+     (unspec:DSI [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
      (clobber (reg:CC CC_REGNUM))])]
   "!TARGET_Z196 && TARGET_HARD_FLOAT"
 {
@@ -5601,20 +5093,20 @@
   REAL_VALUE_TYPE cmp, sub;
 
   operands[1] = force_reg (<BFP:MODE>mode, operands[1]);
-  real_2expN (&cmp, <GPR:bitsize> - 1, <BFP:MODE>mode);
-  real_2expN (&sub, <GPR:bitsize>, <BFP:MODE>mode);
+  real_2expN (&cmp, <DSI:bitsize> - 1, <BFP:MODE>mode);
+  real_2expN (&sub, <DSI:bitsize>, <BFP:MODE>mode);
 
   emit_cmp_and_jump_insns (operands[1],
 			   const_double_from_real_value (cmp, <BFP:MODE>mode),
 			   LT, NULL_RTX, VOIDmode, 0, label1);
   emit_insn (gen_sub<BFP:mode>3 (temp, operands[1],
 	       const_double_from_real_value (sub, <BFP:MODE>mode)));
-  emit_insn (gen_fix_trunc<BFP:mode><GPR:mode>2_bfp (operands[0], temp,
+  emit_insn (gen_fix_trunc<BFP:mode><DSI:mode>2_bfp (operands[0], temp,
 	       GEN_INT (BFP_RND_TOWARD_MINF)));
   emit_jump (label2);
 
   emit_label (label1);
-  emit_insn (gen_fix_trunc<BFP:mode><GPR:mode>2_bfp (operands[0],
+  emit_insn (gen_fix_trunc<BFP:mode><DSI:mode>2_bfp (operands[0],
 							 operands[1],
 							 GEN_INT (BFP_RND_TOWARD_0)));
   emit_label (label2);
@@ -5734,23 +5226,23 @@
 ; (dd|td|sf|df|tf)->unsigned (di|si)
 ; clfebr, clfdbr, clfxbr, clgebr, clgdbr, clgxbr
 ;         clfdtr, clfxtr,         clgdtr, clgxtr
-(define_insn "*fixuns_trunc<FP:mode><GPR:mode>2_z196"
-  [(set (match_operand:GPR                  0 "register_operand" "=d")
-	(unsigned_fix:GPR (match_operand:FP 1 "register_operand"  "f")))
-   (unspec:GPR [(match_operand:GPR          2 "immediate_operand" "K")] UNSPEC_ROUND)
+(define_insn "*fixuns_trunc<FP:mode><DSI:mode>2_z196"
+  [(set (match_operand:DSI                  0 "register_operand" "=d")
+	(unsigned_fix:DSI (match_operand:FP 1 "register_operand"  "f")))
+   (unspec:DSI [(match_operand:DSI          2 "immediate_operand" "K")] UNSPEC_ROUND)
    (clobber (reg:CC CC_REGNUM))]
    "TARGET_Z196 && TARGET_HARD_FLOAT
-    && (!TARGET_VX || <GPR:MODE>mode != DImode || <FP:MODE>mode != DFmode)"
-   "cl<GPR:gf><FP:xde><FP:bt>r\t%0,%h2,%1,0"
+    && (!TARGET_VX || <DSI:MODE>mode != DImode || <FP:MODE>mode != DFmode)"
+   "cl<DSI:gf><FP:xde><FP:bt>r\t%0,%h2,%1,0"
    [(set_attr "op_type" "RRF")
     (set_attr "type"    "ftoi")])
 
-(define_expand "fix_trunc<DSF:mode><GPR:mode>2"
-  [(set (match_operand:GPR 0 "register_operand" "")
-        (fix:GPR (match_operand:DSF 1 "register_operand" "")))]
+(define_expand "fix_trunc<DSF:mode><DSI:mode>2"
+  [(set (match_operand:DSI 0 "register_operand" "")
+        (fix:DSI (match_operand:DSF 1 "register_operand" "")))]
   "TARGET_HARD_FLOAT"
 {
-  emit_insn (gen_fix_trunc<DSF:mode><GPR:mode>2_bfp (operands[0], operands[1],
+  emit_insn (gen_fix_trunc<DSF:mode><DSI:mode>2_bfp (operands[0], operands[1],
              GEN_INT (BFP_RND_TOWARD_0)));
   DONE;
 })
@@ -5770,22 +5262,22 @@
    (set_attr "type"    "ftoi")])
 
 ; cgxbr, cgdbr, cgebr, cfxbr, cfdbr, cfebr
-(define_insn "*fix_trunc<BFP:mode><GPR:mode>2_bfp"
-  [(set (match_operand:GPR          0 "register_operand" "=d")
-        (fix:GPR (match_operand:BFP 1 "register_operand"  "f")))
-   (unspec:GPR [(match_operand:GPR  2 "immediate_operand" "K")] UNSPEC_ROUND)
+(define_insn "*fix_trunc<BFP:mode><DSI:mode>2_bfp"
+  [(set (match_operand:DSI          0 "register_operand" "=d")
+        (fix:DSI (match_operand:BFP 1 "register_operand"  "f")))
+   (unspec:DSI [(match_operand:DSI  2 "immediate_operand" "K")] UNSPEC_ROUND)
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_HARD_FLOAT
-    && (!TARGET_VX || <GPR:MODE>mode != DImode || <BFP:MODE>mode != DFmode)"
-  "c<GPR:gf><BFP:xde>br\t%0,%h2,%1"
+    && (!TARGET_VX || <DSI:MODE>mode != DImode || <BFP:MODE>mode != DFmode)"
+  "c<DSI:gf><BFP:xde>br\t%0,%h2,%1"
   [(set_attr "op_type" "RRE")
    (set_attr "type"    "ftoi")])
 
-(define_expand "fix_trunc<BFP:mode><GPR:mode>2_bfp"
+(define_expand "fix_trunc<BFP:mode><DSI:mode>2_bfp"
   [(parallel
-    [(set (match_operand:GPR          0 "register_operand" "=d")
-	  (fix:GPR (match_operand:BFP 1 "register_operand"  "f")))
-     (unspec:GPR [(match_operand:GPR  2 "immediate_operand" "K")] UNSPEC_ROUND)
+    [(set (match_operand:DSI          0 "register_operand" "=d")
+	  (fix:DSI (match_operand:BFP 1 "register_operand"  "f")))
+     (unspec:DSI [(match_operand:DSI  2 "immediate_operand" "K")] UNSPEC_ROUND)
      (clobber (reg:CC CC_REGNUM))])]
   "TARGET_HARD_FLOAT")
 ;
@@ -5795,7 +5287,7 @@
 (define_expand "fix_trunc<mode>di2"
   [(set (match_operand:DI 0 "register_operand" "")
         (fix:DI (match_operand:DFP 1 "nonimmediate_operand" "")))]
-  "TARGET_ZARCH && TARGET_HARD_DFP"
+  "TARGET_HARD_DFP"
 {
   operands[1] = force_reg (<MODE>mode, operands[1]);
   emit_insn (gen_fix_trunc<mode>di2_dfp (operands[0], operands[1],
@@ -5809,7 +5301,7 @@
         (fix:DI (match_operand:DFP 1 "register_operand" "f")))
    (unspec:DI [(match_operand:DI 2 "immediate_operand" "K")] UNSPEC_ROUND)
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && TARGET_HARD_DFP"
+  "TARGET_HARD_DFP"
   "cg<DFP:xde>tr\t%0,%h2,%1"
   [(set_attr "op_type" "RRF")
    (set_attr "type"    "ftoidfp")])
@@ -5820,9 +5312,9 @@
 ;
 
 (define_expand "fix_trunctf<mode>2_fpr"
-  [(parallel [(set (match_operand:GPR 0 "register_operand" "")
-		   (fix:GPR (match_operand:TF 1 "register_operand" "")))
-	      (unspec:GPR [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
+  [(parallel [(set (match_operand:DSI 0 "register_operand" "")
+		   (fix:DSI (match_operand:TF 1 "register_operand" "")))
+	      (unspec:DSI [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
 	      (clobber (reg:CC CC_REGNUM))])]
   "TARGET_HARD_FLOAT && !TARGET_VXE"
   "")
@@ -5836,7 +5328,7 @@
 (define_insn "floatdi<mode>2<tf_fpr>"
   [(set (match_operand:FP           0 "register_operand" "=f,v")
         (float:FP (match_operand:DI 1 "register_operand"  "d,v")))]
-  "TARGET_ZARCH && TARGET_HARD_FLOAT"
+  "TARGET_HARD_FLOAT"
   "@
    c<xde>g<bt>r\t%0,%1
    wcdgb\t%v0,%v1,0,0"
@@ -5883,18 +5375,18 @@
 
 ; cxlgbr, cdlgbr, celgbr, cxlgtr, cdlgtr
 ; cxlfbr, cdlfbr, celfbr, cxlftr, cdlftr
-(define_insn "*floatuns<GPR:mode><FP:mode>2"
+(define_insn "*floatuns<DSI:mode><FP:mode>2"
   [(set (match_operand:FP                     0 "register_operand" "=f")
-        (unsigned_float:FP (match_operand:GPR 1 "register_operand"  "d")))]
+        (unsigned_float:FP (match_operand:DSI 1 "register_operand"  "d")))]
   "TARGET_Z196 && TARGET_HARD_FLOAT
-   && (!TARGET_VX || <FP:MODE>mode != DFmode || <GPR:MODE>mode != DImode)"
-  "c<FP:xde>l<GPR:gf><FP:bt>r\t%0,0,%1,0"
+   && (!TARGET_VX || <FP:MODE>mode != DFmode || <DSI:MODE>mode != DImode)"
+  "c<FP:xde>l<DSI:gf><FP:bt>r\t%0,0,%1,0"
   [(set_attr "op_type" "RRE")
    (set_attr "type"    "itof<FP:type>")])
 
-(define_expand "floatuns<GPR:mode><FP:mode>2<tf_fpr>"
+(define_expand "floatuns<DSI:mode><FP:mode>2<tf_fpr>"
   [(set (match_operand:FP                     0 "register_operand" "")
-        (unsigned_float:FP (match_operand:GPR 1 "register_operand" "")))]
+        (unsigned_float:FP (match_operand:DSI 1 "register_operand" "")))]
   "TARGET_Z196 && TARGET_HARD_FLOAT")
 
 ;
@@ -6257,7 +5749,7 @@
 	  (plus:TI (match_operand:TI 1 "nonimmediate_operand" "")
 		   (match_operand:TI 2 "general_operand"      "") ) )
      (clobber (reg:CC CC_REGNUM))])]
-  "TARGET_ZARCH"
+  ""
 {
   /* For z13 we have vaq which doesn't set CC.  */
   if (TARGET_VX)
@@ -6275,7 +5767,7 @@
         (plus:TI (match_operand:TI 1 "nonimmediate_operand" "%0")
                  (match_operand:TI 2 "general_operand"      "do") ) )
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "#"
   "&& reload_completed"
   [(parallel
@@ -6315,7 +5807,7 @@
         (plus:DI (sign_extend:DI (match_operand:SI 2 "general_operand" "d,T"))
                  (match_operand:DI 1 "register_operand" "0,0")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "@
    agfr\t%0,%2
    agf\t%0,%2"
@@ -6329,7 +5821,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=d,d")
         (plus:DI (zero_extend:DI (match_dup 2)) (match_dup 1)))]
-  "s390_match_ccmode (insn, CCLmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCLmode)"
   "@
    algfr\t%0,%2
    algf\t%0,%2"
@@ -6342,7 +5834,7 @@
                           (match_operand:DI 1 "register_operand" "0,0"))
                  (const_int 0)))
    (clobber (match_scratch:DI 0 "=d,d"))]
-  "s390_match_ccmode (insn, CCLmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCLmode)"
   "@
    algfr\t%0,%2
    algf\t%0,%2"
@@ -6354,38 +5846,13 @@
         (plus:DI (zero_extend:DI (match_operand:SI 2 "general_operand" "d,T"))
                  (match_operand:DI 1 "register_operand" "0,0")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "@
    algfr\t%0,%2
    algf\t%0,%2"
   [(set_attr "op_type"  "RRE,RXY")
    (set_attr "z10prop" "z10_super_E1,z10_super_E1")])
 
-(define_insn_and_split "*adddi3_31z"
-  [(set (match_operand:DI 0 "nonimmediate_operand" "=&d")
-        (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0")
-                 (match_operand:DI 2 "general_operand" "do") ) )
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH"
-  "#"
-  "&& reload_completed"
-  [(parallel
-    [(set (reg:CCL1 CC_REGNUM)
-          (compare:CCL1 (plus:SI (match_dup 7) (match_dup 8))
-                        (match_dup 7)))
-     (set (match_dup 6) (plus:SI (match_dup 7) (match_dup 8)))])
-   (parallel
-    [(set (match_dup 3) (plus:SI
-			  (plus:SI (ltu:SI (reg:CCL1 CC_REGNUM) (const_int 0))
-				   (match_dup 4)) (match_dup 5)))
-     (clobber (reg:CC CC_REGNUM))])]
-  "operands[3] = operand_subword (operands[0], 0, 0, DImode);
-   operands[4] = operand_subword (operands[1], 0, 0, DImode);
-   operands[5] = operand_subword (operands[2], 0, 0, DImode);
-   operands[6] = operand_subword (operands[0], 1, 0, DImode);
-   operands[7] = operand_subword (operands[1], 1, 0, DImode);
-   operands[8] = operand_subword (operands[2], 1, 0, DImode);")
-
 ;
 ; addsi3 instruction pattern(s).
 ;
@@ -6418,9 +5885,9 @@
 
 ; ark, agrk, ar, ahi, ahik, aghik, alfi, slfi, a, ay, agr, aghi, algfi, slgfi, ag, asi, agsi
 (define_insn "*add<mode>3"
-  [(set (match_operand:GPR 0 "nonimmediate_operand"           "=d,d,d,d, d, d,d,d,S")
-        (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,d,0,d, 0, 0,0,0,0")
-		  (match_operand:GPR 2 "general_operand"      " d,d,K,K,Op,On,R,T,C") ) )
+  [(set (match_operand:DSI 0 "nonimmediate_operand"           "=d,d,d,d, d, d,d,d,S")
+        (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" "%0,d,0,d, 0, 0,0,0,0")
+		  (match_operand:DSI 2 "general_operand"      " d,d,K,K,Op,On,R,T,C") ) )
    (clobber (reg:CC CC_REGNUM))]
   ""
   "@
@@ -6441,11 +5908,11 @@
 ; alr, alfi, slfi, al, aly, alrk, alhsik, algr, algfi, slgfi, alg, alsi, algsi, algrk, alghsik
 (define_insn "add<mode>3_carry1_cc"
   [(set (reg:CCL1 CC_REGNUM)
-        (compare:CCL1 (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,d, 0, 0,d,0,0,0")
-				(match_operand:GPR 2 "general_operand"      " d,d,Op,On,K,R,T,C"))
+        (compare:CCL1 (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" "%0,d, 0, 0,d,0,0,0")
+				(match_operand:DSI 2 "general_operand"      " d,d,Op,On,K,R,T,C"))
 		      (match_dup 1)))
-   (set (match_operand:GPR 0 "nonimmediate_operand"                         "=d,d, d, d,d,d,d,d")
-        (plus:GPR (match_dup 1) (match_dup 2)))]
+   (set (match_operand:DSI 0 "nonimmediate_operand"                         "=d,d, d, d,d,d,d,d")
+        (plus:DSI (match_dup 1) (match_dup 2)))]
   ""
   "@
    al<g>r\t%0,%2
@@ -6464,10 +5931,10 @@
 ; alr, al, aly, algr, alg, alrk, algrk
 (define_insn "*add<mode>3_carry1_cconly"
   [(set (reg CC_REGNUM)
-        (compare (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,d,0,0")
-			   (match_operand:GPR 2 "general_operand"       "d,d,R,T"))
+        (compare (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" "%0,d,0,0")
+			   (match_operand:DSI 2 "general_operand"       "d,d,R,T"))
                  (match_dup 1)))
-   (clobber (match_scratch:GPR 0                                       "=d,d,d,d"))]
+   (clobber (match_scratch:DSI 0                                       "=d,d,d,d"))]
   "s390_match_ccmode (insn, CCL1mode)"
   "@
    al<g>r\t%0,%2
@@ -6481,11 +5948,11 @@
 ; alr, alfi, slfi, al, aly, algr, algfi, slgfi, alg, alsi, algsi, alrk, algrk, alhsik, alghsik
 (define_insn "*add<mode>3_carry2_cc"
   [(set (reg CC_REGNUM)
-        (compare (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,d, 0, 0,d,0,0,0")
-			   (match_operand:GPR 2 "general_operand"      " d,d,Op,On,K,R,T,C"))
+        (compare (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" "%0,d, 0, 0,d,0,0,0")
+			   (match_operand:DSI 2 "general_operand"      " d,d,Op,On,K,R,T,C"))
                  (match_dup 2)))
-   (set (match_operand:GPR 0 "nonimmediate_operand"                    "=d,d, d, d,d,d,d,S")
-        (plus:GPR (match_dup 1) (match_dup 2)))]
+   (set (match_operand:DSI 0 "nonimmediate_operand"                    "=d,d, d, d,d,d,d,S")
+        (plus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCL1mode)"
   "@
    al<g>r\t%0,%2
@@ -6504,10 +5971,10 @@
 ; alr, al, aly, algr, alg, alrk, algrk
 (define_insn "*add<mode>3_carry2_cconly"
   [(set (reg CC_REGNUM)
-        (compare (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,d,0,0")
-			   (match_operand:GPR 2 "general_operand"       "d,d,R,T"))
+        (compare (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" "%0,d,0,0")
+			   (match_operand:DSI 2 "general_operand"       "d,d,R,T"))
                  (match_dup 2)))
-   (clobber (match_scratch:GPR 0                                       "=d,d,d,d"))]
+   (clobber (match_scratch:DSI 0                                       "=d,d,d,d"))]
   "s390_match_ccmode (insn, CCL1mode)"
   "@
    al<g>r\t%0,%2
@@ -6521,11 +5988,11 @@
 ; alr, alfi, slfi, al, aly, algr, algfi, slgfi, alg, alsi, algsi, alrk, algrk, alhsik, alghsik
 (define_insn "*add<mode>3_cc"
   [(set (reg CC_REGNUM)
-        (compare (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,d, 0, 0,d,0,0,0")
-			   (match_operand:GPR 2 "general_operand"      " d,d,Op,On,K,R,T,C"))
+        (compare (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" "%0,d, 0, 0,d,0,0,0")
+			   (match_operand:DSI 2 "general_operand"      " d,d,Op,On,K,R,T,C"))
                  (const_int 0)))
-   (set (match_operand:GPR 0 "nonimmediate_operand"                    "=d,d, d, d,d,d,d,S")
-        (plus:GPR (match_dup 1) (match_dup 2)))]
+   (set (match_operand:DSI 0 "nonimmediate_operand"                    "=d,d, d, d,d,d,d,S")
+        (plus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCLmode)"
   "@
    al<g>r\t%0,%2
@@ -6544,10 +6011,10 @@
 ; alr, al, aly, algr, alg, alrk, algrk
 (define_insn "*add<mode>3_cconly"
   [(set (reg CC_REGNUM)
-        (compare (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" "%0,d,0,0")
-			   (match_operand:GPR 2 "general_operand"       "d,d,R,T"))
+        (compare (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" "%0,d,0,0")
+			   (match_operand:DSI 2 "general_operand"       "d,d,R,T"))
                  (const_int 0)))
-   (clobber (match_scratch:GPR 0                                       "=d,d,d,d"))]
+   (clobber (match_scratch:DSI 0                                       "=d,d,d,d"))]
   "s390_match_ccmode (insn, CCLmode)"
   "@
    al<g>r\t%0,%2
@@ -6561,9 +6028,9 @@
 ; alr, al, aly, algr, alg, alrk, algrk
 (define_insn "*add<mode>3_cconly2"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:GPR 1 "nonimmediate_operand"    "%0,d,0,0")
-                 (neg:GPR (match_operand:GPR 2 "general_operand" "d,d,R,T"))))
-   (clobber (match_scratch:GPR 0                                "=d,d,d,d"))]
+        (compare (match_operand:DSI 1 "nonimmediate_operand"    "%0,d,0,0")
+                 (neg:DSI (match_operand:DSI 2 "general_operand" "d,d,R,T"))))
+   (clobber (match_scratch:DSI 0                                "=d,d,d,d"))]
   "s390_match_ccmode(insn, CCLmode)"
   "@
    al<g>r\t%0,%2
@@ -6577,16 +6044,15 @@
 ; ahi, afi, aghi, agfi, asi, agsi
 (define_insn "*add<mode>3_imm_cc"
   [(set (reg CC_REGNUM)
-        (compare (plus:GPR (match_operand:GPR 1 "nonimmediate_operand" " 0, d,0, 0")
-			   (match_operand:GPR 2 "const_int_operand"    " K, K,Os,C"))
+        (compare (plus:DSI (match_operand:DSI 1 "nonimmediate_operand" " 0, d,0, 0")
+			   (match_operand:DSI 2 "const_int_operand"    " K, K,Os,C"))
                  (const_int 0)))
-   (set (match_operand:GPR 0 "nonimmediate_operand"                    "=d, d,d, S")
-        (plus:GPR (match_dup 1) (match_dup 2)))]
+   (set (match_operand:DSI 0 "nonimmediate_operand"                    "=d, d,d, S")
+        (plus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCAmode)
    && (CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'K', \"K\")
        || (CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'O', \"Os\")
-           /* Avoid INT32_MIN on 32 bit.  */
-           && (!TARGET_ZARCH || INTVAL (operands[2]) != -0x7fffffff - 1)))"
+           && INTVAL (operands[2]) != -0x7fffffff - 1))"
   "@
    a<g>hi\t%0,%h2
    a<g>hik\t%0,%1,%h2
@@ -6617,12 +6083,12 @@
   [(parallel
     [(set (reg:CCO CC_REGNUM)
 	  (compare:CCO (plus:<DBL>
-			(sign_extend:<DBL> (match_operand:GPR 1 "nonimmediate_operand"))
+			(sign_extend:<DBL> (match_operand:DSI 1 "nonimmediate_operand"))
 			(match_dup 4))
-		       (sign_extend:<DBL> (plus:GPR (match_dup 1)
-						    (match_operand:GPR 2 "general_operand")))))
-     (set (match_operand:GPR 0 "nonimmediate_operand")
-	  (plus:GPR (match_dup 1) (match_dup 2)))])
+		       (sign_extend:<DBL> (plus:DSI (match_dup 1)
+						    (match_operand:DSI 2 "general_operand")))))
+     (set (match_operand:DSI 0 "nonimmediate_operand")
+	  (plus:DSI (match_dup 1) (match_dup 2)))])
    (set (pc)
 	(if_then_else (ne (reg:CCO CC_REGNUM) (const_int 0))
 		      (label_ref (match_operand 3))
@@ -6631,24 +6097,24 @@
 {
   if (CONSTANT_P (operands[2])
       && !addv_const_operand (operands[2], GET_MODE (operands[2])))
-    operands[2] = force_reg (<GPR:MODE>mode, operands[2]);
+    operands[2] = force_reg (<DSI:MODE>mode, operands[2]);
 
   if (GET_MODE (operands[2]) != VOIDmode)
     operands[4] = gen_rtx_SIGN_EXTEND (<DBL>mode, operands[2]);
   else
     /* This is what CSE does when propagating a constant into the pattern.  */
-    operands[4] = simplify_unary_operation (SIGN_EXTEND, <GPR:DBL>mode, operands[2], <GPR:MODE>mode);
+    operands[4] = simplify_unary_operation (SIGN_EXTEND, <DSI:DBL>mode, operands[2], <DSI:MODE>mode);
 })
 
 ; ark, agrk, ar, ahi, ahik, aghik, a, ay, agr, aghi, ag, asi, agsi
 (define_insn "*addv<mode>3_ccoverflow"
   [(set (reg CC_REGNUM)
 	(compare (plus:<DBL>
-		  (sign_extend:<DBL> (match_operand:GPR 1 "nonimmediate_operand" "%0,d,0,d,0,0,0"))
-		  (sign_extend:<DBL> (match_operand:GPR 2 "general_operand"      " d,d,K,K,R,T,C")))
-		 (sign_extend:<DBL> (plus:GPR (match_dup 1) (match_dup 2)))))
-   (set (match_operand:GPR                              0 "nonimmediate_operand" "=d,d,d,d,d,d,S")
-        (plus:GPR (match_dup 1) (match_dup 2)))]
+		  (sign_extend:<DBL> (match_operand:DSI 1 "nonimmediate_operand" "%0,d,0,d,0,0,0"))
+		  (sign_extend:<DBL> (match_operand:DSI 2 "general_operand"      " d,d,K,K,R,T,C")))
+		 (sign_extend:<DBL> (plus:DSI (match_dup 1) (match_dup 2)))))
+   (set (match_operand:DSI                              0 "nonimmediate_operand" "=d,d,d,d,d,d,S")
+        (plus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCOmode)"
   "@
    a<g>r\t%0,%2
@@ -6667,11 +6133,11 @@
 (define_insn "*addv<mode>3_ccoverflow_const"
   [(set (reg CC_REGNUM)
 	(compare (plus:<DBL>
-		  (sign_extend:<DBL> (match_operand:GPR 1 "nonimmediate_operand" "%0,d,0"))
+		  (sign_extend:<DBL> (match_operand:DSI 1 "nonimmediate_operand" "%0,d,0"))
 		  (match_operand:<DBL>                  2 "addv_const_operand"    "K,K,C"))
-		 (sign_extend:<DBL> (plus:GPR (match_dup 1) (match_dup 2)))))
-   (set (match_operand:GPR                              0 "nonimmediate_operand" "=d,d,S")
-        (plus:GPR (match_dup 1) (match_dup 2)))]
+		 (sign_extend:<DBL> (plus:DSI (match_dup 1) (match_dup 2)))))
+   (set (match_operand:DSI                              0 "nonimmediate_operand" "=d,d,S")
+        (plus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCOmode)"
   "@
    a<g>hi\t%0,%h2
@@ -6747,7 +6213,7 @@
   [(set (match_operand:DI 0 "register_operand" "")
         (plus:DI (match_operand:DI 1 "register_operand" "")
 		 (match_operand:DI 2 "nonmemory_operand" "")))]
-  "TARGET_64BIT"
+  ""
 {
   if (GET_CODE (operands[2]) == CONST_INT)
     {
@@ -6764,32 +6230,6 @@
     }
 })
 
-; For 31 bit we have to prevent the generated pattern from matching
-; normal ADDs since la only does a 31 bit add.  This is supposed to
-; match "force_la_31".
-(define_expand "addptrsi3"
-  [(parallel
-    [(set (match_operand:SI 0 "register_operand" "")
-	  (plus:SI (match_operand:SI 1 "register_operand" "")
-		   (match_operand:SI 2 "nonmemory_operand" "")))
-		   (use (const_int 0))])]
-  "!TARGET_64BIT"
-{
-  if (GET_CODE (operands[2]) == CONST_INT)
-    {
-      HOST_WIDE_INT c = INTVAL (operands[2]);
-
-      if (!CONST_OK_FOR_CONSTRAINT_P (c, 'K', "K")
-	  && !CONST_OK_FOR_CONSTRAINT_P (c, 'O', "Os"))
-        {
-	  operands[2] = force_const_mem (SImode, operands[2]);
-	  operands[2] = force_reg (SImode, operands[2]);
-        }
-      else if (!DISP_IN_RANGE (INTVAL (operands[2])))
-        operands[2] = force_reg (SImode, operands[2]);
-    }
-})
-
 ;;
 ;;- Subtract instructions.
 ;;
@@ -6804,7 +6244,7 @@
 	  (minus:TI (match_operand:TI 1 "register_operand" "")
 		    (match_operand:TI 2 "general_operand"  "") ) )
      (clobber (reg:CC CC_REGNUM))])]
-  "TARGET_ZARCH"
+  ""
 {
   /* For z13 we have vsq which doesn't set CC.  */
   if (TARGET_VX)
@@ -6822,7 +6262,7 @@
         (minus:TI (match_operand:TI 1 "register_operand"   "0")
                   (match_operand:TI 2 "general_operand"   "do") ) )
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "#"
   "&& reload_completed"
   [(parallel
@@ -6861,7 +6301,7 @@
         (minus:DI (match_operand:DI 1 "register_operand" "0,0")
                   (sign_extend:DI (match_operand:SI 2 "general_operand" "d,T"))))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "@
    sgfr\t%0,%2
    sgf\t%0,%2"
@@ -6876,7 +6316,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=d,d")
         (minus:DI (match_dup 1) (zero_extend:DI (match_dup 2))))]
-  "s390_match_ccmode (insn, CCLmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCLmode)"
   "@
    slgfr\t%0,%2
    slgf\t%0,%2"
@@ -6889,7 +6329,7 @@
                            (zero_extend:DI (match_operand:SI 2 "general_operand" "d,T")))
                  (const_int 0)))
    (clobber (match_scratch:DI 0 "=d,d"))]
-  "s390_match_ccmode (insn, CCLmode) && TARGET_ZARCH"
+  "s390_match_ccmode (insn, CCLmode)"
   "@
    slgfr\t%0,%2
    slgf\t%0,%2"
@@ -6901,37 +6341,13 @@
         (minus:DI (match_operand:DI 1 "register_operand" "0,0")
                   (zero_extend:DI (match_operand:SI 2 "general_operand" "d,T"))))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "@
    slgfr\t%0,%2
    slgf\t%0,%2"
   [(set_attr "op_type"  "RRE,RXY")
    (set_attr "z10prop" "z10_super_c_E1,z10_super_E1")])
 
-(define_insn_and_split "*subdi3_31z"
-  [(set (match_operand:DI 0 "register_operand" "=&d")
-        (minus:DI (match_operand:DI 1 "register_operand" "0")
-                  (match_operand:DI 2 "general_operand" "do") ) )
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH"
-  "#"
-  "&& reload_completed"
-  [(parallel
-    [(set (reg:CCL2 CC_REGNUM)
-          (compare:CCL2 (minus:SI (match_dup 7) (match_dup 8))
-                        (match_dup 7)))
-     (set (match_dup 6) (minus:SI (match_dup 7) (match_dup 8)))])
-   (parallel
-    [(set (match_dup 3) (minus:SI (minus:SI (match_dup 4) (match_dup 5))
-                                  (gtu:SI (reg:CCL2 CC_REGNUM) (const_int 0))))
-     (clobber (reg:CC CC_REGNUM))])]
-  "operands[3] = operand_subword (operands[0], 0, 0, DImode);
-   operands[4] = operand_subword (operands[1], 0, 0, DImode);
-   operands[5] = operand_subword (operands[2], 0, 0, DImode);
-   operands[6] = operand_subword (operands[0], 1, 0, DImode);
-   operands[7] = operand_subword (operands[1], 1, 0, DImode);
-   operands[8] = operand_subword (operands[2], 1, 0, DImode);")
-
 ;
 ; subsi3 instruction pattern(s).
 ;
@@ -6964,9 +6380,9 @@
 
 ; sr, s, sy, sgr, sg, srk, sgrk
 (define_insn "*sub<mode>3"
-  [(set (match_operand:GPR 0 "register_operand"           "=d,d,d,d")
-        (minus:GPR (match_operand:GPR 1 "register_operand" "0,d,0,0")
-		   (match_operand:GPR 2 "general_operand"  "d,d,R,T") ) )
+  [(set (match_operand:DSI 0 "register_operand"           "=d,d,d,d")
+        (minus:DSI (match_operand:DSI 1 "register_operand" "0,d,0,0")
+		   (match_operand:DSI 2 "general_operand"  "d,d,R,T") ) )
    (clobber (reg:CC CC_REGNUM))]
   ""
   "@
@@ -6981,11 +6397,11 @@
 ; slr, sl, sly, slgr, slg, slrk, slgrk
 (define_insn "sub<mode>3_borrow_cc"
   [(set (reg:CCL2 CC_REGNUM)
-        (compare:CCL2 (minus:GPR (match_operand:GPR 1 "register_operand" "0,d,0,0")
-				 (match_operand:GPR 2 "general_operand"  "d,d,R,T"))
+        (compare:CCL2 (minus:DSI (match_operand:DSI 1 "register_operand" "0,d,0,0")
+				 (match_operand:DSI 2 "general_operand"  "d,d,R,T"))
 		      (match_dup 1)))
-   (set (match_operand:GPR 0 "register_operand"                         "=d,d,d,d")
-        (minus:GPR (match_dup 1) (match_dup 2)))]
+   (set (match_operand:DSI 0 "register_operand"                         "=d,d,d,d")
+        (minus:DSI (match_dup 1) (match_dup 2)))]
   ""
   "@
    sl<g>r\t%0,%2
@@ -6999,10 +6415,10 @@
 ; slr, sl, sly, slgr, slg, slrk, slgrk
 (define_insn "*sub<mode>3_borrow_cconly"
   [(set (reg CC_REGNUM)
-        (compare (minus:GPR (match_operand:GPR 1 "register_operand" "0,d,0,0")
-			    (match_operand:GPR 2 "general_operand"  "d,d,R,T"))
+        (compare (minus:DSI (match_operand:DSI 1 "register_operand" "0,d,0,0")
+			    (match_operand:DSI 2 "general_operand"  "d,d,R,T"))
                  (match_dup 1)))
-   (clobber (match_scratch:GPR 0                                   "=d,d,d,d"))]
+   (clobber (match_scratch:DSI 0                                   "=d,d,d,d"))]
   "s390_match_ccmode (insn, CCL2mode)"
   "@
    sl<g>r\t%0,%2
@@ -7016,11 +6432,11 @@
 ; slr, sl, sly, slgr, slg, slrk, slgrk
 (define_insn "*sub<mode>3_cc"
   [(set (reg CC_REGNUM)
-        (compare (minus:GPR (match_operand:GPR 1 "register_operand" "0,d,0,0")
-			    (match_operand:GPR 2 "general_operand"  "d,d,R,T"))
+        (compare (minus:DSI (match_operand:DSI 1 "register_operand" "0,d,0,0")
+			    (match_operand:DSI 2 "general_operand"  "d,d,R,T"))
                  (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand"                    "=d,d,d,d")
-        (minus:GPR (match_dup 1) (match_dup 2)))]
+   (set (match_operand:DSI 0 "register_operand"                    "=d,d,d,d")
+        (minus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCLmode)"
   "@
    sl<g>r\t%0,%2
@@ -7034,10 +6450,10 @@
 ; slr, sl, sly, slgr, slg, slrk, slgrk
 (define_insn "*sub<mode>3_cc2"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:GPR 1 "register_operand" "0,d,0,0")
-                 (match_operand:GPR 2 "general_operand"  "d,d,R,T")))
-   (set (match_operand:GPR 0 "register_operand"         "=d,d,d,d")
-        (minus:GPR (match_dup 1) (match_dup 2)))]
+        (compare (match_operand:DSI 1 "register_operand" "0,d,0,0")
+                 (match_operand:DSI 2 "general_operand"  "d,d,R,T")))
+   (set (match_operand:DSI 0 "register_operand"         "=d,d,d,d")
+        (minus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCL3mode)"
   "@
    sl<g>r\t%0,%2
@@ -7051,10 +6467,10 @@
 ; slr, sl, sly, slgr, slg, slrk, slgrk
 (define_insn "*sub<mode>3_cconly"
   [(set (reg CC_REGNUM)
-        (compare (minus:GPR (match_operand:GPR 1 "register_operand" "0,d,0,0")
-			    (match_operand:GPR 2 "general_operand"  "d,d,R,T"))
+        (compare (minus:DSI (match_operand:DSI 1 "register_operand" "0,d,0,0")
+			    (match_operand:DSI 2 "general_operand"  "d,d,R,T"))
                  (const_int 0)))
-   (clobber (match_scratch:GPR 0                                   "=d,d,d,d"))]
+   (clobber (match_scratch:DSI 0                                   "=d,d,d,d"))]
   "s390_match_ccmode (insn, CCLmode)"
   "@
    sl<g>r\t%0,%2
@@ -7069,9 +6485,9 @@
 ; slr, sl, sly, slgr, slg, slrk, slgrk
 (define_insn "*sub<mode>3_cconly2"
   [(set (reg CC_REGNUM)
-        (compare (match_operand:GPR 1 "register_operand" "0,d,0,0")
-                 (match_operand:GPR 2 "general_operand"  "d,d,R,T")))
-   (clobber (match_scratch:GPR 0                        "=d,d,d,d"))]
+        (compare (match_operand:DSI 1 "register_operand" "0,d,0,0")
+                 (match_operand:DSI 2 "general_operand"  "d,d,R,T")))
+   (clobber (match_scratch:DSI 0                        "=d,d,d,d"))]
   "s390_match_ccmode (insn, CCL3mode)"
   "@
    sl<g>r\t%0,%2
@@ -7096,11 +6512,11 @@
   [(parallel
     [(set (reg:CCO CC_REGNUM)
 	  (compare:CCO (minus:<DBL>
-			(sign_extend:<DBL> (match_operand:GPR 1 "nonimmediate_operand"))
-			(sign_extend:<DBL> (match_operand:GPR 2 "nonimmediate_operand")))
-		       (sign_extend:<DBL> (minus:GPR (match_dup 1) (match_dup 2)))))
-     (set (match_operand:GPR                                  0 "nonimmediate_operand")
-          (minus:GPR (match_dup 1) (match_dup 2)))])
+			(sign_extend:<DBL> (match_operand:DSI 1 "nonimmediate_operand"))
+			(sign_extend:<DBL> (match_operand:DSI 2 "nonimmediate_operand")))
+		       (sign_extend:<DBL> (minus:DSI (match_dup 1) (match_dup 2)))))
+     (set (match_operand:DSI                                  0 "nonimmediate_operand")
+          (minus:DSI (match_dup 1) (match_dup 2)))])
    (set (pc)
         (if_then_else (ne (reg:CCO CC_REGNUM) (const_int 0))
 		      (label_ref (match_operand 3))
@@ -7111,11 +6527,11 @@
 (define_insn "*subv<mode>3_ccoverflow"
   [(set (reg CC_REGNUM)
 	(compare (minus:<DBL>
-		  (sign_extend:<DBL> (match_operand:GPR 1 "nonimmediate_operand" "0,d,0,0"))
-		  (sign_extend:<DBL> (match_operand:GPR 2 "nonimmediate_operand" "d,d,R,T")))
-		 (sign_extend:<DBL> (minus:GPR (match_dup 1) (match_dup 2)))))
-   (set (match_operand:GPR                              0 "register_operand"    "=d,d,d,d")
-        (minus:GPR (match_dup 1) (match_dup 2)))]
+		  (sign_extend:<DBL> (match_operand:DSI 1 "nonimmediate_operand" "0,d,0,0"))
+		  (sign_extend:<DBL> (match_operand:DSI 2 "nonimmediate_operand" "d,d,R,T")))
+		 (sign_extend:<DBL> (minus:DSI (match_dup 1) (match_dup 2)))))
+   (set (match_operand:DSI                              0 "register_operand"    "=d,d,d,d")
+        (minus:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCOmode)"
   "@
    s<g>r\t%0,%2
@@ -7193,11 +6609,11 @@
 ;
 
 (define_expand "uaddc<mode>5"
-  [(match_operand:GPR 0 "register_operand")
-   (match_operand:GPR 1 "nonimmediate_operand")
-   (match_operand:GPR 2 "nonimmediate_operand")
-   (match_operand:GPR 3 "nonimmediate_operand")
-   (match_operand:GPR 4 "general_operand")]
+  [(match_operand:DSI 0 "register_operand")
+   (match_operand:DSI 1 "nonimmediate_operand")
+   (match_operand:DSI 2 "nonimmediate_operand")
+   (match_operand:DSI 3 "nonimmediate_operand")
+   (match_operand:DSI 4 "general_operand")]
   "TARGET_Z196"
 {
   if (operands[4] == const0_rtx)
@@ -7222,12 +6638,12 @@
 (define_insn "add<mode>3_alc_carry1_cc"
   [(set (reg:CCL1 CC_REGNUM)
         (compare:CCL1
-          (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
-                              (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
-                    (match_operand:GPR 2 "general_operand" "d,T"))
+          (plus:DSI (plus:DSI (match_operand:DSI 3 "s390_alc_comparison" "")
+                              (match_operand:DSI 1 "nonimmediate_operand" "%0,0"))
+                    (match_operand:DSI 2 "general_operand" "d,T"))
           (match_dup 1)))
-   (set (match_operand:GPR 0 "register_operand" "=d,d")
-        (plus:GPR (plus:GPR (match_dup 3) (match_dup 1)) (match_dup 2)))]
+   (set (match_operand:DSI 0 "register_operand" "=d,d")
+        (plus:DSI (plus:DSI (match_dup 3) (match_dup 1)) (match_dup 2)))]
   ""
   "@
    alc<g>r\t%0,%2
@@ -7239,11 +6655,11 @@
 (define_insn "*add<mode>3_alc_carry1_cconly"
   [(set (reg CC_REGNUM)
         (compare
-          (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
-                              (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
-                    (match_operand:GPR 2 "general_operand" "d,T"))
+          (plus:DSI (plus:DSI (match_operand:DSI 3 "s390_alc_comparison" "")
+                              (match_operand:DSI 1 "nonimmediate_operand" "%0,0"))
+                    (match_operand:DSI 2 "general_operand" "d,T"))
           (match_dup 1)))
-   (clobber (match_scratch:GPR 0 "=d,d"))]
+   (clobber (match_scratch:DSI 0 "=d,d"))]
   "s390_match_ccmode (insn, CCL1mode)"
   "@
    alc<g>r\t%0,%2
@@ -7257,12 +6673,12 @@
 (define_insn "*add<mode>3_alc_carry2_cc"
   [(set (reg CC_REGNUM)
         (compare
-          (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
-                              (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
-                    (match_operand:GPR 2 "general_operand" "d,T"))
+          (plus:DSI (plus:DSI (match_operand:DSI 3 "s390_alc_comparison" "")
+                              (match_operand:DSI 1 "nonimmediate_operand" "%0,0"))
+                    (match_operand:DSI 2 "general_operand" "d,T"))
           (match_dup 2)))
-   (set (match_operand:GPR 0 "register_operand" "=d,d")
-        (plus:GPR (plus:GPR (match_dup 3) (match_dup 1)) (match_dup 2)))]
+   (set (match_operand:DSI 0 "register_operand" "=d,d")
+        (plus:DSI (plus:DSI (match_dup 3) (match_dup 1)) (match_dup 2)))]
   "s390_match_ccmode (insn, CCL1mode)"
   "@
    alc<g>r\t%0,%2
@@ -7273,11 +6689,11 @@
 (define_insn "*add<mode>3_alc_carry2_cconly"
   [(set (reg CC_REGNUM)
         (compare
-          (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
-                              (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
-                    (match_operand:GPR 2 "general_operand" "d,T"))
+          (plus:DSI (plus:DSI (match_operand:DSI 3 "s390_alc_comparison" "")
+                              (match_operand:DSI 1 "nonimmediate_operand" "%0,0"))
+                    (match_operand:DSI 2 "general_operand" "d,T"))
           (match_dup 2)))
-   (clobber (match_scratch:GPR 0 "=d,d"))]
+   (clobber (match_scratch:DSI 0 "=d,d"))]
   "s390_match_ccmode (insn, CCL1mode)"
   "@
    alc<g>r\t%0,%2
@@ -7288,12 +6704,12 @@
 (define_insn "*add<mode>3_alc_cc"
   [(set (reg CC_REGNUM)
         (compare
-          (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
-                              (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
-                    (match_operand:GPR 2 "general_operand" "d,T"))
+          (plus:DSI (plus:DSI (match_operand:DSI 3 "s390_alc_comparison" "")
+                              (match_operand:DSI 1 "nonimmediate_operand" "%0,0"))
+                    (match_operand:DSI 2 "general_operand" "d,T"))
           (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d,d")
-        (plus:GPR (plus:GPR (match_dup 3) (match_dup 1)) (match_dup 2)))]
+   (set (match_operand:DSI 0 "register_operand" "=d,d")
+        (plus:DSI (plus:DSI (match_dup 3) (match_dup 1)) (match_dup 2)))]
   "s390_match_ccmode (insn, CCLmode)"
   "@
    alc<g>r\t%0,%2
@@ -7302,10 +6718,10 @@
 
 ; alcr, alc, alcgr, alcg
 (define_insn "*add<mode>3_alc"
-  [(set (match_operand:GPR 0 "register_operand" "=d,d")
-        (plus:GPR (plus:GPR (match_operand:GPR 3 "s390_alc_comparison" "")
-                            (match_operand:GPR 1 "nonimmediate_operand" "%0,0"))
-                  (match_operand:GPR 2 "general_operand" "d,T")))
+  [(set (match_operand:DSI 0 "register_operand" "=d,d")
+        (plus:DSI (plus:DSI (match_operand:DSI 3 "s390_alc_comparison" "")
+                            (match_operand:DSI 1 "nonimmediate_operand" "%0,0"))
+                  (match_operand:DSI 2 "general_operand" "d,T")))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "@
@@ -7314,11 +6730,11 @@
   [(set_attr "op_type"  "RRE,RXY")])
 
 (define_expand "usubc<mode>5"
-  [(match_operand:GPR 0 "register_operand")
-   (match_operand:GPR 1 "nonimmediate_operand")
-   (match_operand:GPR 2 "nonimmediate_operand")
-   (match_operand:GPR 3 "nonimmediate_operand")
-   (match_operand:GPR 4 "general_operand")]
+  [(match_operand:DSI 0 "register_operand")
+   (match_operand:DSI 1 "nonimmediate_operand")
+   (match_operand:DSI 2 "nonimmediate_operand")
+   (match_operand:DSI 3 "nonimmediate_operand")
+   (match_operand:DSI 4 "general_operand")]
   "TARGET_Z196"
 {
   if (operands[4] == const0_rtx)
@@ -7342,12 +6758,12 @@
 (define_insn "*sub<mode>3_slb_cc"
   [(set (reg CC_REGNUM)
         (compare
-          (minus:GPR (minus:GPR (match_operand:GPR 1 "nonimmediate_operand" "0,0")
-                                (match_operand:GPR 2 "general_operand" "d,T"))
-                     (match_operand:GPR 3 "s390_slb_comparison" ""))
+          (minus:DSI (minus:DSI (match_operand:DSI 1 "nonimmediate_operand" "0,0")
+                                (match_operand:DSI 2 "general_operand" "d,T"))
+                     (match_operand:DSI 3 "s390_slb_comparison" ""))
           (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d,d")
-        (minus:GPR (minus:GPR (match_dup 1) (match_dup 2)) (match_dup 3)))]
+   (set (match_operand:DSI 0 "register_operand" "=d,d")
+        (minus:DSI (minus:DSI (match_dup 1) (match_dup 2)) (match_dup 3)))]
   "s390_match_ccmode (insn, CCLmode)"
   "@
    slb<g>r\t%0,%2
@@ -7357,10 +6773,10 @@
 
 ; slbr, slb, slbgr, slbg
 (define_insn "*sub<mode>3_slb"
-  [(set (match_operand:GPR 0 "register_operand" "=d,d")
-        (minus:GPR (minus:GPR (match_operand:GPR 1 "nonimmediate_operand" "0,0")
-                              (match_operand:GPR 2 "general_operand" "d,T"))
-                   (match_operand:GPR 3 "s390_slb_comparison" "")))
+  [(set (match_operand:DSI 0 "register_operand" "=d,d")
+        (minus:DSI (minus:DSI (match_operand:DSI 1 "nonimmediate_operand" "0,0")
+                              (match_operand:DSI 2 "general_operand" "d,T"))
+                   (match_operand:DSI 3 "s390_slb_comparison" "")))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "@
@@ -7373,12 +6789,12 @@
 (define_insn "sub<mode>3_slb_borrow1_cc"
   [(set (reg:CCL2 CC_REGNUM)
 	(compare:CCL2
-	  (minus:GPR (minus:GPR (match_operand:GPR 1 "nonimmediate_operand" "0,0")
-				(match_operand:GPR 2 "general_operand" "d,T"))
-		     (match_operand:GPR 3 "s390_slb_comparison" ""))
+	  (minus:DSI (minus:DSI (match_operand:DSI 1 "nonimmediate_operand" "0,0")
+				(match_operand:DSI 2 "general_operand" "d,T"))
+		     (match_operand:DSI 3 "s390_slb_comparison" ""))
 	  (match_dup 1)))
-   (set (match_operand:GPR 0 "register_operand" "=d,d")
-	(minus:GPR (minus:GPR (match_dup 1) (match_dup 2)) (match_dup 3)))]
+   (set (match_operand:DSI 0 "register_operand" "=d,d")
+	(minus:DSI (minus:DSI (match_dup 1) (match_dup 2)) (match_dup 3)))]
   ""
   "@
    slb<g>r\t%0,%2
@@ -7387,10 +6803,10 @@
    (set_attr "z10prop" "z10_c,*")])
 
 (define_expand "add<mode>cc"
-  [(match_operand:GPR 0 "register_operand" "")
+  [(match_operand:DSI 0 "register_operand" "")
    (match_operand 1 "comparison_operator" "")
-   (match_operand:GPR 2 "register_operand" "")
-   (match_operand:GPR 3 "const_int_operand" "")]
+   (match_operand:DSI 2 "register_operand" "")
+   (match_operand:DSI 3 "const_int_operand" "")]
   ""
   "if (!s390_expand_addcc (GET_CODE (operands[1]),
 			   XEXP (operands[1], 0), XEXP (operands[1], 1),
@@ -7402,33 +6818,33 @@
 ;
 
 (define_insn_and_split "*scond<mode>"
-  [(set (match_operand:GPR 0 "register_operand" "=&d")
-        (match_operand:GPR 1 "s390_alc_comparison" ""))
+  [(set (match_operand:DSI 0 "register_operand" "=&d")
+        (match_operand:DSI 1 "s390_alc_comparison" ""))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "#"
   "&& reload_completed"
   [(set (match_dup 0) (const_int 0))
    (parallel
-    [(set (match_dup 0) (plus:GPR (plus:GPR (match_dup 1) (match_dup 0))
+    [(set (match_dup 0) (plus:DSI (plus:DSI (match_dup 1) (match_dup 0))
                                   (match_dup 0)))
      (clobber (reg:CC CC_REGNUM))])]
   "")
 
 (define_insn_and_split "*scond<mode>_neg"
-  [(set (match_operand:GPR 0 "register_operand" "=&d")
-        (match_operand:GPR 1 "s390_slb_comparison" ""))
+  [(set (match_operand:DSI 0 "register_operand" "=&d")
+        (match_operand:DSI 1 "s390_slb_comparison" ""))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "#"
   "&& reload_completed"
   [(set (match_dup 0) (const_int 0))
    (parallel
-    [(set (match_dup 0) (minus:GPR (minus:GPR (match_dup 0) (match_dup 0))
+    [(set (match_dup 0) (minus:DSI (minus:DSI (match_dup 0) (match_dup 0))
                                    (match_dup 1)))
      (clobber (reg:CC CC_REGNUM))])
    (parallel
-    [(set (match_dup 0) (neg:GPR (match_dup 0)))
+    [(set (match_dup 0) (neg:DSI (match_dup 0)))
      (clobber (reg:CC CC_REGNUM))])]
   "")
 
@@ -7436,8 +6852,8 @@
 (define_expand "cstore<mode>4"
   [(set (match_operand:SI 0 "register_operand" "")
         (match_operator:SI 1 "s390_scond_operator"
-  	 [(match_operand:GPR 2 "register_operand" "")
-          (match_operand:GPR 3 "general_operand" "")]))]
+	 [(match_operand:DSI 2 "register_operand" "")
+          (match_operand:DSI 3 "general_operand" "")]))]
   ""
   "if (!s390_expand_addcc (GET_CODE (operands[1]), operands[2], operands[3],
 			   operands[0], const0_rtx, const1_rtx)) FAIL; DONE;")
@@ -7486,8 +6902,8 @@
 
 ; Such patterns get directly emitted by noce_emit_store_flag.
 (define_insn_and_split "*cstorecc<mode>_z13"
-  [(set (match_operand:GPR  0 "register_operand"                "=&d")
-	(match_operator:GPR 1 "s390_comparison"
+  [(set (match_operand:DSI  0 "register_operand"                "=&d")
+	(match_operator:DSI 1 "s390_comparison"
 			    [(match_operand 2 "cc_reg_operand"    "c")
 			     (match_operand 3 "const_int_operand"  "")]))]
   "TARGET_Z13"
@@ -7495,7 +6911,7 @@
   "reload_completed"
   [(set (match_dup 0) (const_int 0))
    (set (match_dup 0)
-	(if_then_else:GPR
+	(if_then_else:DSI
 	 (match_op_dup 1 [(match_dup 2) (match_dup 3)])
 	 (const_int 1)
 	 (match_dup 0)))])
@@ -7505,10 +6921,10 @@
 ;;
 
 (define_expand "mov<mode>cc"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "")
-	(if_then_else:GPR (match_operand 1 "comparison_operator" "")
-			  (match_operand:GPR 2 "loc_operand" "")
-			  (match_operand:GPR 3 "loc_operand" "")))]
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "")
+	(if_then_else:DSI (match_operand 1 "comparison_operator" "")
+			  (match_operand:DSI 2 "loc_operand" "")
+			  (match_operand:DSI 3 "loc_operand" "")))]
   "TARGET_Z196"
 {
   if (!TARGET_Z13 && CONSTANT_P (operands[2]))
@@ -7566,13 +6982,13 @@
 
 ; locr, loc, stoc, locgr, locg, stocg, lochi, locghi, selr, selgr
 (define_insn "*mov<mode>cc"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "=d,d,d,d,d,d,d,S,S")
-	(if_then_else:GPR
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "=d,d,d,d,d,d,d,S,S")
+	(if_then_else:DSI
 	  (match_operator 1 "s390_comparison"
 	    [(match_operand 2 "cc_reg_operand"      " c,c,c,c,c,c,c,c,c")
 	     (match_operand 5 "const_int_operand"   "")])
-	  (match_operand:GPR 3 "loc_operand"        " d,0,d,S,0,K,0,d,0")
-	  (match_operand:GPR 4 "loc_operand"        " 0,d,d,0,S,0,K,0,d")))]
+	  (match_operand:DSI 3 "loc_operand"        " d,0,d,S,0,K,0,d,0")
+	  (match_operand:DSI 4 "loc_operand"        " 0,d,d,0,S,0,K,0,d")))]
   "TARGET_Z196"
   "@
    loc<g>r%C1\t%0,%3
@@ -7601,13 +7017,13 @@
 	  (mult:DI (match_operand:DI 1 "nonimmediate_operand")
 		   (match_operand:DI 2 "general_operand")))
      (clobber (reg:CC CC_REGNUM))])]
-  "TARGET_ZARCH")
+  "")
 
 (define_insn "*muldi3_sign"
   [(set (match_operand:DI 0 "register_operand" "=d,d")
         (mult:DI (sign_extend:DI (match_operand:SI 2 "general_operand" "d,T"))
                  (match_operand:DI 1 "register_operand" "0,0")))]
-  "TARGET_ZARCH"
+  ""
   "@
    msgfr\t%0,%2
    msgf\t%0,%2"
@@ -7619,7 +7035,7 @@
 	(mult:DI (match_operand:DI 1 "nonimmediate_operand" "%0,d,0,0,0")
 		 (match_operand:DI 2 "general_operand"       "d,d,K,T,Os")))
    (clobber (match_scratch:CC      3                        "=X,c,X,X,X"))]
-  "TARGET_ZARCH"
+  ""
   "@
    msgr\t%0,%2
    msgrkc\t%0,%1,%2
@@ -7709,31 +7125,16 @@
 ; mulsidi3 instruction pattern(s).
 ;
 
-(define_insn "mulsidi3"
-  [(set (match_operand:DI 0 "register_operand" "=d,d,d")
-        (mult:DI (sign_extend:DI
-	           (match_operand:SI 1 "register_operand" "%0,0,0"))
-                 (sign_extend:DI
-	           (match_operand:SI 2 "nonimmediate_operand" "d,R,T"))))]
-  "!TARGET_ZARCH"
-  "@
-   mr\t%0,%2
-   m\t%0,%2
-   mfy\t%0,%2"
-  [(set_attr "op_type"      "RR,RX,RXY")
-   (set_attr "type"         "imulsi")
-   (set_attr "cpu_facility" "*,*,z10")])
-
 ; Jump to label OP3 if OP1 * OP2 results in a signed overflow
 (define_expand "mulv<mode>4"
   [(parallel
     [(set (reg:CCO CC_REGNUM)
 	  (compare:CCO (mult:<DBL>
-			 (sign_extend:<DBL> (match_operand:GPR 1 "register_operand"))
-			 (sign_extend:<DBL> (match_operand:GPR 2 "nonimmediate_operand")))
-			(sign_extend:<DBL> (mult:GPR (match_dup 1) (match_dup 2)))))
-     (set (match_operand:GPR 0 "register_operand")
-          (mult:GPR (match_dup 1) (match_dup 2)))])
+			 (sign_extend:<DBL> (match_operand:DSI 1 "register_operand"))
+			 (sign_extend:<DBL> (match_operand:DSI 2 "nonimmediate_operand")))
+			(sign_extend:<DBL> (mult:DSI (match_dup 1) (match_dup 2)))))
+     (set (match_operand:DSI 0 "register_operand")
+          (mult:DSI (match_dup 1) (match_dup 2)))])
    (set (pc)
         (if_then_else (ne (reg:CCO CC_REGNUM) (const_int 0))
 		      (label_ref (match_operand 3))
@@ -7744,11 +7145,11 @@
 (define_insn "*mulv<mode>3_ccoverflow"
   [(set (reg CC_REGNUM)
 	(compare (mult:<DBL>
-		  (sign_extend:<DBL> (match_operand:GPR 1 "register_operand"     "%d,0"))
-		  (sign_extend:<DBL> (match_operand:GPR 2 "nonimmediate_operand" " d,T")))
-		 (sign_extend:<DBL> (mult:GPR (match_dup 1) (match_dup 2)))))
-   (set (match_operand:GPR                              0 "register_operand"     "=d,d")
-        (mult:GPR (match_dup 1) (match_dup 2)))]
+		  (sign_extend:<DBL> (match_operand:DSI 1 "register_operand"     "%d,0"))
+		  (sign_extend:<DBL> (match_operand:DSI 2 "nonimmediate_operand" " d,T")))
+		 (sign_extend:<DBL> (mult:DSI (match_dup 1) (match_dup 2)))))
+   (set (match_operand:DSI                              0 "register_operand"     "=d,d")
+        (mult:DSI (match_dup 1) (match_dup 2)))]
   "s390_match_ccmode (insn, CCOmode) && TARGET_Z14"
   "@
    ms<g>rkc\t%0,%1,%2
@@ -7761,18 +7162,18 @@
 ;
 
 ; mlr, ml, mlgr, mlg
-(define_insn "umul<dwh><mode>3"
-  [(set (match_operand:DW 0 "register_operand"                   "=d,d")
-        (mult:DW (zero_extend:DW
-	           (match_operand:<DWH> 1 "register_operand"     "%0,0"))
-                 (zero_extend:DW
-	           (match_operand:<DWH> 2 "nonimmediate_operand" " d,T"))))]
+(define_insn "umulditi3"
+  [(set (match_operand:TI 0 "register_operand"                   "=d,d")
+        (mult:TI (zero_extend:TI
+	           (match_operand:DI 1 "register_operand"        "%0,0"))
+                 (zero_extend:TI
+	           (match_operand:DI 2 "nonimmediate_operand"    " d,T"))))]
   ""
   "@
-   ml<tg>r\t%0,%2
-   ml<tg>\t%0,%2"
+   mlgr\t%0,%2
+   mlg\t%0,%2"
   [(set_attr "op_type"  "RRE,RXY")
-   (set_attr "type"     "imul<dwh>")])
+   (set_attr "type"     "imuldi")])
 
 ;
 ; mul(tf|df|sf|td|dd)3 instruction pattern(s).
@@ -7844,7 +7245,7 @@
 	      (set (match_operand:DI 3 "general_operand" "")
 		   (mod:DI (match_dup 1) (match_dup 2)))])
    (clobber (match_dup 4))]
-  "TARGET_ZARCH"
+  ""
 {
   rtx div_equal, mod_equal;
   rtx_insn *insn;
@@ -7873,7 +7274,7 @@
                       (match_operand:DI 2 "general_operand" "d,T")))
             (const_int 64))
           (zero_extend:TI (div:DI (match_dup 1) (match_dup 2)))))]
-  "TARGET_ZARCH"
+  ""
   "@
    dsgr\t%0,%2
    dsg\t%0,%2"
@@ -7889,193 +7290,73 @@
                       (sign_extend:DI
                         (match_operand:SI 2 "nonimmediate_operand" "d,T"))))
             (const_int 64))
-          (zero_extend:TI
-            (div:DI (match_dup 1) (sign_extend:DI (match_dup 2))))))]
-  "TARGET_ZARCH"
-  "@
-   dsgfr\t%0,%2
-   dsgf\t%0,%2"
-  [(set_attr "op_type"  "RRE,RXY")
-   (set_attr "type"     "idiv")])
-
-;
-; udivmoddi4 instruction pattern(s).
-;
-
-(define_expand "udivmoddi4"
-  [(parallel [(set (match_operand:DI 0 "general_operand" "")
-		   (udiv:DI (match_operand:DI 1 "general_operand" "")
-			    (match_operand:DI 2 "nonimmediate_operand" "")))
-	      (set (match_operand:DI 3 "general_operand" "")
-		   (umod:DI (match_dup 1) (match_dup 2)))])
-   (clobber (match_dup 4))]
-  "TARGET_ZARCH"
-{
-  rtx div_equal, mod_equal, equal;
-  rtx_insn *insn;
-
-  div_equal = gen_rtx_UDIV (DImode, operands[1], operands[2]);
-  mod_equal = gen_rtx_UMOD (DImode, operands[1], operands[2]);
-  equal = gen_rtx_IOR (TImode,
-		       gen_rtx_ASHIFT (TImode,
-				       gen_rtx_ZERO_EXTEND (TImode, mod_equal),
-				       GEN_INT (64)),
-		       gen_rtx_ZERO_EXTEND (TImode, div_equal));
-
-  operands[4] = gen_reg_rtx(TImode);
-  emit_clobber (operands[4]);
-  emit_move_insn (gen_lowpart (DImode, operands[4]), operands[1]);
-  emit_move_insn (gen_highpart (DImode, operands[4]), const0_rtx);
-
-  insn = emit_insn (gen_udivmodtidi3 (operands[4], operands[4], operands[2]));
-  set_unique_reg_note (insn, REG_EQUAL, equal);
-
-  insn = emit_move_insn (operands[0], gen_lowpart (DImode, operands[4]));
-  set_unique_reg_note (insn, REG_EQUAL, div_equal);
-
-  insn = emit_move_insn (operands[3], gen_highpart (DImode, operands[4]));
-  set_unique_reg_note (insn, REG_EQUAL, mod_equal);
-
-  DONE;
-})
-
-(define_insn "udivmodtidi3"
-  [(set (match_operand:TI 0 "register_operand" "=d,d")
-        (ior:TI
-          (ashift:TI
-            (zero_extend:TI
-              (truncate:DI
-                (umod:TI (match_operand:TI 1 "register_operand" "0,0")
-                         (zero_extend:TI
-                           (match_operand:DI 2 "nonimmediate_operand" "d,T")))))
-            (const_int 64))
-          (zero_extend:TI
-            (truncate:DI
-              (udiv:TI (match_dup 1) (zero_extend:TI (match_dup 2)))))))]
-  "TARGET_ZARCH"
-  "@
-   dlgr\t%0,%2
-   dlg\t%0,%2"
-  [(set_attr "op_type"  "RRE,RXY")
-   (set_attr "type"     "idiv")])
-
-;
-; divmodsi4 instruction pattern(s).
-;
-
-(define_expand "divmodsi4"
-  [(parallel [(set (match_operand:SI 0 "general_operand" "")
-		   (div:SI (match_operand:SI 1 "general_operand" "")
-			   (match_operand:SI 2 "nonimmediate_operand" "")))
-	      (set (match_operand:SI 3 "general_operand" "")
-		   (mod:SI (match_dup 1) (match_dup 2)))])
-   (clobber (match_dup 4))]
-  "!TARGET_ZARCH"
-{
-  rtx div_equal, mod_equal, equal;
-  rtx_insn *insn;
-
-  div_equal = gen_rtx_DIV (SImode, operands[1], operands[2]);
-  mod_equal = gen_rtx_MOD (SImode, operands[1], operands[2]);
-  equal = gen_rtx_IOR (DImode,
-		       gen_rtx_ASHIFT (DImode,
-				       gen_rtx_ZERO_EXTEND (DImode, mod_equal),
-				       GEN_INT (32)),
-		       gen_rtx_ZERO_EXTEND (DImode, div_equal));
-
-  operands[4] = gen_reg_rtx(DImode);
-  emit_insn (gen_extendsidi2 (operands[4], operands[1]));
-
-  insn = emit_insn (gen_divmoddisi3 (operands[4], operands[4], operands[2]));
-  set_unique_reg_note (insn, REG_EQUAL, equal);
-
-  insn = emit_move_insn (operands[0], gen_lowpart (SImode, operands[4]));
-  set_unique_reg_note (insn, REG_EQUAL, div_equal);
-
-  insn = emit_move_insn (operands[3], gen_highpart (SImode, operands[4]));
-  set_unique_reg_note (insn, REG_EQUAL, mod_equal);
-
-  DONE;
-})
-
-(define_insn "divmoddisi3"
-  [(set (match_operand:DI 0 "register_operand" "=d,d")
-        (ior:DI
-          (ashift:DI
-            (zero_extend:DI
-              (truncate:SI
-                (mod:DI (match_operand:DI 1 "register_operand" "0,0")
-                        (sign_extend:DI
-                          (match_operand:SI 2 "nonimmediate_operand" "d,R")))))
-            (const_int 32))
-          (zero_extend:DI
-            (truncate:SI
-              (div:DI (match_dup 1) (sign_extend:DI (match_dup 2)))))))]
-  "!TARGET_ZARCH"
-  "@
-   dr\t%0,%2
-   d\t%0,%2"
-  [(set_attr "op_type"  "RR,RX")
+          (zero_extend:TI
+            (div:DI (match_dup 1) (sign_extend:DI (match_dup 2))))))]
+  ""
+  "@
+   dsgfr\t%0,%2
+   dsgf\t%0,%2"
+  [(set_attr "op_type"  "RRE,RXY")
    (set_attr "type"     "idiv")])
 
 ;
-; udivsi3 and umodsi3 instruction pattern(s).
+; udivmoddi4 instruction pattern(s).
 ;
 
-(define_expand "udivmodsi4"
-  [(parallel [(set (match_operand:SI 0 "general_operand" "")
-		   (udiv:SI (match_operand:SI 1 "general_operand" "")
-			    (match_operand:SI 2 "nonimmediate_operand" "")))
-	      (set (match_operand:SI 3 "general_operand" "")
-		   (umod:SI (match_dup 1) (match_dup 2)))])
+(define_expand "udivmoddi4"
+  [(parallel [(set (match_operand:DI 0 "general_operand" "")
+		   (udiv:DI (match_operand:DI 1 "general_operand" "")
+			    (match_operand:DI 2 "nonimmediate_operand" "")))
+	      (set (match_operand:DI 3 "general_operand" "")
+		   (umod:DI (match_dup 1) (match_dup 2)))])
    (clobber (match_dup 4))]
-  "!TARGET_ZARCH"
+  ""
 {
   rtx div_equal, mod_equal, equal;
   rtx_insn *insn;
 
-  div_equal = gen_rtx_UDIV (SImode, operands[1], operands[2]);
-  mod_equal = gen_rtx_UMOD (SImode, operands[1], operands[2]);
-  equal = gen_rtx_IOR (DImode,
-		       gen_rtx_ASHIFT (DImode,
-				       gen_rtx_ZERO_EXTEND (DImode, mod_equal),
-				       GEN_INT (32)),
-		       gen_rtx_ZERO_EXTEND (DImode, div_equal));
+  div_equal = gen_rtx_UDIV (DImode, operands[1], operands[2]);
+  mod_equal = gen_rtx_UMOD (DImode, operands[1], operands[2]);
+  equal = gen_rtx_IOR (TImode,
+		       gen_rtx_ASHIFT (TImode,
+				       gen_rtx_ZERO_EXTEND (TImode, mod_equal),
+				       GEN_INT (64)),
+		       gen_rtx_ZERO_EXTEND (TImode, div_equal));
 
-  operands[4] = gen_reg_rtx(DImode);
+  operands[4] = gen_reg_rtx(TImode);
   emit_clobber (operands[4]);
-  emit_move_insn (gen_lowpart (SImode, operands[4]), operands[1]);
-  emit_move_insn (gen_highpart (SImode, operands[4]), const0_rtx);
+  emit_move_insn (gen_lowpart (DImode, operands[4]), operands[1]);
+  emit_move_insn (gen_highpart (DImode, operands[4]), const0_rtx);
 
-  insn = emit_insn (gen_udivmoddisi3 (operands[4], operands[4], operands[2]));
+  insn = emit_insn (gen_udivmodtidi3 (operands[4], operands[4], operands[2]));
   set_unique_reg_note (insn, REG_EQUAL, equal);
 
-  insn = emit_move_insn (operands[0], gen_lowpart (SImode, operands[4]));
+  insn = emit_move_insn (operands[0], gen_lowpart (DImode, operands[4]));
   set_unique_reg_note (insn, REG_EQUAL, div_equal);
 
-  insn = emit_move_insn (operands[3], gen_highpart (SImode, operands[4]));
+  insn = emit_move_insn (operands[3], gen_highpart (DImode, operands[4]));
   set_unique_reg_note (insn, REG_EQUAL, mod_equal);
 
   DONE;
 })
 
-(define_insn "udivmoddisi3"
-  [(set (match_operand:DI 0 "register_operand" "=d,d")
-        (ior:DI
-          (ashift:DI
-            (zero_extend:DI
-              (truncate:SI
-                (umod:DI (match_operand:DI 1 "register_operand" "0,0")
-                         (zero_extend:DI
-                           (match_operand:SI 2 "nonimmediate_operand" "d,T")))))
-            (const_int 32))
-          (zero_extend:DI
-            (truncate:SI
-              (udiv:DI (match_dup 1) (zero_extend:DI (match_dup 2)))))))]
-  "!TARGET_ZARCH"
-  "@
-   dlr\t%0,%2
-   dl\t%0,%2"
+(define_insn "udivmodtidi3"
+  [(set (match_operand:TI 0 "register_operand" "=d,d")
+        (ior:TI
+          (ashift:TI
+            (zero_extend:TI
+              (truncate:DI
+                (umod:TI (match_operand:TI 1 "register_operand" "0,0")
+                         (zero_extend:TI
+                           (match_operand:DI 2 "nonimmediate_operand" "d,T")))))
+            (const_int 64))
+          (zero_extend:TI
+            (truncate:DI
+              (udiv:TI (match_dup 1) (zero_extend:TI (match_dup 2)))))))]
+  ""
+  "@
+   dlgr\t%0,%2
+   dlg\t%0,%2"
   [(set_attr "op_type"  "RRE,RXY")
    (set_attr "type"     "idiv")])
 
@@ -8125,7 +7406,7 @@
           (const_int 0)))
    (set (match_operand:DI 0 "register_operand"               "=d,d,d,    d")
         (and:DI (match_dup 1) (match_dup 2)))]
-  "TARGET_ZARCH && s390_match_ccmode(insn, CCTmode)"
+  "s390_match_ccmode(insn, CCTmode)"
   "@
    ngr\t%0,%2
    ngrk\t%0,%1,%2
@@ -8142,8 +7423,7 @@
                   (match_operand:DI 2 "general_operand"      " d,d,T,NxxDw"))
                  (const_int 0)))
    (clobber (match_scratch:DI 0                              "=d,d,d,    d"))]
-  "TARGET_ZARCH
-   && s390_match_ccmode(insn, CCTmode)
+  "s390_match_ccmode(insn, CCTmode)
    /* Do not steal TM patterns.  */
    && s390_single_part (operands[2], DImode, HImode, 0) < 0"
   "@
@@ -8164,7 +7444,7 @@
           (match_operand:DI 2 "general_operand"
             "M, M,N0HDF,N1HDF,N2HDF,N3HDF,N0SDF,N1SDF,d,d,T,NxxDw,NxQDF,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    #
    #
@@ -8209,11 +7489,11 @@
 
 ;; These two are what combine generates for (ashift (zero_extract)).
 (define_insn "*extzv_<mode>_srl<clobbercc_or_nocc>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(and:GPR (lshiftrt:GPR
-		   (match_operand:GPR 1 "register_operand" "d")
-		   (match_operand:GPR 2 "nonzero_shift_count_operand" ""))
-		(match_operand:GPR 3 "contiguous_bitmask_nowrap_operand" "")))]
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(and:DSI (lshiftrt:DSI
+		   (match_operand:DSI 1 "register_operand" "d")
+		   (match_operand:DSI 2 "nonzero_shift_count_operand" ""))
+		(match_operand:DSI 3 "contiguous_bitmask_nowrap_operand" "")))]
   "<z10_or_zEC12_cond>
    /* Note that even for the SImode pattern, the rotate is always DImode.  */
    && s390_extzv_shift_ok (<bitsize>, -INTVAL (operands[2]),
@@ -8239,11 +7519,11 @@
    (set_attr "mnemonic" "<risbg_n>")])
 
 (define_insn "*extzv_<mode>_sll<clobbercc_or_nocc>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(and:GPR (ashift:GPR
-		  (match_operand:GPR 1 "register_operand" "d")
-		  (match_operand:GPR 2 "nonzero_shift_count_operand" ""))
-		(match_operand:GPR 3 "contiguous_bitmask_nowrap_operand" "")))]
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(and:DSI (ashift:DSI
+		  (match_operand:DSI 1 "register_operand" "d")
+		  (match_operand:DSI 2 "nonzero_shift_count_operand" ""))
+		(match_operand:DSI 3 "contiguous_bitmask_nowrap_operand" "")))]
   "<z10_or_zEC12_cond>
    && s390_extzv_shift_ok (<bitsize>, INTVAL (operands[2]),
 			   INTVAL (operands[3]))
@@ -8312,7 +7592,7 @@
    (set_attr "z10prop" "z10_super_E1,z10_super_E1,*,
                         z10_super_E1,z10_super_E1,z10_super_E1")])
 
-(define_insn "*andsi3_zarch"
+(define_insn "*andsi3"
   [(set (match_operand:SI 0 "nonimmediate_operand"
                             "=d,d,    d,    d, d,d,d,d,d,    d,   AQ,Q")
         (and:SI (match_operand:SI 1 "nonimmediate_operand"
@@ -8320,7 +7600,7 @@
                 (match_operand:SI 2 "general_operand"
 			    " M,M,N0HSF,N1HSF,Os,d,d,R,T,NxxSw,NxQSF,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    #
    #
@@ -8349,21 +7629,6 @@
                         *,
                         *")])
 
-(define_insn "*andsi3_esa"
-  [(set (match_operand:SI 0 "nonimmediate_operand"         "=d,d,   AQ,Q")
-        (and:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,    0,0")
-                (match_operand:SI 2 "general_operand"      " d,R,NxQSF,Q")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
-  "@
-   nr\t%0,%2
-   n\t%0,%2
-   #
-   #"
-  [(set_attr "op_type"  "RR,RX,SI,SS")
-   (set_attr "z10prop" "z10_super_E1,z10_super_E1,*,*")])
-
-
 (define_split
   [(set (match_operand:SI 0 "s_operand" "")
         (and:SI (match_dup 0) (match_operand:SI 1 "immediate_operand" "")))
@@ -8378,12 +7643,12 @@
 ; andhi3 instruction pattern(s).
 ;
 
-(define_insn "*andhi3_zarch"
+(define_insn "*andhi3"
   [(set (match_operand:HI 0 "nonimmediate_operand"         "=d,d,d,   AQ,Q")
         (and:HI (match_operand:HI 1 "nonimmediate_operand" "%0,d,0,    0,0")
                 (match_operand:HI 2 "general_operand"      " d,d,n,NxQHF,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    nr\t%0,%2
    nrk\t%0,%1,%2
@@ -8395,20 +7660,6 @@
    (set_attr "z10prop" "z10_super_E1,*,z10_super_E1,*,*")
 ])
 
-(define_insn "*andhi3_esa"
-  [(set (match_operand:HI 0 "nonimmediate_operand" "=d,AQ,Q")
-        (and:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0,0")
-                (match_operand:HI 2 "general_operand" "d,NxQHF,Q")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
-  "@
-   nr\t%0,%2
-   #
-   #"
-  [(set_attr "op_type"  "RR,SI,SS")
-   (set_attr "z10prop" "z10_super_E1,*,*")
-])
-
 (define_split
   [(set (match_operand:HI 0 "s_operand" "")
         (and:HI (match_dup 0) (match_operand:HI 1 "immediate_operand" "")))
@@ -8423,12 +7674,12 @@
 ; andqi3 instruction pattern(s).
 ;
 
-(define_insn "*andqi3_zarch"
+(define_insn "*andqi3"
   [(set (match_operand:QI 0 "nonimmediate_operand"         "=d,d,d,Q,S,Q")
         (and:QI (match_operand:QI 1 "nonimmediate_operand" "%0,d,0,0,0,0")
                 (match_operand:QI 2 "general_operand"      " d,d,n,n,n,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    nr\t%0,%2
    nrk\t%0,%1,%2
@@ -8440,28 +7691,15 @@
    (set_attr "cpu_facility" "*,z196,*,*,longdisp,*")
    (set_attr "z10prop" "z10_super_E1,*,z10_super_E1,z10_super,z10_super,*")])
 
-(define_insn "*andqi3_esa"
-  [(set (match_operand:QI 0 "nonimmediate_operand" "=d,Q,Q")
-        (and:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0")
-                (match_operand:QI 2 "general_operand" "d,n,Q")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
-  "@
-   nr\t%0,%2
-   ni\t%S0,%b2
-   #"
-  [(set_attr "op_type"  "RR,SI,SS")
-   (set_attr "z10prop" "z10_super_E1,z10_super,*")])
-
 ;
 ; And with complement
 ;
 ; c = ~b & a = (b & a) ^ a
 
 (define_insn_and_split "*andc_split_<mode>"
-  [(set (match_operand:GPR 0 "nonimmediate_operand" "")
-	(and:GPR (not:GPR (match_operand:GPR 1 "nonimmediate_operand" ""))
-		 (match_operand:GPR 2 "general_operand" "")))
+  [(set (match_operand:DSI 0 "nonimmediate_operand" "")
+	(and:DSI (not:DSI (match_operand:DSI 1 "nonimmediate_operand" ""))
+		 (match_operand:DSI 2 "general_operand" "")))
    (clobber (reg:CC CC_REGNUM))]
   "!TARGET_Z15
    && ! reload_completed
@@ -8473,10 +7711,10 @@
   "&& 1"
   [
   (parallel
-   [(set (match_dup 3) (and:GPR (match_dup 1) (match_dup 2)))
+   [(set (match_dup 3) (and:DSI (match_dup 1) (match_dup 2)))
    (clobber (reg:CC CC_REGNUM))])
   (parallel
-   [(set (match_dup 0) (xor:GPR (match_dup 3) (match_dup 2)))
+   [(set (match_dup 0) (xor:DSI (match_dup 3) (match_dup 2)))
    (clobber (reg:CC CC_REGNUM))])]
 {
   if (reg_overlap_mentioned_p (operands[0], operands[2]))
@@ -8568,7 +7806,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand"                      "=d,d,d")
         (ior:DI (match_dup 1) (match_dup 2)))]
-  "s390_match_ccmode(insn, CCTmode) && TARGET_ZARCH"
+  "s390_match_ccmode(insn, CCTmode)"
   "@
    ogr\t%0,%2
    ogrk\t%0,%1,%2
@@ -8583,7 +7821,7 @@
                          (match_operand:DI 2 "general_operand"      " d,d,T"))
                  (const_int 0)))
    (clobber (match_scratch:DI 0                                     "=d,d,d"))]
-  "s390_match_ccmode(insn, CCTmode) && TARGET_ZARCH"
+  "s390_match_ccmode(insn, CCTmode)"
   "@
    ogr\t%0,%2
    ogrk\t%0,%1,%2
@@ -8600,7 +7838,7 @@
                 (match_operand:DI 2 "general_operand"
                             "N0HD0,N1HD0,N2HD0,N3HD0,N0SD0,N1SD0,d,d,T,NxQD0,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    oihh\t%0,%i2
    oihl\t%0,%i2
@@ -8676,12 +7914,12 @@
    (set_attr "cpu_facility" "*,*,z196,*,longdisp")
    (set_attr "z10prop" "z10_super_E1,z10_super_E1,*,z10_super_E1,z10_super_E1")])
 
-(define_insn "*iorsi3_zarch"
+(define_insn "*iorsi3"
   [(set (match_operand:SI 0 "nonimmediate_operand"         "=d,    d, d,d,d,d,d,   AQ,Q")
         (ior:SI (match_operand:SI 1 "nonimmediate_operand" "%0,    0, 0,0,d,0,0,    0,0")
                 (match_operand:SI 2 "general_operand"   "N0HS0,N1HS0,Os,d,d,R,T,NxQS0,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    oilh\t%0,%i2
    oill\t%0,%i2
@@ -8704,20 +7942,6 @@
                         *,
                         *")])
 
-(define_insn "*iorsi3_esa"
-  [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,AQ,Q")
-        (ior:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,0,0")
-                (match_operand:SI 2 "general_operand" "d,R,NxQS0,Q")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
-  "@
-   or\t%0,%2
-   o\t%0,%2
-   #
-   #"
-  [(set_attr "op_type"  "RR,RX,SI,SS")
-   (set_attr "z10prop" "z10_super_E1,z10_super_E1,*,*")])
-
 (define_split
   [(set (match_operand:SI 0 "s_operand" "")
         (ior:SI (match_dup 0) (match_operand:SI 1 "immediate_operand" "")))
@@ -8732,12 +7956,12 @@
 ; iorhi3 instruction pattern(s).
 ;
 
-(define_insn "*iorhi3_zarch"
+(define_insn "*iorhi3"
   [(set (match_operand:HI 0 "nonimmediate_operand"         "=d,d,d,   AQ,Q")
         (ior:HI (match_operand:HI 1 "nonimmediate_operand" "%0,d,0,    0,0")
                 (match_operand:HI 2 "general_operand"      " d,d,n,NxQH0,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    or\t%0,%2
    ork\t%0,%1,%2
@@ -8748,19 +7972,6 @@
    (set_attr "cpu_facility" "*,z196,*,*,*")
    (set_attr "z10prop" "z10_super_E1,*,z10_super_E1,*,*")])
 
-(define_insn "*iorhi3_esa"
-  [(set (match_operand:HI 0 "nonimmediate_operand" "=d,AQ,Q")
-        (ior:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0,0")
-                (match_operand:HI 2 "general_operand" "d,NxQH0,Q")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
-  "@
-   or\t%0,%2
-   #
-   #"
-  [(set_attr "op_type"  "RR,SI,SS")
-   (set_attr "z10prop" "z10_super_E1,*,*")])
-
 (define_split
   [(set (match_operand:HI 0 "s_operand" "")
         (ior:HI (match_dup 0) (match_operand:HI 1 "immediate_operand" "")))
@@ -8775,12 +7986,12 @@
 ; iorqi3 instruction pattern(s).
 ;
 
-(define_insn "*iorqi3_zarch"
+(define_insn "*iorqi3"
   [(set (match_operand:QI 0 "nonimmediate_operand"         "=d,d,d,Q,S,Q")
         (ior:QI (match_operand:QI 1 "nonimmediate_operand" "%0,d,0,0,0,0")
                 (match_operand:QI 2 "general_operand"      " d,d,n,n,n,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    or\t%0,%2
    ork\t%0,%1,%2
@@ -8793,57 +8004,44 @@
    (set_attr "z10prop" "z10_super_E1,*,z10_super_E1,
                         z10_super,z10_super,*")])
 
-(define_insn "*iorqi3_esa"
-  [(set (match_operand:QI 0 "nonimmediate_operand" "=d,Q,Q")
-        (ior:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0")
-                (match_operand:QI 2 "general_operand" "d,n,Q")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
-  "@
-   or\t%0,%2
-   oi\t%S0,%b2
-   #"
-  [(set_attr "op_type"  "RR,SI,SS")
-   (set_attr "z10prop" "z10_super_E1,z10_super,*")])
-
 ;
 ; And/Or with complement
 ;
 
 ; ncrk, ncgrk, ocrk, ocgrk
-(define_insn "*<ANDOR:bitops_name>c<GPR:mode>_cc"
+(define_insn "*<ANDOR:bitops_name>c<DSI:mode>_cc"
   [(set (reg CC_REGNUM)
 	(compare
-	 (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
-		    (match_operand:GPR 2 "register_operand" "d"))
+	 (ANDOR:DSI (not:DSI (match_operand:DSI 1 "register_operand" "d"))
+		    (match_operand:DSI 2 "register_operand" "d"))
 	 (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d")
-	(ANDOR:GPR (not:GPR (match_dup 1))
+   (set (match_operand:DSI 0 "register_operand" "=d")
+	(ANDOR:DSI (not:DSI (match_dup 1))
 		   (match_dup 2)))]
   "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
-  "<ANDOR:noxa>c<GPR:g>rk\t%0,%2,%1"
+  "<ANDOR:noxa>c<DSI:g>rk\t%0,%2,%1"
   [(set_attr "op_type" "RRF")])
 
 ; ncrk, ncgrk, ocrk, ocgrk
-(define_insn "*<ANDOR:bitops_name>c<GPR:mode>_cconly"
+(define_insn "*<ANDOR:bitops_name>c<DSI:mode>_cconly"
   [(set (reg CC_REGNUM)
 	(compare
-	 (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
-		    (match_operand:GPR 2 "register_operand" "d"))
+	 (ANDOR:DSI (not:DSI (match_operand:DSI 1 "register_operand" "d"))
+		    (match_operand:DSI 2 "register_operand" "d"))
 	 (const_int 0)))
-   (clobber (match_scratch:GPR 0 "=d"))]
+   (clobber (match_scratch:DSI 0 "=d"))]
   "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
-  "<ANDOR:noxa>c<GPR:g>rk\t%0,%2,%1"
+  "<ANDOR:noxa>c<DSI:g>rk\t%0,%2,%1"
   [(set_attr "op_type" "RRF")])
 
 ; ncrk, ncgrk, ocrk, ocgrk
-(define_insn "*<ANDOR:bitops_name>c<GPR:mode>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
-		   (match_operand:GPR 2 "register_operand" "d")))
+(define_insn "*<ANDOR:bitops_name>c<DSI:mode>"
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(ANDOR:DSI (not:DSI (match_operand:DSI 1 "register_operand" "d"))
+		   (match_operand:DSI 2 "register_operand" "d")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z15"
-  "<ANDOR:noxa>c<GPR:g>rk\t%0,%2,%1"
+  "<ANDOR:noxa>c<DSI:g>rk\t%0,%2,%1"
   [(set_attr "op_type" "RRF")])
 
 ;
@@ -8851,48 +8049,48 @@
 ;
 
 ; nnrk, nngrk, nork, nogrk
-(define_insn "*n<ANDOR:inv_bitops_name><GPR:mode>_cc"
+(define_insn "*n<ANDOR:inv_bitops_name><DSI:mode>_cc"
   [(set (reg CC_REGNUM)
 	(compare
-	 (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
-		    (not:GPR (match_operand:GPR 2 "register_operand" "d")))
+	 (ANDOR:DSI (not:DSI (match_operand:DSI 1 "register_operand" "d"))
+		    (not:DSI (match_operand:DSI 2 "register_operand" "d")))
 	 (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d")
-	(ANDOR:GPR (not:GPR (match_dup 1))
-		   (not:GPR (match_dup 2))))]
+   (set (match_operand:DSI 0 "register_operand" "=d")
+	(ANDOR:DSI (not:DSI (match_dup 1))
+		   (not:DSI (match_dup 2))))]
   "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
-  "n<ANDOR:inv_no><GPR:g>rk\t%0,%1,%2"
+  "n<ANDOR:inv_no><DSI:g>rk\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
 ; nnrk, nngrk, nork, nogrk
 (define_insn "*n<ANDOR:inv_bitops_name><mode>_cconly"
   [(set (reg CC_REGNUM)
 	(compare
-	 (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
-		    (not:GPR (match_operand:GPR 2 "register_operand" "d")))
+	 (ANDOR:DSI (not:DSI (match_operand:DSI 1 "register_operand" "d"))
+		    (not:DSI (match_operand:DSI 2 "register_operand" "d")))
 	 (const_int 0)))
-   (clobber (match_scratch:GPR 0 "=d"))]
+   (clobber (match_scratch:DSI 0 "=d"))]
   "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
-  "n<ANDOR:inv_no><GPR:g>rk\t%0,%1,%2"
+  "n<ANDOR:inv_no><DSI:g>rk\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
 ; nnrk, nngrk, nork, nogrk
 (define_insn "*n<ANDOR:inv_bitops_name><mode>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
-		   (not:GPR (match_operand:GPR 2 "register_operand" "d"))))
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(ANDOR:DSI (not:DSI (match_operand:DSI 1 "register_operand" "d"))
+		   (not:DSI (match_operand:DSI 2 "register_operand" "d"))))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z15"
-  "n<ANDOR:inv_no><GPR:g>rk\t%0,%1,%2"
+  "n<ANDOR:inv_no><DSI:g>rk\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
 ; Use NAND for bit inversion
 (define_insn "*not<mode>"
-  [(set (match_operand:GPR          0 "register_operand" "=d")
-	(not:GPR (match_operand:GPR 1 "register_operand"  "d")))
+  [(set (match_operand:DSI          0 "register_operand" "=d")
+	(not:DSI (match_operand:DSI 1 "register_operand"  "d")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z15"
-  "nn<GPR:g>rk\t%0,%1,%1"
+  "nn<DSI:g>rk\t%0,%1,%1"
   [(set_attr "op_type" "RRF")])
 
 ;
@@ -8993,7 +8191,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand"                      "=d,d,d")
         (xor:DI (match_dup 1) (match_dup 2)))]
-  "s390_match_ccmode(insn, CCTmode) && TARGET_ZARCH"
+  "s390_match_ccmode(insn, CCTmode)"
   "@
    xgr\t%0,%2
    xgrk\t%0,%1,%2
@@ -9008,7 +8206,7 @@
                          (match_operand:DI 2 "general_operand"      " d,d,T"))
                  (const_int 0)))
    (clobber (match_scratch:DI 0                                     "=d,d,d"))]
-  "s390_match_ccmode(insn, CCTmode) && TARGET_ZARCH"
+  "s390_match_ccmode(insn, CCTmode)"
   "@
    xgr\t%0,%2
    xgrk\t%0,%1,%2
@@ -9022,7 +8220,7 @@
         (xor:DI (match_operand:DI 1 "nonimmediate_operand" "%0,    0,0,d,0,    0,0")
                 (match_operand:DI 2 "general_operand"   "N0SD0,N1SD0,d,d,T,NxQD0,Q")))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH && s390_logical_operator_ok_p (operands)"
+  "s390_logical_operator_ok_p (operands)"
   "@
    xihf\t%0,%k2
    xilf\t%0,%k2
@@ -9265,39 +8463,39 @@
 ;
 
 ; nxrk, nxgrk
-(define_insn "*nxor<GPR:mode>_cc"
+(define_insn "*nxor<DSI:mode>_cc"
   [(set (reg CC_REGNUM)
 	(compare
-	 (not:GPR (xor:GPR (match_operand:GPR 1 "register_operand" "d")
-			   (match_operand:GPR 2 "register_operand" "d")))
+	 (not:DSI (xor:DSI (match_operand:DSI 1 "register_operand" "d")
+			   (match_operand:DSI 2 "register_operand" "d")))
 	 (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d")
-	(xor:GPR (not:GPR (match_dup 1))
+   (set (match_operand:DSI 0 "register_operand" "=d")
+	(xor:DSI (not:DSI (match_dup 1))
 		    (match_dup 2)))]
   "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
-  "nx<GPR:g>rk\t%0,%1,%2"
+  "nx<DSI:g>rk\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
 ; nxrk, nxgrk
 (define_insn "*nxor<mode>_cconly"
   [(set (reg CC_REGNUM)
 	(compare
-	 (not:GPR (xor:GPR (match_operand:GPR 1 "register_operand" "d")
-			   (match_operand:GPR 2 "register_operand" "d")))
+	 (not:DSI (xor:DSI (match_operand:DSI 1 "register_operand" "d")
+			   (match_operand:DSI 2 "register_operand" "d")))
 	 (const_int 0)))
-   (clobber (match_scratch:GPR 0 "=d"))]
+   (clobber (match_scratch:DSI 0 "=d"))]
   "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
-  "nx<GPR:g>rk\t%0,%1,%2"
+  "nx<DSI:g>rk\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
 ; nxrk, nxgrk
 (define_insn "*nxor<mode>"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(not:GPR (xor:GPR (match_operand:GPR 1 "register_operand" "d")
-			  (match_operand:GPR 2 "register_operand" "d"))))
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(not:DSI (xor:DSI (match_operand:DSI 1 "register_operand" "d")
+			  (match_operand:DSI 2 "register_operand" "d"))))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z15"
-  "nx<GPR:g>rk\t%0,%1,%2"
+  "nx<DSI:g>rk\t%0,%1,%2"
   [(set_attr "op_type" "RRF")])
 
 ;;
@@ -9324,7 +8522,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=d")
         (neg:DI (sign_extend:DI (match_dup 1))))]
-  "TARGET_ZARCH && s390_match_ccmode (insn, CCAmode)"
+  "s390_match_ccmode (insn, CCAmode)"
   "lcgfr\t%0,%1"
   [(set_attr "op_type"  "RRE")
    (set_attr "z10prop" "z10_c")])
@@ -9333,7 +8531,7 @@
   [(set (match_operand:DI 0 "register_operand" "=d")
         (neg:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "d"))))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "lcgfr\t%0,%1"
   [(set_attr "op_type"  "RRE")
    (set_attr "z10prop" "z10_c")])
@@ -9341,10 +8539,10 @@
 ; lcr, lcgr
 (define_insn "*neg<mode>2_cc"
   [(set (reg CC_REGNUM)
-        (compare (neg:GPR (match_operand:GPR 1 "register_operand" "d"))
+        (compare (neg:DSI (match_operand:DSI 1 "register_operand" "d"))
                  (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d")
-        (neg:GPR (match_dup 1)))]
+   (set (match_operand:DSI 0 "register_operand" "=d")
+        (neg:DSI (match_dup 1)))]
   "s390_match_ccmode (insn, CCAmode)"
   "lc<g>r\t%0,%1"
   [(set_attr "op_type"  "RR<E>")
@@ -9353,9 +8551,9 @@
 ; lcr, lcgr
 (define_insn "*neg<mode>2_cconly"
   [(set (reg CC_REGNUM)
-        (compare (neg:GPR (match_operand:GPR 1 "register_operand" "d"))
+        (compare (neg:DSI (match_operand:DSI 1 "register_operand" "d"))
                  (const_int 0)))
-   (clobber (match_scratch:GPR 0 "=d"))]
+   (clobber (match_scratch:DSI 0 "=d"))]
   "s390_match_ccmode (insn, CCAmode)"
   "lc<g>r\t%0,%1"
   [(set_attr "op_type"  "RR<E>")
@@ -9363,91 +8561,14 @@
 
 ; lcr, lcgr
 (define_insn "*neg<mode>2"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-        (neg:GPR (match_operand:GPR 1 "register_operand" "d")))
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+        (neg:DSI (match_operand:DSI 1 "register_operand" "d")))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "lc<g>r\t%0,%1"
   [(set_attr "op_type"  "RR<E>")
    (set_attr "z10prop" "z10_super_c_E1")])
 
-(define_insn "*negdi2_31"
-  [(set (match_operand:DI 0 "register_operand" "=d")
-        (neg:DI (match_operand:DI 1 "register_operand" "d")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH"
-  "#")
-
-; Split a DImode NEG on 31bit into 2 SImode NEGs
-
-; Doing the twos complement separately on the SImode parts does an
-; unwanted +1 on the high part which needs to be subtracted afterwards
-; ... unless the +1 on the low part created an overflow.
-
-(define_split
-  [(set (match_operand:DI 0 "register_operand" "")
-        (neg:DI (match_operand:DI 1 "register_operand" "")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH
-   && reload_completed
-   && ((REG_P (operands[0]) && REG_P (operands[1])
-       && REGNO (operands[0]) == REGNO (operands[1]))
-      || s390_split_ok_p (operands[0], operands[1], DImode, 0))"
-  [(parallel
-    [(set (match_dup 2) (neg:SI (match_dup 3)))
-     (clobber (reg:CC CC_REGNUM))])
-   (parallel
-    [(set (reg:CCAP CC_REGNUM)
-          (compare:CCAP (neg:SI (match_dup 5)) (const_int 0)))
-     (set (match_dup 4) (neg:SI (match_dup 5)))])
-   (set (pc)
-        (if_then_else (ne (reg:CCAP CC_REGNUM) (const_int 0))
-                      (pc)
-                      (label_ref (match_dup 6))))
-   (parallel
-    [(set (match_dup 2) (plus:SI (match_dup 2) (const_int -1)))
-     (clobber (reg:CC CC_REGNUM))])
-   (match_dup 6)]
-  "operands[2] = operand_subword (operands[0], 0, 0, DImode);
-   operands[3] = operand_subword (operands[1], 0, 0, DImode);
-   operands[4] = operand_subword (operands[0], 1, 0, DImode);
-   operands[5] = operand_subword (operands[1], 1, 0, DImode);
-   operands[6] = gen_label_rtx ();")
-
-; Like above but first make a copy of the low part of the src operand
-; since it might overlap with the high part of the destination.
-
-(define_split
-  [(set (match_operand:DI 0 "register_operand" "")
-        (neg:DI (match_operand:DI 1 "register_operand" "")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH
-   && s390_split_ok_p (operands[0], operands[1], DImode, 1)
-   && reload_completed"
-  [; Make a backup of op5 first
-   (set (match_dup 4) (match_dup 5))
-   ; Setting op2 here might clobber op5
-   (parallel
-    [(set (match_dup 2) (neg:SI (match_dup 3)))
-     (clobber (reg:CC CC_REGNUM))])
-   (parallel
-    [(set (reg:CCAP CC_REGNUM)
-          (compare:CCAP (neg:SI (match_dup 4)) (const_int 0)))
-     (set (match_dup 4) (neg:SI (match_dup 4)))])
-   (set (pc)
-        (if_then_else (ne (reg:CCAP CC_REGNUM) (const_int 0))
-                      (pc)
-                      (label_ref (match_dup 6))))
-   (parallel
-    [(set (match_dup 2) (plus:SI (match_dup 2) (const_int -1)))
-     (clobber (reg:CC CC_REGNUM))])
-   (match_dup 6)]
-  "operands[2] = operand_subword (operands[0], 0, 0, DImode);
-   operands[3] = operand_subword (operands[1], 0, 0, DImode);
-   operands[4] = operand_subword (operands[0], 1, 0, DImode);
-   operands[5] = operand_subword (operands[1], 1, 0, DImode);
-   operands[6] = gen_label_rtx ();")
-
 ;
 ; neg(tf|df|sf)2 instruction pattern(s).
 ;
@@ -9525,7 +8646,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=d")
         (abs:DI (sign_extend:DI (match_dup 1))))]
-  "TARGET_ZARCH && s390_match_ccmode (insn, CCAmode)"
+  "s390_match_ccmode (insn, CCAmode)"
   "lpgfr\t%0,%1"
   [(set_attr "op_type"  "RRE")
    (set_attr "z10prop" "z10_c")])
@@ -9534,7 +8655,7 @@
   [(set (match_operand:DI 0 "register_operand" "=d")
         (abs:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "d"))))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "lpgfr\t%0,%1"
   [(set_attr "op_type"  "RRE")
    (set_attr "z10prop" "z10_c")])
@@ -9542,10 +8663,10 @@
 ; lpr, lpgr
 (define_insn "*abs<mode>2_cc"
   [(set (reg CC_REGNUM)
-        (compare (abs:GPR (match_operand:DI 1 "register_operand" "d"))
+        (compare (abs:DSI (match_operand:DI 1 "register_operand" "d"))
                  (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d")
-        (abs:GPR (match_dup 1)))]
+   (set (match_operand:DSI 0 "register_operand" "=d")
+        (abs:DSI (match_dup 1)))]
   "s390_match_ccmode (insn, CCAmode)"
   "lp<g>r\t%0,%1"
   [(set_attr "op_type"  "RR<E>")
@@ -9554,9 +8675,9 @@
 ; lpr, lpgr
 (define_insn "*abs<mode>2_cconly"
   [(set (reg CC_REGNUM)
-        (compare (abs:GPR (match_operand:GPR 1 "register_operand" "d"))
+        (compare (abs:DSI (match_operand:DSI 1 "register_operand" "d"))
                  (const_int 0)))
-   (clobber (match_scratch:GPR 0 "=d"))]
+   (clobber (match_scratch:DSI 0 "=d"))]
   "s390_match_ccmode (insn, CCAmode)"
   "lp<g>r\t%0,%1"
   [(set_attr "op_type"  "RR<E>")
@@ -9564,8 +8685,8 @@
 
 ; lpr, lpgr
 (define_insn "abs<mode>2"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-        (abs:GPR (match_operand:GPR 1 "register_operand" "d")))
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+        (abs:DSI (match_operand:DSI 1 "register_operand" "d")))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "lp<g>r\t%0,%1"
@@ -9646,10 +8767,10 @@
 
 (define_expand "<minmaxname><mode>3"
   [(set (reg:<minmaxcc> CC_REGNUM)
-        (compare:<minmaxcc> (match_operand:GPR 1 "loc_operand")
-			    (match_operand:GPR 2 "loc_operand")))
-   (set (match_operand:GPR 0 "nonimmediate_operand")
-	(if_then_else:GPR (MINMAXOP (reg:<minmaxcc> CC_REGNUM) (const_int 0))
+        (compare:<minmaxcc> (match_operand:DSI 1 "loc_operand")
+			    (match_operand:DSI 2 "loc_operand")))
+   (set (match_operand:DSI 0 "nonimmediate_operand")
+	(if_then_else:DSI (MINMAXOP (reg:<minmaxcc> CC_REGNUM) (const_int 0))
 			  (match_dup 1)
 			  (match_dup 2)))]
   "TARGET_Z196")
@@ -9671,7 +8792,7 @@
                  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=d")
         (neg:DI (abs:DI (sign_extend:DI (match_dup 1)))))]
-  "TARGET_ZARCH && s390_match_ccmode (insn, CCAmode)"
+  "s390_match_ccmode (insn, CCAmode)"
   "lngfr\t%0,%1"
   [(set_attr "op_type"  "RRE")
    (set_attr "z10prop" "z10_c")])
@@ -9681,7 +8802,7 @@
 	(neg:DI (abs:DI (sign_extend:DI
                           (match_operand:SI 1 "register_operand" "d")))))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
   "lngfr\t%0,%1"
   [(set_attr "op_type" "RRE")
    (set_attr "z10prop" "z10_c")])
@@ -9689,10 +8810,10 @@
 ; lnr, lngr
 (define_insn "*negabs<mode>2_cc"
   [(set (reg CC_REGNUM)
-        (compare (neg:GPR (abs:GPR (match_operand:GPR 1 "register_operand" "d")))
+        (compare (neg:DSI (abs:DSI (match_operand:DSI 1 "register_operand" "d")))
                  (const_int 0)))
-   (set (match_operand:GPR 0 "register_operand" "=d")
-        (neg:GPR (abs:GPR (match_dup 1))))]
+   (set (match_operand:DSI 0 "register_operand" "=d")
+        (neg:DSI (abs:DSI (match_dup 1))))]
   "s390_match_ccmode (insn, CCAmode)"
   "ln<g>r\t%0,%1"
   [(set_attr "op_type"  "RR<E>")
@@ -9701,9 +8822,9 @@
 ; lnr, lngr
 (define_insn "*negabs<mode>2_cconly"
   [(set (reg CC_REGNUM)
-        (compare (neg:GPR (abs:GPR (match_operand:GPR 1 "register_operand" "d")))
+        (compare (neg:DSI (abs:DSI (match_operand:DSI 1 "register_operand" "d")))
                  (const_int 0)))
-   (clobber (match_scratch:GPR 0 "=d"))]
+   (clobber (match_scratch:DSI 0 "=d"))]
   "s390_match_ccmode (insn, CCAmode)"
   "ln<g>r\t%0,%1"
   [(set_attr "op_type"  "RR<E>")
@@ -9711,8 +8832,8 @@
 
 ; lnr, lngr
 (define_insn "*negabs<mode>2"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(neg:GPR (abs:GPR (match_operand:GPR 1 "register_operand" "d"))))
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(neg:DSI (abs:DSI (match_operand:DSI 1 "register_operand" "d"))))
    (clobber (reg:CC CC_REGNUM))]
   ""
   "ln<g>r\t%0,%1"
@@ -9818,9 +8939,9 @@
 (define_expand "clzdi2"
   [(set (match_operand:DI 0 "register_operand" "=d")
 	(clz:DI (match_operand:DI 1 "register_operand" "d")))]
-  "TARGET_EXTIMM && TARGET_ZARCH"
+  "TARGET_EXTIMM"
 {
-  if (!(TARGET_Z17 && TARGET_64BIT))
+  if (!TARGET_Z17)
     {
       rtx_insn *insn;
       rtx clz_equal;
@@ -9841,7 +8962,7 @@
 (define_insn "*clzg"
   [(set (match_operand:DI 0 "register_operand" "=d")
 	(clz:DI (match_operand:DI 1 "register_operand" "d")))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
   "clzg\t%0,%1"
   [(set_attr "op_type" "RRE")])
 
@@ -9858,14 +8979,14 @@
 			     (subreg:SI (clz:DI (match_dup 1)) 4))))))
    (clobber (reg:CC CC_REGNUM))]
   "UINTVAL (operands[2]) == HOST_WIDE_INT_1U << 63
-   && TARGET_EXTIMM && TARGET_ZARCH"
+   && TARGET_EXTIMM"
   "flogr\t%0,%1"
   [(set_attr "op_type"  "RRE")])
 
 (define_expand "clzsi2"
   [(match_operand:SI 0 "register_operand" "")
    (match_operand:SI 1 "register_operand" "")]
-  "TARGET_EXTIMM && TARGET_ZARCH"
+  "TARGET_EXTIMM"
 {
   rtx extreg = gen_reg_rtx (DImode);
   rtx clzreg = gen_reg_rtx (DImode);
@@ -9883,7 +9004,7 @@
 (define_insn "ctzdi2"
   [(set (match_operand:DI 0 "register_operand" "=d")
 	(ctz:DI (match_operand:DI 1 "register_operand" "d")))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
   "ctzg\t%0,%1"
   [(set_attr "op_type" "RRE")])
 
@@ -9892,7 +9013,7 @@
 	(zero_extend:DI (match_operand:SI 1 "register_operand" "")))
    (set (match_dup 3) (ctz:DI (match_dup 2)))
    (set (match_operand:SI 0 "register_operand" "") (subreg:SI (match_dup 3) 4))]
-  "TARGET_Z17 && TARGET_64BIT"
+  "TARGET_Z17"
 {
   operands[2] = gen_reg_rtx (DImode);
   operands[3] = gen_reg_rtx (DImode);
@@ -9907,16 +9028,16 @@
 ;
 
 (define_expand "rotl<mode>3"
-  [(set (match_operand:GPR 0 "register_operand" "")
-        (rotate:GPR (match_operand:GPR 1 "register_operand" "")
+  [(set (match_operand:DSI 0 "register_operand" "")
+        (rotate:DSI (match_operand:DSI 1 "register_operand" "")
 		    (match_operand:QI 2 "shift_count_operand" "")))]
   ""
   "")
 
 ; rll, rllg
 (define_insn "*rotl<mode>3"
-  [(set (match_operand:GPR             0 "register_operand"  "=d")
-	(rotate:GPR (match_operand:GPR 1 "register_operand"   "d")
+  [(set (match_operand:DSI             0 "register_operand"  "=d")
+	(rotate:DSI (match_operand:DSI 1 "register_operand"   "d")
 		    (match_operand:QI  2 "shift_count_operand" "jsc")))]
   ""
   "rll<g>\t%0,%1,%Y2"
@@ -9940,24 +9061,12 @@
   ""
   "")
 
-; ESA 64 bit register pair shift with reg or imm shift count
-; sldl, srdl
-(define_insn "*<shift>di3_31"
-  [(set (match_operand:DI 0 "register_operand"            "=d")
-        (SHIFT:DI (match_operand:DI 1 "register_operand"   "0")
-                  (match_operand:QI 2 "shift_count_operand" "jsc")))]
-  "!TARGET_ZARCH"
-  "s<lr>dl\t%0,%Y2"
-  [(set_attr "op_type"  "RS")
-   (set_attr "atype"    "reg")
-   (set_attr "z196prop" "z196_cracked")])
-
 
 ; 64 bit register shift with reg or imm shift count
 ; sll, srl, sllg, srlg, sllk, srlk
 (define_insn "*<shift><mode>3"
-  [(set (match_operand:GPR 0 "register_operand"              "=d, d")
-        (SHIFT:GPR (match_operand:GPR 1 "register_operand" "<d0>, d")
+  [(set (match_operand:DSI 0 "register_operand"              "=d, d")
+        (SHIFT:DSI (match_operand:DSI 1 "register_operand" "<d0>, d")
                    (match_operand:QI 2 "shift_count_operand"   "jsc,jsc")))]
   ""
   "@
@@ -9982,21 +9091,11 @@
   ""
   "")
 
-(define_insn "*ashrdi3_31<setcc><cconly>"
-  [(set (match_operand:DI 0 "register_operand"               "=d")
-        (ashiftrt:DI (match_operand:DI 1 "register_operand"   "0")
-                     (match_operand:QI 2 "shift_count_operand" "jsc")))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH"
-  "srda\t%0,%Y2"
-  [(set_attr "op_type" "RS")
-   (set_attr "atype"   "reg")])
-
 
 ; sra, srag
 (define_insn "*ashr<mode>3<setcc><cconly>"
-  [(set (match_operand:GPR 0 "register_operand"                 "=d, d")
-        (ashiftrt:GPR (match_operand:GPR 1 "register_operand" "<d0>, d")
+  [(set (match_operand:DSI 0 "register_operand"                 "=d, d")
+        (ashiftrt:DSI (match_operand:DSI 1 "register_operand" "<d0>, d")
                       (match_operand:QI 2 "shift_count_operand"   "jsc,jsc")))
    (clobber (reg:CC CC_REGNUM))]
   ""
@@ -10016,8 +9115,8 @@
 (define_expand "cbranch<mode>4"
   [(set (pc)
         (if_then_else (match_operator 0 "comparison_operator"
-        	       [(match_operand:GPR 1 "register_operand" "")
-                        (match_operand:GPR 2 "general_operand" "")])
+		       [(match_operand:DSI 1 "register_operand" "")
+                        (match_operand:DSI 2 "general_operand" "")])
 		      (label_ref (match_operand 3 "" ""))
                       (pc)))]
   ""
@@ -10184,8 +9283,8 @@
 
 (define_expand "ctrap<mode>4"
   [(trap_if (match_operator 0 "comparison_operator"
-             [(match_operand:GPR 1 "register_operand" "")
-              (match_operand:GPR 2 "general_operand" "")])
+             [(match_operand:DSI 1 "register_operand" "")
+              (match_operand:DSI 2 "general_operand" "")])
 	     (match_operand 3 "const0_operand" ""))]
   ""
   {
@@ -10221,8 +9320,8 @@
 ; crt, cgrt, cit, cgit
 (define_insn "*cmp_and_trap_signed_int<mode>"
   [(trap_if (match_operator 0 "s390_signed_integer_comparison"
-	       [(match_operand:GPR 1 "register_operand"  "d,d")
-		(match_operand:GPR 2 "nonmemory_operand" "d,K")])
+	       [(match_operand:DSI 1 "register_operand"  "d,d")
+		(match_operand:DSI 2 "nonmemory_operand" "d,K")])
 	    (const_int 0))]
   "TARGET_Z10"
   "@
@@ -10235,8 +9334,8 @@
 ; clrt, clgrt, clfit, clgit, clt, clgt
 (define_insn "*cmp_and_trap_unsigned_int<mode>"
   [(trap_if (match_operator 0 "s390_unsigned_integer_comparison"
-	       [(match_operand:GPR 1 "register_operand" "d,d,d")
-		(match_operand:GPR 2 "general_operand"  "d,D,S")])
+	       [(match_operand:DSI 1 "register_operand" "d,d,d")
+		(match_operand:DSI 2 "general_operand"  "d,D,S")])
 	    (const_int 0))]
   "TARGET_Z10"
   "@
@@ -10250,10 +9349,10 @@
 
 ; lat, lgat
 (define_insn "*load_and_trap<mode>"
-  [(trap_if (eq (match_operand:GPR 0 "memory_operand"  "T")
+  [(trap_if (eq (match_operand:DSI 0 "memory_operand"  "T")
 		(const_int 0))
 	    (const_int 0))
-   (set (match_operand:GPR 1 "register_operand" "=d")
+   (set (match_operand:DSI 1 "register_operand" "=d")
 	(match_dup 0))]
   "TARGET_ZEC12"
   "l<g>at\t%1,%0"
@@ -10272,19 +9371,19 @@
 ; necessary to load the compare and the increment values into a
 ; register pair as needed by brxle.
 
-(define_insn_and_split "*brx_stage1_<GPR:mode>"
+(define_insn_and_split "*brx_stage1_<DSI:mode>"
   [(set (pc)
         (if_then_else
 	 (match_operator 6 "s390_brx_operator"
-	    [(plus:GPR (match_operand:GPR 1 "register_operand" "")
-		       (match_operand:GPR 2 "general_operand"  ""))
-	     (match_operand:GPR 3 "register_operand" "")])
+	    [(plus:DSI (match_operand:DSI 1 "register_operand" "")
+		       (match_operand:DSI 2 "general_operand"  ""))
+	     (match_operand:DSI 3 "register_operand" "")])
 	 (label_ref (match_operand 0 "" ""))
 	 (pc)))
-   (set (match_operand:GPR 4 "nonimmediate_operand" "")
-        (plus:GPR (match_dup 1) (match_dup 2)))
+   (set (match_operand:DSI 4 "nonimmediate_operand" "")
+        (plus:DSI (match_dup 1) (match_dup 2)))
    (clobber (reg:CC CC_REGNUM))
-   (clobber (match_scratch:GPR 5 ""))]
+   (clobber (match_scratch:DSI 5 ""))]
   ""
   "#"
   "!reload_completed && !reload_in_progress"
@@ -10293,20 +9392,20 @@
    (parallel [(set (pc)
 		   (if_then_else
 		    (match_op_dup 6
-		       [(plus:GPR (match_dup 1) (match_dup 7))
+		       [(plus:DSI (match_dup 1) (match_dup 7))
 			(match_dup 8)])
 		    (label_ref (match_dup 0))
 		    (pc)))
 	      (set (match_dup 4)
-		   (plus:GPR (match_dup 1) (match_dup 7)))
+		   (plus:DSI (match_dup 1) (match_dup 7)))
 	      (clobber (match_dup 5))
 	      (clobber (reg:CC CC_REGNUM))])]
   {
-    rtx dreg = gen_reg_rtx (word_mode == DImode ? TImode : DImode);
-    operands[7] = gen_lowpart (<GPR:MODE>mode,
-			       gen_highpart (word_mode, dreg));
-    operands[8] = gen_lowpart (<GPR:MODE>mode,
-			       gen_lowpart (word_mode, dreg));
+    rtx dreg = gen_reg_rtx (TImode);
+    operands[7] = gen_lowpart (<DSI:MODE>mode,
+			       gen_highpart (DImode, dreg));
+    operands[8] = gen_lowpart (<DSI:MODE>mode,
+			       gen_lowpart (DImode, dreg));
   })
 
 ; brxlg, brxhg
@@ -10325,7 +9424,7 @@
 		 (subreg:DI (match_dup 2) 0)))
    (clobber (match_scratch:DI 4 "=X,&1,&?d"))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
 {
   if (which_alternative != 0)
     return "#";
@@ -10368,7 +9467,7 @@
 		 (subreg:SI (match_dup 2) 4)))
    (clobber (match_scratch:SI 4 "=X,&1,&?d"))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
 {
   if (which_alternative != 0)
     return "#";
@@ -10395,49 +9494,6 @@
         (if_then_else (lt (abs (minus (pc) (match_dup 0))) (const_int 60000))
                       (const_int 6) (const_int 14)))])
 
-; brxle, brxh
-
-(define_insn_and_split "*brx_31bit"
-  [(set (pc)
-        (if_then_else
-          (match_operator 5 "s390_brx_operator"
-	    [(plus:SI (match_operand:SI 1 "register_operand" "d,d,d")
-		      (subreg:SI (match_operand:DI 2 "register_operand" "d,d,d") 0))
-	     (subreg:SI (match_dup 2) 4)])
-          (label_ref (match_operand 0 "" ""))
-          (pc)))
-   (set (match_operand:SI 3 "nonimmediate_operand" "=1,?X,?X")
-        (plus:SI (match_dup 1)
-		 (subreg:SI (match_dup 2) 0)))
-   (clobber (match_scratch:SI 4 "=X,&1,&?d"))
-   (clobber (reg:CC CC_REGNUM))]
-  "!TARGET_ZARCH"
-{
-  if (which_alternative != 0)
-    return "#";
-  else if (get_attr_length (insn) == 6)
-    return "brx%C5\t%1,%2,%l0";
-  else
-    return "ar\t%1,%2\;cr\t%1,%M2\;jg%C5\t%l0";
-}
-  "&& reload_completed
-   && (!REG_P (operands[3])
-       || !rtx_equal_p (operands[1], operands[3]))"
-  [(set (match_dup 4) (match_dup 1))
-   (parallel [(set (match_dup 4) (plus:SI (match_dup 4) (subreg:SI (match_dup 2) 0)))
-	      (clobber (reg:CC CC_REGNUM))])
-   (set (reg:CCS CC_REGNUM) (compare:CCS (match_dup 4) (subreg:SI (match_dup 2) 4)))
-   (set (match_dup 3) (match_dup 4))
-   (set (pc) (if_then_else (match_op_dup 5 [(reg:CCS CC_REGNUM) (const_int 0)])
-			   (label_ref (match_dup 0))
-			   (pc)))]
-  ""
-  [(set_attr "op_type"  "RSI")
-   (set_attr "type"  "branch")
-   (set (attr "length")
-        (if_then_else (lt (abs (minus (pc) (match_dup 0))) (const_int 60000))
-                      (const_int 6) (const_int 14)))])
-
 
 ;; branch on count
 
@@ -10448,7 +9504,7 @@
 {
   if (GET_MODE (operands[0]) == SImode)
     emit_jump_insn (gen_doloop_si64 (operands[1], operands[0], operands[0]));
-  else if (GET_MODE (operands[0]) == DImode && TARGET_ZARCH)
+  else if (GET_MODE (operands[0]) == DImode)
     emit_jump_insn (gen_doloop_di (operands[1], operands[0], operands[0]));
   else
     FAIL;
@@ -10509,7 +9565,7 @@
         (plus:DI (match_dup 1) (const_int -1)))
    (clobber (match_scratch:DI 3 "=X,&1,&?d"))
    (clobber (reg:CC CC_REGNUM))]
-  "TARGET_ZARCH"
+  ""
 {
   if (which_alternative != 0)
     return "#";
@@ -10589,19 +9645,9 @@
     {
       operands[0] = force_reg (Pmode, operands[0]);
       if (TARGET_CPU_Z10)
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_indirect_jump_via_thunkdi_z10 (operands[0]));
-	  else
-	    emit_jump_insn (gen_indirect_jump_via_thunksi_z10 (operands[0]));
-	}
+	emit_jump_insn (gen_indirect_jump_via_thunkdi_z10 (operands[0]));
       else
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_indirect_jump_via_thunkdi (operands[0]));
-	  else
-	    emit_jump_insn (gen_indirect_jump_via_thunksi (operands[0]));
-	}
+	emit_jump_insn (gen_indirect_jump_via_thunkdi (operands[0]));
       DONE;
     }
 
@@ -10610,25 +9656,12 @@
       operands[0] = force_reg (Pmode, operands[0]);
       rtx label_ref = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ());
       if (TARGET_CPU_Z10)
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_indirect_jump_via_inlinethunkdi_z10 (operands[0],
-								     label_ref));
-	  else
-	    emit_jump_insn (gen_indirect_jump_via_inlinethunksi_z10 (operands[0],
-								     label_ref));
-	}
+	emit_jump_insn (gen_indirect_jump_via_inlinethunkdi_z10 (operands[0],
+								 label_ref));
       else
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_indirect_jump_via_inlinethunkdi (operands[0],
-								 label_ref,
-								 force_reg (Pmode, label_ref)));
-	  else
-	    emit_jump_insn (gen_indirect_jump_via_inlinethunksi (operands[0],
-								 label_ref,
-								 force_reg (Pmode, label_ref)));
-	}
+	emit_jump_insn (gen_indirect_jump_via_inlinethunkdi (operands[0],
+							     label_ref,
+							     force_reg (Pmode, label_ref)));
       DONE;
     }
 })
@@ -10652,9 +9685,9 @@
   (set_attr "type"  "branch")
   (set_attr "atype" "agen")])
 
-(define_insn "indirect_jump_via_thunk<mode>_z10"
+(define_insn "indirect_jump_via_thunkdi_z10"
   [(set (pc)
-	(match_operand:P 0 "register_operand" "a"))]
+	(match_operand:DI 0 "register_operand" "a"))]
  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
   && TARGET_CPU_Z10"
 {
@@ -10669,10 +9702,10 @@
   (set_attr "type"  "branch")
   (set_attr "atype" "agen")])
 
-(define_insn "indirect_jump_via_thunk<mode>"
+(define_insn "indirect_jump_via_thunkdi"
   [(set (pc)
-	(match_operand:P 0 "register_operand" " a"))
-   (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+	(match_operand:DI 0 "register_operand" " a"))
+   (clobber (reg:DI INDIRECT_BRANCH_THUNK_REGNUM))]
  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
   && !TARGET_CPU_Z10"
 {
@@ -10691,12 +9724,12 @@
 ; The label_ref is wrapped into an if_then_else in order to hide it
 ; from mark_jump_label.  Without this the label_ref would become the
 ; ONLY jump target of that jump breaking the control flow graph.
-(define_insn "indirect_jump_via_inlinethunk<mode>_z10"
-  [(unspec [(if_then_else (match_operand:P 1 "larl_operand" "X")
+(define_insn "indirect_jump_via_inlinethunkdi_z10"
+  [(unspec [(if_then_else (match_operand:DI 1 "larl_operand" "X")
 			  (const_int 0)
 			  (const_int 0))
 	    (const_int 0)] UNSPEC_EXECUTE_JUMP)
-   (set (pc) (match_operand:P 0 "register_operand" "a"))]
+   (set (pc) (match_operand:DI 0 "register_operand" "a"))]
   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
    && TARGET_CPU_Z10"
 {
@@ -10707,12 +9740,12 @@
    (set_attr "type"    "branch")
    (set_attr "length"  "10")])
 
-(define_insn "indirect_jump_via_inlinethunk<mode>"
-  [(unspec [(if_then_else (match_operand:P 1 "larl_operand" "X")
+(define_insn "indirect_jump_via_inlinethunkdi"
+  [(unspec [(if_then_else (match_operand:DI 1 "larl_operand" "X")
 			  (const_int 0)
 			  (const_int 0))
-	    (match_operand:P 2 "register_operand" "a")] UNSPEC_EXECUTE_JUMP)
-   (set (pc) (match_operand:P 0 "register_operand" "a"))]
+	    (match_operand:DI 2 "register_operand" "a")] UNSPEC_EXECUTE_JUMP)
+   (set (pc) (match_operand:DI 0 "register_operand" "a"))]
   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
    && !TARGET_CPU_Z10"
 {
@@ -10753,23 +9786,9 @@
       operands[0] = force_reg (GET_MODE (operands[0]), operands[0]);
 
       if (TARGET_CPU_Z10)
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_casesi_jump_via_thunkdi_z10 (operands[0],
-							     operands[1]));
-	  else
-	    emit_jump_insn (gen_casesi_jump_via_thunksi_z10 (operands[0],
-							     operands[1]));
-	}
+	emit_jump_insn (gen_casesi_jump_via_thunkdi_z10 (operands[0], operands[1]));
       else
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_casesi_jump_via_thunkdi (operands[0],
-							 operands[1]));
-	  else
-	    emit_jump_insn (gen_casesi_jump_via_thunksi (operands[0],
-							 operands[1]));
-	}
+	emit_jump_insn (gen_casesi_jump_via_thunkdi (operands[0], operands[1]));
       DONE;
     }
 
@@ -10778,29 +9797,14 @@
       operands[0] = force_reg (Pmode, operands[0]);
       rtx label_ref = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ());
       if (TARGET_CPU_Z10)
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_casesi_jump_via_inlinethunkdi_z10 (operands[0],
-								   operands[1],
-								   label_ref));
-	  else
-	    emit_jump_insn (gen_casesi_jump_via_inlinethunksi_z10 (operands[0],
-								   operands[1],
-								   label_ref));
-	}
-      else
-	{
-	  if (TARGET_64BIT)
-	    emit_jump_insn (gen_casesi_jump_via_inlinethunkdi (operands[0],
+	emit_jump_insn (gen_casesi_jump_via_inlinethunkdi_z10 (operands[0],
 							       operands[1],
-							       label_ref,
-							       force_reg (Pmode, label_ref)));
-	  else
-	    emit_jump_insn (gen_casesi_jump_via_inlinethunksi (operands[0],
-							       operands[1],
-							       label_ref,
-							       force_reg (Pmode, label_ref)));
-	}
+							       label_ref));
+      else
+	emit_jump_insn (gen_casesi_jump_via_inlinethunkdi (operands[0],
+							   operands[1],
+							   label_ref,
+							   force_reg (Pmode, label_ref)));
       DONE;
     }
 })
@@ -10824,8 +9828,8 @@
    (set_attr "type"  "branch")
    (set_attr "atype" "agen")])
 
-(define_insn "casesi_jump_via_thunk<mode>_z10"
- [(set (pc) (match_operand:P 0 "register_operand" "a"))
+(define_insn "casesi_jump_via_thunkdi_z10"
+ [(set (pc) (match_operand:DI 0 "register_operand" "a"))
   (use (label_ref (match_operand 1 "" "")))]
  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
   && TARGET_CPU_Z10"
@@ -10841,10 +9845,10 @@
    (set_attr "type"  "branch")
    (set_attr "atype" "agen")])
 
-(define_insn "casesi_jump_via_thunk<mode>"
- [(set (pc) (match_operand:P 0 "register_operand" "a"))
+(define_insn "casesi_jump_via_thunkdi"
+ [(set (pc) (match_operand:DI 0 "register_operand" "a"))
   (use (label_ref (match_operand 1 "" "")))
-  (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+  (clobber (reg:DI INDIRECT_BRANCH_THUNK_REGNUM))]
  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
   && !TARGET_CPU_Z10"
 {
@@ -10863,12 +9867,12 @@
 ; The label_ref is wrapped into an if_then_else in order to hide it
 ; from mark_jump_label.  Without this the label_ref would become the
 ; ONLY jump target of that jump breaking the control flow graph.
-(define_insn "casesi_jump_via_inlinethunk<mode>_z10"
-  [(unspec [(if_then_else (match_operand:P 2 "larl_operand" "X")
+(define_insn "casesi_jump_via_inlinethunkdi_z10"
+  [(unspec [(if_then_else (match_operand:DI 2 "larl_operand" "X")
 			  (const_int 0)
 			  (const_int 0))
 	    (const_int 0)] UNSPEC_EXECUTE_JUMP)
-   (set (pc) (match_operand:P 0 "register_operand" "a"))
+   (set (pc) (match_operand:DI 0 "register_operand" "a"))
    (use (label_ref (match_operand 1 "" "")))]
   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
    && TARGET_CPU_Z10"
@@ -10880,12 +9884,12 @@
    (set_attr "type"    "cs")
    (set_attr "length"  "10")])
 
-(define_insn "casesi_jump_via_inlinethunk<mode>"
-  [(unspec [(if_then_else (match_operand:P 2 "larl_operand" "X")
+(define_insn "casesi_jump_via_inlinethunkdi"
+  [(unspec [(if_then_else (match_operand:DI 2 "larl_operand" "X")
 			  (const_int 0)
 			  (const_int 0))
-	    (match_operand:P 3 "register_operand" "a")] UNSPEC_EXECUTE_JUMP)
-   (set (pc) (match_operand:P 0 "register_operand" "a"))
+	    (match_operand:DI 3 "register_operand" "a")] UNSPEC_EXECUTE_JUMP)
+   (set (pc) (match_operand:DI 0 "register_operand" "a"))
    (use (label_ref (match_operand 1 "" "")))]
   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
    && !TARGET_CPU_Z10"
@@ -10919,10 +9923,7 @@
    if (GET_CODE (index) != REG)
      index = copy_to_mode_reg (Pmode, index);
 
-   if (TARGET_64BIT)
-       emit_insn (gen_ashldi3 (index, index, GEN_INT (3)));
-   else
-       emit_insn (gen_ashlsi3 (index, index, const2_rtx));
+   emit_insn (gen_ashldi3 (index, index, GEN_INT (3)));
 
    emit_move_insn (base, gen_rtx_LABEL_REF (Pmode, operands[3]));
 
@@ -11167,10 +10168,10 @@
    (set_attr "atype" "agen")
    (set_attr "z196prop" "z196_cracked")])
 
-(define_insn "*basr_via_thunk<mode>_z10"
-  [(call (mem:QI (match_operand:P 0 "register_operand" "a"))
+(define_insn "*basr_via_thunkdi_z10"
+  [(call (mem:QI (match_operand:DI 0 "register_operand" "a"))
          (match_operand 1 "const_int_operand"          "n"))
-   (clobber (match_operand:P 2 "register_operand"    "=&r"))]
+   (clobber (match_operand:DI 2 "register_operand"    "=&r"))]
   "TARGET_INDIRECT_BRANCH_NOBP_CALL
    && TARGET_CPU_Z10
    && !SIBLING_CALL_P (insn)"
@@ -11187,11 +10188,11 @@
    (set_attr "atype" "agen")
    (set_attr "z196prop" "z196_cracked")])
 
-(define_insn "*basr_via_thunk<mode>"
-  [(call (mem:QI (match_operand:P 0 "register_operand" "a"))
+(define_insn "*basr_via_thunkdi"
+  [(call (mem:QI (match_operand:DI 0 "register_operand" "a"))
          (match_operand 1 "const_int_operand"          "n"))
-   (clobber (match_operand:P 2 "register_operand"    "=&r"))
-   (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+   (clobber (match_operand:DI 2 "register_operand"    "=&r"))
+   (clobber (reg:DI INDIRECT_BRANCH_THUNK_REGNUM))]
   "TARGET_INDIRECT_BRANCH_NOBP_CALL
    && !TARGET_CPU_Z10
    && !SIBLING_CALL_P (insn)"
@@ -11302,7 +10303,7 @@
         (call (mem:QI (match_operand 1 "register_operand" "a"))
               (match_operand 2 "const_int_operand"        "n")))
    (clobber (match_operand 3 "register_operand"         "=&r"))
-   (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+   (clobber (reg:DI INDIRECT_BRANCH_THUNK_REGNUM))]
   "TARGET_INDIRECT_BRANCH_NOBP_CALL
    && !TARGET_CPU_Z10
    && !SIBLING_CALL_P (insn)
@@ -11324,15 +10325,15 @@
 ;;- Thread-local storage support.
 ;;
 
-(define_expand "@get_thread_pointer<mode>"
-  [(set (match_operand:P 0 "nonimmediate_operand" "")
-	(unspec:P [(reg:P TP_REGNUM)] UNSPEC_GET_TP))]
+(define_expand "get_thread_pointerdi"
+  [(set (match_operand:DI 0 "nonimmediate_operand" "")
+	(unspec:DI [(reg:DI TP_REGNUM)] UNSPEC_GET_TP))]
   ""
   "")
 
-(define_expand "set_thread_pointer<mode>"
-  [(set (reg:P TP_REGNUM) (match_operand:P 0 "nonimmediate_operand" ""))
-   (set (reg:P TP_REGNUM) (unspec_volatile:P [(reg:P TP_REGNUM)] UNSPECV_SET_TP))]
+(define_expand "set_thread_pointerdi"
+  [(set (reg:DI TP_REGNUM) (match_operand:DI 0 "nonimmediate_operand" ""))
+   (set (reg:DI TP_REGNUM) (unspec_volatile:DI [(reg:DI TP_REGNUM)] UNSPECV_SET_TP))]
   ""
   "")
 
@@ -11348,25 +10349,11 @@
         (unspec:DI [(match_operand:DI 1 "memory_operand" "T")
                     (match_operand:DI 2 "" "")]
 		   UNSPEC_TLS_LOAD))]
-  "TARGET_64BIT"
+  ""
   "lg\t%0,%1%J2"
   [(set_attr "op_type" "RXE")
    (set_attr "z10prop" "z10_fwd_A3")])
 
-(define_insn "*tls_load_31"
-  [(set (match_operand:SI 0 "register_operand" "=d,d")
-        (unspec:SI [(match_operand:SI 1 "memory_operand" "R,T")
-                    (match_operand:SI 2 "" "")]
-		   UNSPEC_TLS_LOAD))]
-  "!TARGET_64BIT"
-  "@
-   l\t%0,%1%J2
-   ly\t%0,%1%J2"
-  [(set_attr "op_type" "RX,RXY")
-   (set_attr "type" "load")
-   (set_attr "cpu_facility" "*,longdisp")
-   (set_attr "z10prop" "z10_fwd_A3,z10_fwd_A3")])
-
 (define_insn "*bras_tls"
   [(set (match_operand 0 "" "")
         (call (mem:QI (match_operand 1 "bras_sym_operand" "X"))
@@ -11474,33 +10461,16 @@
 
   if (<MODE>mode == TImode)
     emit_insn (gen_atomic_loadti_1 (operands[0], operands[1]));
-  else if (<MODE>mode == DImode && !TARGET_ZARCH)
-    emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1]));
   else
     emit_move_insn (operands[0], operands[1]);
   DONE;
 })
 
-; Different from movdi_31 in that we want no splitters.
-(define_insn "atomic_loaddi_1"
-  [(set (match_operand:DI 0 "register_operand" "=d,d,!*f,!*f")
-	(unspec:DI [(match_operand:DI 1 "memory_operand" "Q,S,R,T")]
-		   UNSPEC_MOVA))]
-  "!TARGET_ZARCH"
-  "@
-   lm\t%0,%M0,%S1
-   lmy\t%0,%M0,%S1
-   ld\t%0,%1
-   ldy\t%0,%1"
-  [(set_attr "op_type" "RS,RSY,RS,RSY")
-   (set_attr "cpu_facility" "*,longdisp,*,longdisp")
-   (set_attr "type" "lm,lm,floaddf,floaddf")])
-
 (define_insn "atomic_loadti_1"
   [(set (match_operand:TI 0 "register_operand" "=r")
 	(unspec:TI [(match_operand:TI 1 "memory_operand" "T")]
 		   UNSPEC_MOVA))]
-  "TARGET_ZARCH"
+  ""
   "lpq\t%0,%1"
   [(set_attr "op_type" "RXY")
    (set_attr "type" "other")])
@@ -11519,8 +10489,6 @@
 
   if (<MODE>mode == TImode)
     emit_insn (gen_atomic_storeti_1 (operands[0], operands[1]));
-  else if (<MODE>mode == DImode && !TARGET_ZARCH)
-    emit_insn (gen_atomic_storedi_1 (operands[0], operands[1]));
   else
     emit_move_insn (operands[0], operands[1]);
   if (is_mm_seq_cst (model))
@@ -11528,26 +10496,11 @@
   DONE;
 })
 
-; Different from movdi_31 in that we want no splitters.
-(define_insn "atomic_storedi_1"
-  [(set (match_operand:DI 0 "memory_operand" "=Q,S,R,T")
-	(unspec:DI [(match_operand:DI 1 "register_operand" "d,d,!*f,!*f")]
-		   UNSPEC_MOVA))]
-  "!TARGET_ZARCH"
-  "@
-   stm\t%1,%N1,%S0
-   stmy\t%1,%N1,%S0
-   std %1,%0
-   stdy %1,%0"
-  [(set_attr "op_type" "RS,RSY,RS,RSY")
-   (set_attr "cpu_facility" "*,longdisp,*,longdisp")
-   (set_attr "type" "stm,stm,fstoredf,fstoredf")])
-
 (define_insn "atomic_storeti_1"
   [(set (match_operand:TI 0 "memory_operand" "=T")
 	(unspec:TI [(match_operand:TI 1 "register_operand" "r")]
 		   UNSPEC_MOVA))]
-  "TARGET_ZARCH"
+  ""
   "stpq\t%1,%0"
   [(set_attr "op_type" "RXY")
    (set_attr "type" "other")])
@@ -11577,13 +10530,13 @@
 
 (define_expand "atomic_compare_and_swap<mode>_internal"
   [(parallel
-     [(set (match_operand:DGPR 0 "register_operand")
-	   (match_operand:DGPR 1 "s_operand"))
+     [(set (match_operand:TDSI 0 "register_operand")
+	   (match_operand:TDSI 1 "s_operand"))
       (set (match_dup 1)
-	   (unspec_volatile:DGPR
+	   (unspec_volatile:TDSI
 	     [(match_dup 1)
-	      (match_operand:DGPR 2 "register_operand")
-	      (match_operand:DGPR 3 "register_operand")]
+	      (match_operand:TDSI 2 "register_operand")
+	      (match_operand:TDSI 3 "register_operand")]
 	     UNSPECV_CAS))
       (set (match_operand 4 "cc_reg_operand")
 	   (match_dup 5))])]
@@ -11606,33 +10559,11 @@
 	  UNSPECV_CAS))
    (set (reg CC_REGNUM)
 	(compare (match_dup 1) (match_dup 2)))]
-  "TARGET_ZARCH
-   && s390_match_ccmode (insn, CCZ1mode)"
+  "s390_match_ccmode (insn, CCZ1mode)"
   "c<td>sg\t%0,%3,%S1"
   [(set_attr "op_type" "RSY")
    (set_attr "type"   "sem")])
 
-; cds, cdsy
-(define_insn "*atomic_compare_and_swapdi_2"
-  [(set (match_operand:DI 0 "register_operand" "=r,r")
-	(match_operand:DI 1 "nonsym_memory_operand" "+Q,S"))
-   (set (match_dup 1)
-	(unspec_volatile:DI
-	  [(match_dup 1)
-	   (match_operand:DI 2 "register_operand" "0,0")
-	   (match_operand:DI 3 "register_operand" "r,r")]
-	  UNSPECV_CAS))
-   (set (reg CC_REGNUM)
-	(compare (match_dup 1) (match_dup 2)))]
-  "!TARGET_ZARCH
-   && s390_match_ccmode (insn, CCZ1mode)"
-  "@
-   cds\t%0,%3,%S1
-   cdsy\t%0,%3,%S1"
-  [(set_attr "op_type" "RS,RSY")
-   (set_attr "cpu_facility" "*,longdisp")
-   (set_attr "type" "sem")])
-
 ; cs, csy
 (define_insn "*atomic_compare_and_swapsi_3"
   [(set (match_operand:SI 0 "register_operand" "=r,r")
@@ -11660,10 +10591,10 @@
 ; z196 load and add, xor, or and and instructions
 
 (define_expand "atomic_fetch_<atomic><mode>"
-  [(match_operand:GPR 0 "register_operand")		;; val out
-   (ATOMIC_Z196:GPR
-     (match_operand:GPR 1 "memory_operand")		;; memory
-     (match_operand:GPR 2 "register_operand"))		;; val in
+  [(match_operand:DSI 0 "register_operand")		;; val out
+   (ATOMIC_Z196:DSI
+     (match_operand:DSI 1 "memory_operand")		;; memory
+     (match_operand:DSI 2 "register_operand"))		;; val in
    (match_operand:SI 3 "const_int_operand")]		;; model
   "TARGET_Z196"
 {
@@ -11677,12 +10608,12 @@
 
 ; lan, lang, lao, laog, lax, laxg, laa, laag
 (define_insn "atomic_fetch_<atomic><mode>_iaf"
-  [(set (match_operand:GPR 0 "register_operand" "=d")
-	(match_operand:GPR 1 "memory_operand" "+S"))
+  [(set (match_operand:DSI 0 "register_operand" "=d")
+	(match_operand:DSI 1 "memory_operand" "+S"))
    (set (match_dup 1)
-	(unspec_volatile:GPR
-	 [(ATOMIC_Z196:GPR (match_dup 1)
-			   (match_operand:GPR 2 "general_operand" "d"))]
+	(unspec_volatile:DSI
+	 [(ATOMIC_Z196:DSI (match_dup 1)
+			   (match_operand:DSI 2 "general_operand" "d"))]
 	 UNSPECV_ATOMIC_OP))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_Z196"
@@ -11747,10 +10678,8 @@
   if (<MODE>mode == HImode || <MODE>mode == QImode)
     s390_expand_atomic (<MODE>mode, SET, operands[0], operands[1], operands[2],
 			false);
-  else if (<MODE>mode == SImode || TARGET_ZARCH)
-    s390_expand_atomic_exchange_tdsi (operands[0], operands[1], operands[2]);
   else
-    FAIL;
+    s390_expand_atomic_exchange_tdsi (operands[0], operands[1], operands[2]);
   DONE;
 })
 
@@ -11782,10 +10711,10 @@
   DONE;
   })
 
-(define_expand "@probe_stack2<mode>"
+(define_expand "probe_stack2di"
   [(set (reg:CCZ CC_REGNUM)
-	(compare:CCZ (reg:W 0)
-		     (match_operand:W 0 "memory_operand")))
+	(compare:CCZ (reg:DI 0)
+		     (match_operand:DI 0 "memory_operand")))
    (unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)]
   "")
 
@@ -11793,7 +10722,7 @@
   [(match_operand 0 "memory_operand")]
   ""
 {
-  emit_insn (gen_probe_stack2 (word_mode, operands[0]));
+  emit_insn (gen_probe_stack2di (operands[0]));
   DONE;
 })
 
@@ -12091,17 +11020,14 @@
   if (!TARGET_CPU_Z10
       && TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION)
     {
-      if (TARGET_64BIT)
-        emit_jump_insn (gen_returndi_prez10 (operands[0]));
-      else
-        emit_jump_insn (gen_returnsi_prez10 (operands[0]));
+      emit_jump_insn (gen_returndi_prez10 (operands[0]));
       DONE;
     }
 })
 
-(define_insn "*return<mode>"
+(define_insn "*returndi"
   [(return)
-   (use (match_operand:P 0 "register_operand" "a"))]
+   (use (match_operand:DI 0 "register_operand" "a"))]
   "TARGET_CPU_Z10 || !TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION"
 {
   if (TARGET_INDIRECT_BRANCH_NOBP_RET)
@@ -12126,10 +11052,10 @@
    (set_attr "type"    "jsr")
    (set_attr "atype"   "agen")])
 
-(define_insn "return<mode>_prez10"
+(define_insn "returndi_prez10"
   [(return)
-   (use (match_operand:P 0 "register_operand" "a"))
-   (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+   (use (match_operand:DI 0 "register_operand" "a"))
+   (clobber (reg:DI INDIRECT_BRANCH_THUNK_REGNUM))]
   "!TARGET_CPU_Z10 && TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION"
 {
   if (TARGET_INDIRECT_BRANCH_NOBP_RET)
@@ -12161,7 +11087,7 @@
 (define_expand "ptr_extend"
   [(set (match_operand:DI 0 "register_operand" "=r")
         (match_operand:SI 1 "register_operand" "r"))]
-  "TARGET_64BIT"
+  "TARGET_TPF"
 {
   emit_insn (gen_anddi3 (operands[0],
 			 gen_lowpart (DImode, operands[1]),
@@ -12184,9 +11110,9 @@
 ; Stack Protector Patterns
 ;
 
-(define_insn "stack_protect_global_guard_addr<mode>"
-  [(set (match_operand:P 0 "register_operand" "=d")
-	(unspec_volatile:P [(const_int 0)] UNSPECV_SP_GLOBAL_GUARD_ADDR))]
+(define_insn "stack_protect_global_guard_addrdi"
+  [(set (match_operand:DI 0 "register_operand" "=d")
+	(unspec_volatile:DI [(const_int 0)] UNSPECV_SP_GLOBAL_GUARD_ADDR))]
   ""
 {
   if (flag_s390_stack_protector_guard_record)
@@ -12194,37 +11120,29 @@
   if (flag_pic)
     {
       if (TARGET_Z10)
-	output_asm_insn ("l<g>rl\t%0,__stack_chk_guard@GOTENT", operands);
+	output_asm_insn ("lgrl\t%0,__stack_chk_guard@GOTENT", operands);
       else
 	{
 	  output_asm_insn ("larl\t%0,__stack_chk_guard@GOTENT", operands);
-	  output_asm_insn ("l<g>\t%0,0(%0)", operands);
+	  output_asm_insn ("lg\t%0,0(%0)", operands);
 	}
     }
   else
     output_asm_insn ("larl\t%0,__stack_chk_guard", operands);
   if (flag_s390_stack_protector_guard_record)
     fprintf (asm_out_file, "\t.section __stack_protector_loc,\\"a\\",@progbits\n"
-			   "\t.%s 1b\n"
-			   "\t.previous\n", TARGET_64BIT ? "quad" : "long");
+			   "\t.quad 1b\n"
+			   "\t.previous\n");
   return "";
 }
   [(set (attr "mnemonic")
-	(cond [(match_test "flag_pic &&  TARGET_Z10") (const_string "l<g>rl")
+	(cond [(match_test "flag_pic &&  TARGET_Z10") (const_string "lgrl")
 	       (match_test "flag_pic && !TARGET_Z10") (const_string "*")]
 	      (const_string "larl")))])
 
-; Insns stack_protect_get_tp{si,di} are similar to *get_tp_{31,64} but still
-; distinct in the sense that they force recomputation of the thread pointer
-; instead of potentially reloading it from stack.
-
-(define_insn_and_split "stack_protect_get_tpsi"
-  [(set (match_operand:SI 0 "register_operand" "=d")
-	(unspec_volatile:SI [(const_int 0)] UNSPECV_SP_GET_TP))]
-  ""
-  "#"
-  "&& reload_completed"
-  [(set (match_dup 0) (reg:SI AR0_REGNUM))])
+; Insn stack_protect_get_tpdi is similar to *get_tp_64 but still distinct in
+; the sense that it forces recomputation of the thread pointer instead of
+; potentially reloading it from stack.
 
 (define_insn_and_split "stack_protect_get_tpdi"
   [(set (match_operand:DI 0 "register_operand" "=d")
@@ -12245,36 +11163,27 @@
   if (TARGET_SP_GLOBAL_GUARD)
     {
       rtx addr = gen_reg_rtx (Pmode);
-      if (TARGET_64BIT)
-	emit_insn (gen_stack_protect_global_guard_addrdi (addr));
-      else
-	emit_insn (gen_stack_protect_global_guard_addrsi (addr));
+      emit_insn (gen_stack_protect_global_guard_addrdi (addr));
       operands[1] = gen_rtx_MEM (Pmode, addr);
     }
   else
     {
 #ifdef TARGET_THREAD_SSP_OFFSET
       rtx tp = gen_reg_rtx (Pmode);
-      if (TARGET_64BIT)
-	emit_insn (gen_stack_protect_get_tpdi (tp));
-      else
-	emit_insn (gen_stack_protect_get_tpsi (tp));
+      emit_insn (gen_stack_protect_get_tpdi (tp));
       operands[1]
 	= gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, tp,
 					    GEN_INT (TARGET_THREAD_SSP_OFFSET)));
 #endif
     }
-  if (TARGET_64BIT)
-    emit_insn (gen_stack_protect_setdi (operands[0], operands[1]));
-  else
-    emit_insn (gen_stack_protect_setsi (operands[0], operands[1]));
+  emit_insn (gen_stack_protect_setdi (operands[0], operands[1]));
 
   DONE;
 })
 
-(define_insn "stack_protect_set<mode>"
-  [(set (match_operand:DSI 0 "memory_operand" "=Q")
-        (unspec:DSI [(match_operand:DSI 1 "memory_operand" "Q")] UNSPEC_SP_SET))]
+(define_insn "stack_protect_setdi"
+  [(set (match_operand:DI 0 "memory_operand" "=Q")
+        (unspec:DI [(match_operand:DI 1 "memory_operand" "Q")] UNSPEC_SP_SET))]
   ""
   "mvc\t%O0(%G0,%R0),%S1"
   [(set_attr "op_type" "SS")])
@@ -12290,29 +11199,20 @@
   if (TARGET_SP_GLOBAL_GUARD)
     {
       rtx addr = gen_reg_rtx (Pmode);
-      if (TARGET_64BIT)
-	emit_insn (gen_stack_protect_global_guard_addrdi (addr));
-      else
-	emit_insn (gen_stack_protect_global_guard_addrsi (addr));
+      emit_insn (gen_stack_protect_global_guard_addrdi (addr));
       operands[1] = gen_rtx_MEM (Pmode, addr);
     }
   else
     {
 #ifdef TARGET_THREAD_SSP_OFFSET
       rtx tp = gen_reg_rtx (Pmode);
-      if (TARGET_64BIT)
-	emit_insn (gen_stack_protect_get_tpdi (tp));
-      else
-	emit_insn (gen_stack_protect_get_tpsi (tp));
+      emit_insn (gen_stack_protect_get_tpdi (tp));
       operands[1]
 	= gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, tp,
 					    GEN_INT (TARGET_THREAD_SSP_OFFSET)));
 #endif
     }
-  if (TARGET_64BIT)
-    emit_insn (gen_stack_protect_testdi (operands[0], operands[1]));
-  else
-    emit_insn (gen_stack_protect_testsi (operands[0], operands[1]));
+  emit_insn (gen_stack_protect_testdi (operands[0], operands[1]));
 
   cc_reg = gen_rtx_REG (CCZmode, CC_REGNUM);
   test = gen_rtx_EQ (VOIDmode, cc_reg, const0_rtx);
@@ -12320,10 +11220,10 @@
   DONE;
 })
 
-(define_insn "stack_protect_test<mode>"
+(define_insn "stack_protect_testdi"
   [(set (reg:CCZ CC_REGNUM)
-        (unspec:CCZ [(match_operand:DSI 0 "memory_operand" "Q")
-		     (match_operand:DSI 1 "memory_operand" "Q")] UNSPEC_SP_TEST))]
+        (unspec:CCZ [(match_operand:DI 0 "memory_operand" "Q")
+		     (match_operand:DI 1 "memory_operand" "Q")] UNSPEC_SP_TEST))]
   ""
   "clc\t%O0(%G0,%R0),%S1"
   [(set_attr "op_type" "SS")])
@@ -12331,10 +11231,10 @@
 ; This is used in s390_emit_prologue in order to prevent insns
 ; adjusting the stack pointer to be moved over insns writing stack
 ; slots using a copy of the stack pointer in a different register.
-(define_insn "@stack_tie<mode>"
+(define_insn "stack_tiedi"
   [(set (match_operand:BLK 0 "memory_operand" "+m")
         (unspec:BLK [(match_dup 0)
-		     (match_operand:P 1 "register_operand" "r")] UNSPEC_TIE))]
+		     (match_operand:DI 1 "register_operand" "r")] UNSPEC_TIE))]
   ""
   ""
   [(set_attr "length" "0")])
@@ -12389,8 +11289,8 @@
 ; may overlap.
 ; lrvr, lrv, strv, lrvgr, lrvg, strvg
 (define_insn "bswap<mode>2"
-  [(set (match_operand:GPR 0            "nonimmediate_operand" "=d,d,T")
-	(bswap:GPR (match_operand:GPR 1 "nonimmediate_operand" " d,T,d")))]
+  [(set (match_operand:DSI 0            "nonimmediate_operand" "=d,d,T")
+	(bswap:DSI (match_operand:DSI 1 "nonimmediate_operand" " d,T,d")))]
   ""
   "@
    lrv<g>r\t%0,%1
@@ -12924,15 +11824,12 @@
   ""
 {
   /* Offset from thread pointer to __private_ss.  */
-  int psso = TARGET_64BIT ? 0x38 : 0x20;
+  int psso = 0x38;
   rtx tp = s390_get_thread_pointer ();
   rtx guard = gen_rtx_MEM (Pmode, plus_constant (Pmode, tp, psso));
   rtx reg = gen_reg_rtx (Pmode);
   rtx cc;
-  if (TARGET_64BIT)
-    emit_insn (gen_subdi3 (reg, stack_pointer_rtx, operands[0]));
-  else
-    emit_insn (gen_subsi3 (reg, stack_pointer_rtx, operands[0]));
+  emit_insn (gen_subdi3 (reg, stack_pointer_rtx, operands[0]));
   cc = s390_emit_compare (VOIDmode, GT, reg, guard);
   s390_emit_jump (operands[1], cc);
 
@@ -12953,11 +11850,11 @@
 ;    allow the edge to the BB with the call done label to be
 ;    redirected both need to make use of the same label_ref.
 
-(define_insn "@split_stack_call<mode>"
+(define_insn "split_stack_calldi"
   [(set (pc) (label_ref (match_operand 2 "" "")))     ; call done label
-   (set (reg:P 1) (unspec_volatile:P [(match_operand 0 "bras_sym_operand" "X")
-				      (reg:P 1)]
-				     UNSPECV_SPLIT_STACK_CALL))
+   (set (reg:DI 1) (unspec_volatile:DI [(match_operand 0 "bras_sym_operand" "X")
+					(reg:DI 1)]
+				       UNSPECV_SPLIT_STACK_CALL))
    (use (label_ref (match_operand 1 "" "X")))         ; parm block label
    (use (match_operand 3 "const_int_operand" "X"))    ; frame size
    (use (match_operand 4 "const_int_operand" "X"))]   ; arg size
@@ -12971,14 +11868,14 @@
 
 ; As above but with a conditional jump
 
-(define_insn "@split_stack_cond_call<mode>"
+(define_insn "split_stack_cond_calldi"
   [(set (pc)
 	(if_then_else
 	  (match_operand 5 "" "")                     ; condition
 	  (label_ref (match_operand 2 "" ""))         ; call done label
 	  (pc)))
-   (set (reg:P 1) (unspec_volatile:P [(match_operand 0 "bras_sym_operand" "X")
-				      (reg:P 1)]
+   (set (reg:DI 1) (unspec_volatile:DI [(match_operand 0 "bras_sym_operand" "X")
+					(reg:DI 1)]
 				     UNSPECV_SPLIT_STACK_CALL))
    (use (label_ref (match_operand 1 "" "X")))         ; parm block label
    (use (match_operand 3 "const_int_operand" "X"))    ; frame size
diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt
index 93bd55a07e9d..687bad5ec2d5 100644
--- a/gcc/config/s390/s390.opt
+++ b/gcc/config/s390/s390.opt
@@ -44,11 +44,13 @@ Variable
 long s390_cost_pointer
 
 m31
-Target RejectNegative Negative(m64) InverseMask(64BIT)
-31 bit ABI.
+Target Var(flag_m31) Undocumented
 
+; After removing -m31, -m64 is the only supported ABI.
+; Therefore, specifying -m64 doesn't have any additional effect.
+; However, keep it for backwards compatibility.
 m64
-Target RejectNegative Negative(m31) Mask(64BIT)
+Target Ignore
 64 bit ABI.
 
 march=
@@ -139,7 +141,7 @@ Target Mask(DEBUG_ARG) Save
 Additional debug prints.
 
 mesa
-Target RejectNegative Negative(mzarch) InverseMask(ZARCH)
+Target Var(flag_mesa) Undocumented
 ESA/390 architecture.
 
 mhard-dfp
@@ -243,8 +245,11 @@ mwarn-framesize=
 Target RejectNegative Joined UInteger Var(s390_warn_framesize) Save
 Warn if a single function's framesize exceeds the given framesize.
 
+; After removing ESA/390 support, z/Architecture is the only supported
+; cpu mode.  Therefore, specifying -mzarch doesn't have any additional
+; effect.  However, keep it for backwards compatibility.
 mzarch
-Target RejectNegative Negative(mesa) Mask(ZARCH)
+Target Ignore
 z/Architecture.
 
 ; This option was added to fix some testsuite failures.
diff --git a/gcc/config/s390/s390.opt.urls b/gcc/config/s390/s390.opt.urls
index 77dccc463aa4..1e214feb3a55 100644
--- a/gcc/config/s390/s390.opt.urls
+++ b/gcc/config/s390/s390.opt.urls
@@ -1,8 +1,5 @@
 ; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/s390.opt and generated HTML
 
-m31
-UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m31)
-
 m64
 UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m64-2)
 
@@ -15,9 +12,6 @@ UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mbackchain)
 mdebug
 UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mdebug-1)
 
-mesa
-UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mesa)
-
 mhard-dfp
 UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-dfp-1)
 
diff --git a/gcc/config/s390/s390x.h b/gcc/config/s390/s390x.h
deleted file mode 100644
index 1c25d2d5c2f1..000000000000
--- a/gcc/config/s390/s390x.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Definitions of target machine for IBM zSeries 64-bit
-   Copyright (C) 2002-2026 Free Software Foundation, Inc.
-   Contributed by Hartmut Penner (hpenner@de.ibm.com) and
-                  Ulrich Weigand (uweigand@de.ibm.com).
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-#ifndef _S390X_H
-#define _S390X_H
-
-#define DEFAULT_TARGET_64BIT
-
-#endif
diff --git a/gcc/config/s390/t-linux64 b/gcc/config/s390/t-linux64
index cc6ab367072f..1e5d6789a2ce 100644
--- a/gcc/config/s390/t-linux64
+++ b/gcc/config/s390/t-linux64
@@ -2,10 +2,12 @@
 # are found in /lib32 and /usr/lib32, /lib64 and /usr/lib64 are symlinks to
 # /lib and /usr/lib, while other distributions install libraries into /lib64
 # and /usr/lib64.  The LSB does not enforce the use of /lib64 and /usr/lib64,
-# it doesn't tell anything about the 32bit libraries on those systems.  Set
-# MULTILIB_OSDIRNAMES according to what is found on the target.
+# it doesn't tell anything about the 32bit libraries on those systems.
 
-MULTILIB_OPTIONS = m64/m31
-MULTILIB_DIRNAMES = 64 32
+# After the removal of -m31 there is only one ABI left which means multilib
+# support is not needed anymore.  Still maintain the directory structure for
+# 64-bit s390x which means library directories are named lib64.
+
+MULTILIB_OPTIONS = m64
+MULTILIB_DIRNAMES = 64
 MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
diff --git a/gcc/config/s390/tpf.h b/gcc/config/s390/tpf.h
index ca7440d5563c..149ce703976c 100644
--- a/gcc/config/s390/tpf.h
+++ b/gcc/config/s390/tpf.h
@@ -41,6 +41,8 @@ along with GCC; see the file COPYING3.  If not see
 #undef  WCHAR_TYPE_SIZE
 #define WCHAR_TYPE_SIZE 32
 
+/* This is -1 for "pointer mode" extend.  See ptr_extend in s390.md.  */
+#define POINTERS_EXTEND_UNSIGNED -1
 
 /* TPF OS specific stack-pointer offset.  */
 #undef STACK_POINTER_OFFSET
@@ -49,8 +51,7 @@ along with GCC; see the file COPYING3.  If not see
 /* When building for TPF, set a generic default target that is 64 bits. Also
    enable TPF profiling support and the standard backchain by default.  */
 #undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_TPF_PROFILING | MASK_64BIT | MASK_ZARCH \
-			| MASK_HARD_DFP | MASK_BACKCHAIN)
+#define TARGET_DEFAULT (MASK_TPF_PROFILING | MASK_HARD_DFP | MASK_BACKCHAIN)
 
 /* Exception handling.  */
 
@@ -93,7 +94,7 @@ along with GCC; see the file COPYING3.  If not see
    make it work with older binutils.  */
 #undef  ASM_SPEC
 #define ASM_SPEC					\
-  "%{m31&m64}%{mesa&mzarch}%{march=z*}"			\
+  "%{march=z*}"						\
   "%{march=arch5:-march=z900}"				\
   "%{march=arch6:-march=z990}"				\
   "%{march=arch7:-march=z9-ec}"				\
diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md
index f0be6f10c1ac..b65c52a95f9f 100644
--- a/gcc/config/s390/vector.md
+++ b/gcc/config/s390/vector.md
@@ -358,7 +358,7 @@
 (define_split
   [(set (match_operand:V_128 0 "register_operand" "")
         (match_operand:V_128 1 "memory_operand" ""))]
-  "TARGET_ZARCH && reload_completed
+  "reload_completed
    && !VECTOR_REG_P (operands[0])
    && !s_operand (operands[1], VOIDmode)"
   [(set (match_dup 0) (match_dup 1))]
@@ -473,7 +473,7 @@
          "=f,f,f,R,T,v,v,d,v,R,  f,  v,  v,  v,  v,  v,  Q,  Q,  d,  d,f,d,d,d,d,T,b")
         (match_operand:V_64 1 "general_operand"
          " f,R,T,f,f,v,d,v,R,v,j00,j00,jm1,jyy,jxx,jzz,j00,jm1,j00,jm1,d,f,b,d,T,d,d"))]
-  "TARGET_ZARCH"
+  ""
   "@
    ldr\t%0,%1
    ld\t%0,%1
@@ -3183,7 +3183,7 @@
 ; operand in a VR, therefore load it into a FPR pair first.
 (define_expand "floatuns<mode>tf2_vr"
   [(set (match_dup 2)
-	(unsigned_float:FPRX2 (match_operand:GPR 1 "register_operand" "")))
+	(unsigned_float:FPRX2 (match_operand:DSI 1 "register_operand" "")))
    (set (match_operand:TF                        0 "register_operand" "")
 	(subreg:TF (match_dup 2) 0))]
   "TARGET_VXE"
@@ -3193,7 +3193,7 @@
 
 (define_expand "floatuns<mode>tf2"
   [(match_operand:TF  0 "register_operand" "")
-   (match_operand:GPR 1 "register_operand" "")]
+   (match_operand:DSI 1 "register_operand" "")]
   "HAVE_TF (floatuns<mode>tf2)"
   { EXPAND_TF (floatuns<mode>tf2, 2); })
 
@@ -3214,9 +3214,9 @@
 (define_expand "fix_trunctf<mode>2_vr"
   [(set (match_dup 2)
 	(unspec:FPRX2 [(match_operand:TF 1 "register_operand")] UNSPEC_TF_TO_FPRX2))
-   (parallel [(set (match_operand:GPR 0 "register_operand" "")
-		   (fix:GPR (match_dup 2)))
-	      (unspec:GPR [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
+   (parallel [(set (match_operand:DSI 0 "register_operand" "")
+		   (fix:DSI (match_dup 2)))
+	      (unspec:DSI [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
 	      (clobber (reg:CC CC_REGNUM))])]
   "TARGET_VXE"
 {
@@ -3224,7 +3224,7 @@
 })
 
 (define_expand "fix_trunctf<mode>2"
-  [(match_operand:GPR 0 "register_operand" "")
+  [(match_operand:DSI 0 "register_operand" "")
    (match_operand:TF  1 "register_operand" "")]
   "HAVE_TF (fix_trunctf<mode>2)"
   { EXPAND_TF (fix_trunctf<mode>2, 2); })
@@ -3246,9 +3246,9 @@
 (define_expand "fixuns_trunctf<mode>2_vr"
   [(set (match_dup 2)
 	(unspec:FPRX2 [(match_operand:TF 1 "register_operand")] UNSPEC_TF_TO_FPRX2))
-   (parallel [(set (match_operand:GPR 0 "register_operand" "")
-		   (unsigned_fix:GPR (match_dup 2)))
-	      (unspec:GPR [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
+   (parallel [(set (match_operand:DSI 0 "register_operand" "")
+		   (unsigned_fix:DSI (match_dup 2)))
+	      (unspec:DSI [(const_int BFP_RND_TOWARD_0)] UNSPEC_ROUND)
 	      (clobber (reg:CC CC_REGNUM))])]
   "TARGET_VXE"
 {
@@ -3256,7 +3256,7 @@
 })
 
 (define_expand "fixuns_trunctf<mode>2"
-  [(match_operand:GPR 0 "register_operand" "")
+  [(match_operand:DSI 0 "register_operand" "")
    (match_operand:TF  1 "register_operand" "")]
   "HAVE_TF (fixuns_trunctf<mode>2)"
   { EXPAND_TF (fixuns_trunctf<mode>2, 2); })
@@ -3566,7 +3566,7 @@
    (match_operand:QI 3 "register_operand")
    (match_operand:QI 4 "vll_bias_operand")
   ]
-  "TARGET_VX && TARGET_64BIT"
+  "TARGET_VX"
 {
   rtx mem = adjust_address (operands[1], BLKmode, 0);
 
@@ -3582,7 +3582,7 @@
    (match_operand:QI 2 "register_operand")
    (match_operand:QI 3 "vll_bias_operand")
   ]
-  "TARGET_VX && TARGET_64BIT"
+  "TARGET_VX"
 {
   rtx mem = adjust_address (operands[0], BLKmode, 0);
 
diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md
index a5cac359c1cd..6d06f1a7915a 100644
--- a/gcc/config/s390/vx-builtins.md
+++ b/gcc/config/s390/vx-builtins.md
@@ -435,8 +435,6 @@
 ; Vector scatter element
 
 ; vscef, vsceg
-
-; A 64 bit target address generated from 32 bit elements
 (define_insn "vec_scatter_element<V_HW_4:mode>_DI"
   [(set (mem:<non_vec>
 	 (plus:DI (zero_extend:DI
@@ -447,27 +445,10 @@
 	(vec_select:<non_vec>
 	 (match_operand:V_HW_4                    0 "register_operand"   "v")
 	 (parallel [(match_dup 3)])))]
-  "TARGET_VX && TARGET_64BIT && UINTVAL (operands[3]) < 4"
+  "TARGET_VX && UINTVAL (operands[3]) < 4"
   "vscef\t%v0,%O2(%v1,%R2),%3"
   [(set_attr "op_type" "VRV")])
 
-; A 31 bit target address is generated from 64 bit elements
-; vsceg
-(define_insn "vec_scatter_element<V_HW_2:mode>_SI"
-  [(set (mem:<non_vec>
-	 (plus:SI (subreg:SI
-		   (vec_select:<non_vec_int>
-		    (match_operand:<TOINTVEC>     1 "register_operand"   "v")
-		    (parallel [(match_operand:QI  3 "const_mask_operand" "C")])) 4)
-	  (match_operand:SI                       2 "address_operand"    "ZQ")))
-    (vec_select:<non_vec>
-     (match_operand:V_HW_2                        0 "register_operand"   "v")
-     (parallel [(match_dup 3)])))]
-  "TARGET_VX && !TARGET_64BIT && UINTVAL (operands[3]) < GET_MODE_NUNITS (<V_HW_2:MODE>mode)"
-  "vsce<V_HW_2:bhfgq>\t%v0,%O2(%v1,%R2),%3"
-  [(set_attr "op_type" "VRV")])
-
-; Element size and target address size is the same
 ; vscef, vsceg
 (define_insn "vec_scatter_element<mode>_<non_vec_int>"
   [(set (mem:<non_vec>
@@ -483,33 +464,6 @@
   "vsce<bhfgq>\t%v0,%O2(%v1,%R2),%3"
   [(set_attr "op_type" "VRV")])
 
-; Depending on the address size we have to expand a different pattern.
-; This however cannot be represented in s390-builtins.def so we do the
-; multiplexing here in the expander.
-(define_expand "vec_scatter_element<V_HW_32_64:mode>"
-  [(match_operand:V_HW_32_64 0 "register_operand" "")
-   (match_operand:<TOINTVEC> 1 "register_operand" "")
-   (match_operand 2 "address_operand" "")
-   (match_operand:QI 3 "const_mask_operand" "")]
-  "TARGET_VX"
-{
-  if (TARGET_64BIT)
-    {
-      PUT_MODE (operands[2], DImode);
-      emit_insn (
-	gen_vec_scatter_element<V_HW_32_64:mode>_DI (operands[0], operands[1],
-						     operands[2], operands[3]));
-    }
-  else
-    {
-      PUT_MODE (operands[2], SImode);
-      emit_insn (
-	gen_vec_scatter_element<V_HW_32_64:mode>_SI (operands[0], operands[1],
-						     operands[2], operands[3]));
-    }
-  DONE;
-})
-
 
 ; Vector select
 
diff --git a/gcc/configure b/gcc/configure
index ceb51cb63dcd..cba5a9ecbd6a 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -28307,23 +28307,6 @@ x:	.word 2
 	la.tls.gd a0,x
         call __tls_get_addr'
 	;;
-  s390-*-*)
-    conftest_s='
-	.section ".tdata","awT",@progbits
-foo:	.long	25
-	.text
-	.long	foo@TLSGD
-	.long	foo@TLSLDM
-	.long	foo@DTPOFF
-	.long	foo@NTPOFF
-	.long	foo@GOTNTPOFF
-	.long	foo@INDNTPOFF
-	l	%r1,foo@GOTNTPOFF(%r12)
-	l	%r1,0(%r1):tls_load:foo
-	bas	%r14,0(%r1,%r13):tls_gdcall:foo
-	bas	%r14,0(%r1,%r13):tls_ldcall:foo'
-	tls_as_opt="-m31"
-	;;
   s390x-*-*)
     conftest_s='
 	.section ".tdata","awT",@progbits
@@ -31568,7 +31551,7 @@ $as_echo "#define HAVE_AS_16B_ATOMIC 1" >>confdefs.h
 fi
 
     ;;
-    s390*-*-*)
+    s390x-*-*)
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .gnu_attribute support" >&5
 $as_echo_n "checking assembler for .gnu_attribute support... " >&6; }
 if ${gcc_cv_as_s390_gnu_attribute+:} false; then :
@@ -33701,7 +33684,7 @@ fi
 case "$target" in
   powerpc*-*-linux* | \
   sparc*-*-linux* | \
-  s390*-*-linux* | \
+  s390x-*-linux* | \
   alpha*-*-linux*)
 
 # Check whether --with-long-double-128 was given.
@@ -33710,7 +33693,7 @@ if test "${with_long_double_128+set}" = set; then :
 else
 
       case "$target" in
-	s390*-*-linux-musl*)
+	s390x-*-linux-musl*)
 	  gcc_cv_target_ldbl128=yes
 	  ;;
 	powerpc*-*-linux-musl*)
@@ -35076,7 +35059,7 @@ fi
 
 
 case $target in
-  s390*-linux*)
+  s390x-linux*)
   if test x"$enable_s390_excess_float_precision" = xauto; then
     # Can we autodetect the behavior of the target libc?
     if test "$target" = "$host" -a "$host" = "$build"; then
diff --git a/gcc/configure.ac b/gcc/configure.ac
index ccd1020413a5..6c560ceb90f4 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -4220,23 +4220,6 @@ x:	.word 2
 	la.tls.gd a0,x
         call __tls_get_addr'
 	;;
-  s390-*-*)
-    conftest_s='
-	.section ".tdata","awT",@progbits
-foo:	.long	25
-	.text
-	.long	foo@TLSGD
-	.long	foo@TLSLDM
-	.long	foo@DTPOFF
-	.long	foo@NTPOFF
-	.long	foo@GOTNTPOFF
-	.long	foo@INDNTPOFF
-	l	%r1,foo@GOTNTPOFF(%r12)
-	l	%r1,0(%r1):tls_load:foo
-	bas	%r14,0(%r1,%r13):tls_gdcall:foo
-	bas	%r14,0(%r1,%r13):tls_ldcall:foo'
-	tls_as_opt="-m31"
-	;;
   s390x-*-*)
     conftest_s='
 	.section ".tdata","awT",@progbits
@@ -5545,7 +5528,7 @@ x:
       [AC_DEFINE(HAVE_AS_16B_ATOMIC, 1,
 	  [Define if your assembler supports LSX and SCQ for 16B atomic.])])
     ;;
-    s390*-*-*)
+    s390x-*-*)
     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
       gcc_cv_as_s390_gnu_attribute,,
       [.gnu_attribute 8,1],,
@@ -6952,14 +6935,14 @@ AS_IF([test x$gcc_cv_sys_sdt_h = xyes], [
 case "$target" in
   powerpc*-*-linux* | \
   sparc*-*-linux* | \
-  s390*-*-linux* | \
+  s390x-*-linux* | \
   alpha*-*-linux*)
     AC_ARG_WITH(long-double-128,
       [AS_HELP_STRING([--with-long-double-128],
 		      [use 128-bit long double by default])],
       gcc_cv_target_ldbl128="$with_long_double_128", [
       case "$target" in
-	s390*-*-linux-musl*)
+	s390x-*-linux-musl*)
 	  gcc_cv_target_ldbl128=yes
 	  ;;
 	powerpc*-*-linux-musl*)
@@ -7804,7 +7787,7 @@ AC_ARG_ENABLE(s390-excess-float-precision,
   [],[enable_s390_excess_float_precision=auto])
 
 case $target in
-  s390*-linux*)
+  s390x-linux*)
   if test x"$enable_s390_excess_float_precision" = xauto; then
     # Can we autodetect the behavior of the target libc?
     if test "$target" = "$host" -a "$host" = "$build"; then
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index aab839952a04..315210918777 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -879,7 +879,7 @@ mips64orion, mips64vr, mipsel, mipsisa32, mipsisa32r2, mipsisa64, mipsisa64r2,
 mipsisa64r2el, mipsisa64sb1, mipsisa64sr71k, mipstx39, mmix, mn10300, moxie,
 msp430, nds32be, nds32le, nvptx, or1k, pdp11, powerpc, powerpc64,
 powerpc64le, powerpcle, pru, riscv32, riscv32be, riscv64, riscv64be, rl78, rx,
-s390, s390x, sh, shle, sparc, sparc64, tic6x, v850,
+s390x, sh, shle, sparc, sparc64, tic6x, v850,
 v850e, v850e1, vax, visium, x86_64, xstormy16, xtensa
 @end quotation
 
@@ -2239,7 +2239,7 @@ you are building a bi-arch or multi-arch Binutils in a combined tree.
 On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
 defaulted to o32.
 Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
-mips-linux and s390-linux.
+and mips-linux.
 
 @item --enable-default-pie
 Turn on @option{-fPIE} and @option{-pie} by default.
@@ -2732,7 +2732,7 @@ target if target Binutils supported.
 
 @item --enable-s390-excess-float-precision
 @itemx --disable-s390-excess-float-precision
-On s390(x) targets, enable treatment of float expressions with double precision
+On s390x targets, enable treatment of float expressions with double precision
 when in standards-compliant mode (e.g., when @code{--std=c99} or
 @code{-fexcess-precision=standard} are given).
 
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 4cdea7118423..606d666cd51b 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -1427,7 +1427,7 @@ See RS/6000 and PowerPC Options.
 -mlong-double-64  -mlong-double-128
 -mbackchain  -mpacked-stack
 -msmall-exec  -mmvcle
--m64  -m31  -mdebug  -mesa  -mzarch
+-m64  -mdebug  -mzarch
 -mhtm  -mvx  -mzvector
 -mtpf-trace  -mtpf-trace-skip  -mmain
 -mfused-madd  -mno-fused-madd
@@ -33232,29 +33232,19 @@ exceed 64k.  The default is to use the @code{basr} instruction instead,
 which does not have this limitation.
 
 @opindex m64
-@opindex m31
 @item -m64
-@itemx -m31
-When @option{-m31} is specified, generate code compliant to the
-GNU/Linux for S/390 ABI@.  When @option{-m64} is specified, generate
-code compliant to the GNU/Linux for zSeries ABI@.  This allows GCC in
-particular to generate 64-bit instructions.  For the @samp{s390}
-targets, the default is @option{-m31}, while the @samp{s390x}
-targets default to @option{-m64}.  Note, @option{-m31} is deprecated and
-support will be removed.
+After the removal of @option{-m31}, option @option{-m64} has no counterpart
+anymore.  For the sake of backwards compatibility, the option is still accepted
+but doesn't have any effect anymore.  Therefore, generated code comprises
+64-bit instructions and follows the GNU/Linux for zSeries ABI by default.
+
 
 @opindex mzarch
-@opindex mesa
 @item -mzarch
-@itemx -mesa
-When @option{-mzarch} is specified, generate code using the
-instructions available on z/Architecture.
-When @option{-mesa} is specified, generate code using the
-instructions available on ESA/390.  Note that @option{-mesa} is
-not possible with @option{-m64}.
-When generating code compliant to the GNU/Linux for S/390 ABI,
-the default is @option{-mesa}.  When generating code compliant
-to the GNU/Linux for zSeries ABI, the default is @option{-mzarch}.
+After the removal of @option{-mesa}, option @option{-mzarch} has no counterpart
+anymore.  For the sake of backwards compatibility, the option is still accepted
+but doesn't have any effect anymore.  Therefore, generated code comprises
+instructions available on z/Architecture by default.
 
 @opindex mhtm
 @opindex mno-htm
diff --git a/gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c b/gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c
index d3962bdc344c..ed86b446fedc 100644
--- a/gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c
+++ b/gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target arm*-*-* s390-*-* } } */
+/* { dg-do compile { target arm*-*-* } } */
 /* { dg-options "-std=c99" } we need long long */
 /* { dg-additional-options "-mcpu=unset -march=armv7-a+fp -marm" { target arm*-*-* } } */
 
@@ -7,9 +7,6 @@
 #if defined (__arm__)
 # define GPR1 "{r4}"
 # define GPR2_RAW "r5"
-#elif defined (__s390__)
-# define GPR1 "{r4}"
-# define GPR2_RAW "r5"
 #endif
 
 #define GPR2 "{"GPR2_RAW"}"
diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-8.c b/gcc/testsuite/gcc.dg/builtin-bswap-8.c
index 3dbde6ba0ab4..35f2bd6b5d18 100644
--- a/gcc/testsuite/gcc.dg/builtin-bswap-8.c
+++ b/gcc/testsuite/gcc.dg/builtin-bswap-8.c
@@ -1,7 +1,6 @@
 /* { dg-do compile { target arm*-*-* alpha*-*-* i?86-*-* powerpc*-*-* rs6000-*-* x86_64-*-* s390*-*-* } } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-options "-O2 -fdump-rtl-combine" } */
-/* { dg-options "-O2 -fdump-rtl-combine -march=z900" { target s390-*-* } } */
 
 #include <stdint.h>
 
diff --git a/gcc/testsuite/gcc.dg/ifcvt-4.c b/gcc/testsuite/gcc.dg/ifcvt-4.c
index 485352df6e60..0a7b1b3fb665 100644
--- a/gcc/testsuite/gcc.dg/ifcvt-4.c
+++ b/gcc/testsuite/gcc.dg/ifcvt-4.c
@@ -4,7 +4,6 @@
 /* { dg-additional-options "-mtune-ctrl=^one_if_conv_insn" { target { i?86-*-* x86_64-*-* } } } */
 /* { dg-skip-if "Multiple set if-conversion not guaranteed on all subtargets" { "arm*-*-* avr-*-* cris-*-* hppa*64*-*-* visium-*-*" riscv*-*-* msp430-*-* pru-*-* loongarch32-*-* } }  */
 /* { dg-skip-if "" { { sparc*-*-* } && { ! sparc_v9 } } }  */
-/* { dg-skip-if "" { "s390x-*-*" } { "-m31" } }  */
 
 typedef int word __attribute__((mode(word)));
 
diff --git a/gcc/testsuite/gcc.dg/optimize-bswaphi-1.c b/gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
index a5d8bfd5838a..286432cb4444 100644
--- a/gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
+++ b/gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
@@ -2,7 +2,6 @@
 /* { dg-require-effective-target bswap } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-options "-O2 -fdump-tree-bswap" } */
-/* { dg-additional-options "-march=z900" { target s390-*-* } } */
 
 #include <stdint.h>
 
diff --git a/gcc/testsuite/gcc.dg/optimize-bswapsi-3.c b/gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
index 7cd1b406a871..44ab8ffa308b 100644
--- a/gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
+++ b/gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
@@ -2,7 +2,6 @@
 /* { dg-require-effective-target bswap } */
 /* { dg-require-effective-target stdint_types } */
 /* { dg-options "-O2 -fdump-tree-optimized" } */
-/* { dg-additional-options "-march=z900" { target s390-*-* } } */
 
 typedef int SItype __attribute__ ((mode (SI)));
 typedef int DItype __attribute__ ((mode (DI)));
diff --git a/gcc/testsuite/gcc.dg/optimize-bswapsi-4.c b/gcc/testsuite/gcc.dg/optimize-bswapsi-4.c
index cfcc8324c574..35a1ff300c57 100644
--- a/gcc/testsuite/gcc.dg/optimize-bswapsi-4.c
+++ b/gcc/testsuite/gcc.dg/optimize-bswapsi-4.c
@@ -1,7 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target bswap } */
 /* { dg-options "-O2 -fdump-tree-bswap" } */
-/* { dg-additional-options "-march=z900" { target s390-*-* } } */
 
 typedef unsigned char u8;
 typedef unsigned int u32;
diff --git a/gcc/testsuite/gcc.dg/optimize-bswapsi-5.c b/gcc/testsuite/gcc.dg/optimize-bswapsi-5.c
index 5934aacf75a0..4651f276932c 100644
--- a/gcc/testsuite/gcc.dg/optimize-bswapsi-5.c
+++ b/gcc/testsuite/gcc.dg/optimize-bswapsi-5.c
@@ -1,7 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target bswap } */
 /* { dg-options "-O2 -fno-tree-vectorize -fdump-tree-optimized -fno-inline-functions" } */
-/* { dg-additional-options "-march=z900" { target s390-*-* } } */
 
 struct L { unsigned int l[2]; };
 union U { double a; struct L l; } u;
diff --git a/gcc/testsuite/gcc.dg/optimize-bswapsi-6.c b/gcc/testsuite/gcc.dg/optimize-bswapsi-6.c
index 75f8aecb5d89..e850493e4902 100644
--- a/gcc/testsuite/gcc.dg/optimize-bswapsi-6.c
+++ b/gcc/testsuite/gcc.dg/optimize-bswapsi-6.c
@@ -2,7 +2,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target bswap } */
 /* { dg-options "-O2 -fno-tree-vectorize -fdump-tree-store-merging" } */
-/* { dg-additional-options "-march=z900" { target s390-*-* } } */
 
 typedef unsigned char u8;
 typedef unsigned int u32;
diff --git a/gcc/testsuite/gcc.dg/optimize-bswapsi-7.c b/gcc/testsuite/gcc.dg/optimize-bswapsi-7.c
index 1e4db5e48189..e3f71a32e5f5 100644
--- a/gcc/testsuite/gcc.dg/optimize-bswapsi-7.c
+++ b/gcc/testsuite/gcc.dg/optimize-bswapsi-7.c
@@ -2,7 +2,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target bswap } */
 /* { dg-options "-O2 -fno-tree-vectorize -fdump-tree-optimized" } */
-/* { dg-additional-options "-march=z900" { target s390-*-* } } */
 
 static unsigned int
 f1 (unsigned int x)
diff --git a/gcc/testsuite/gcc.dg/pr120525.c b/gcc/testsuite/gcc.dg/pr120525.c
index 5ab7a2244dc2..7dc32e55ba5d 100644
--- a/gcc/testsuite/gcc.dg/pr120525.c
+++ b/gcc/testsuite/gcc.dg/pr120525.c
@@ -1,6 +1,5 @@
 /* { dg-do compile { target fpic } } */
 /* { dg-options "-O2 -fpic -g" } */
-/* { dg-additional-options "-m31" { target s390x-*-* } } */
 
 typedef __SIZE_TYPE__ uintptr_t;
 static __thread uintptr_t start_sp;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
index a8f2c3bbfdb4..a43fd79fef72 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
@@ -5,11 +5,6 @@
 /* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -mshort-calls" {target epiphany-*-*} } */
   
 
-/* On 31-bit S/390 the function address will be stored (once) in the literal pool,
-   so scan-assembler-times "foo" will return 1 even if the loop is fully unrolled.
-   -msmall-exec avoids this by enabling a call instruction with immediate operand.  */
-/* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -msmall-exec" { target s390-*-* } } */
-
 /* On Darwin, we call extern functions via a stub in PIC mode which is default and
    the stub is named after the function.  To avoid this we use -static to go out
    of PIC mode.  */
diff --git a/gcc/testsuite/gcc.misc-tests/linkage.exp b/gcc/testsuite/gcc.misc-tests/linkage.exp
index 1f9d6afb40ae..07e542e2ec3e 100644
--- a/gcc/testsuite/gcc.misc-tests/linkage.exp
+++ b/gcc/testsuite/gcc.misc-tests/linkage.exp
@@ -61,15 +61,6 @@ if { [isnative] && ![is_remote host] } then {
 	    if [ string match "*64*" $file_string ] {
 		set native_cflags "-xarch=amd64"
 	    }
-	}
-	if [istarget "s390*-*-linux*"] {
-	    set file_string [exec file "linkage-x.o"]
-	    if [ string match "*32-bit*" $file_string ] {
-		set native_cflags "-m31"
-	    }
-	    if [ string match "*64-bit*" $file_string ] {
-		set native_cflags "-m64"
-	    }
 	} elseif {[istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"]
 		  || [istarget "i?86-*-gnu*"] || [istarget "x86_64-*-gnu*"] } then {
 	    set file_string [exec file "linkage-x.o"]
diff --git a/gcc/testsuite/gcc.target/s390/20020926-1.c b/gcc/testsuite/gcc.target/s390/20020926-1.c
deleted file mode 100644
index aaa134276968..000000000000
--- a/gcc/testsuite/gcc.target/s390/20020926-1.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Make sure that LEGITIMIZE_ADDRESS is called to handle
-   negative displacements.  */
-
-/* { dg-do compile { target { s390-*-* } } } */
-/* { dg-options "-O2 -mesa" } */
-
-int test (int *addr)
-{
-  return *(addr - 1);
-}
-
-/* { dg-final { scan-assembler "-4096" } } */
-/* { dg-final { scan-assembler-not "ahi" } } */
-
diff --git a/gcc/testsuite/gcc.target/s390/20140327-1.c b/gcc/testsuite/gcc.target/s390/20140327-1.c
deleted file mode 100644
index 25c739137721..000000000000
--- a/gcc/testsuite/gcc.target/s390/20140327-1.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* { dg-do compile { target { ! lp64 } } } */
-/* { dg-options "-O3 -mzarch" } */
-
-void
-foo ()
-{
-  asm ("" ::: "%f4");
-}
-
-/* { dg-final { scan-assembler "ld" } } */
diff --git a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c
index ebc024795872..d6f3ad9cf641 100644
--- a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c
+++ b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O3 -march=z13 -mzarch --save-temps" } */
+/* { dg-options "-O3 -march=z13 --save-temps" } */
 
 #include <stddef.h>
 #include <limits.h>
@@ -74,10 +74,7 @@ main ()
 /* { dg-final { scan-assembler-not "\tcgr" } } */
 /* { dg-final { scan-assembler-not "\txgr" } } */
 /* { dg-final { scan-assembler-not "\tngr" } } */
-/* On 31 bit the long long variants use risbgn to merge the 32 bit
-   regs into a 64 bit reg.  */
-/* { dg-final { scan-assembler-not "\trisbg" { target { lp64 } } } } */
+/* { dg-final { scan-assembler-not "\trisbg" } } */
 /* Just one for the ret != 6 comparison.  */
 /* { dg-final { scan-assembler-times "ci" 1 } } */
-/* { dg-final { scan-assembler-times "\tlochio\t" 6 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tlocghio\t" 6 { target lp64 } } } */
+/* { dg-final { scan-assembler-times "\tlocghio\t" 6 } } */
diff --git a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c
index 8bd1a764bc68..63eb8a683a5b 100644
--- a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c
+++ b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O3 -march=z13 -mzarch --save-temps" } */
+/* { dg-options "-O3 -march=z13 --save-temps" } */
 
 #include <stddef.h>
 #include <limits.h>
@@ -73,10 +73,7 @@ main ()
 /* { dg-final { scan-assembler-not "\tcgr" } } */
 /* { dg-final { scan-assembler-not "\txgr" } } */
 /* { dg-final { scan-assembler-not "\tngr" } } */
-/* On 31 bit the long long variants use risbgn to merge the 32 bit
-   regs into a 64 bit reg.  */
-/* { dg-final { scan-assembler-not "\trisbg" { target { lp64 } } } } */
+/* { dg-final { scan-assembler-not "\trisbg" } } */
 /* Just one for the ret != 3 comparison.  */
 /* { dg-final { scan-assembler-times "ci" 1 } } */
-/* { dg-final { scan-assembler-times "\tlochio\t" 6 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tlocghio\t" 6 { target lp64 } } } */
+/* { dg-final { scan-assembler-times "\tlocghio\t" 6 */
diff --git a/gcc/testsuite/gcc.target/s390/asm-constant-1.c b/gcc/testsuite/gcc.target/s390/asm-constant-1.c
index 980bea1cfab0..e76904eb3457 100644
--- a/gcc/testsuite/gcc.target/s390/asm-constant-1.c
+++ b/gcc/testsuite/gcc.target/s390/asm-constant-1.c
@@ -1,11 +1,9 @@
 /* { dg-do compile } */
-/* { dg-final { scan-assembler {# 127 127 128 128 32767 32767 32768 32768 2147483647 2147483647 -2147483648 -2147483648} { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler {# 127 127 128 128 32767 32767 32768 32768 2147483647 2147483647 2147483648 2147483648 9223372036854775807 9223372036854775807 -9223372036854775808 -9223372036854775808} { target lp64 } } } */
+/* { dg-final { scan-assembler {# 127 127 128 128 32767 32767 32768 32768 2147483647 2147483647 2147483648 2147483648 9223372036854775807 9223372036854775807 -9223372036854775808 -9223372036854775808} } } */
 
 void
 test (void)
 {
-#ifdef __s390x__
   __asm__ __volatile__ ("# %0 %c0 %1 %c1 %2 %c2 %3 %c3 %4 %c4 %5 %c5 %6 %c6 %7 %c7" ::
       "i" (0x7f),
       "i" (0x80),
@@ -15,13 +13,4 @@ test (void)
       "i" (0x80000000L),
       "i" (0x7fffffffffffffffL),
       "i" (0x8000000000000000L));
-#else
-  __asm__ __volatile__ ("# %0 %c0 %1 %c1 %2 %c2 %3 %c3 %4 %c4 %5 %c5" ::
-      "i" (0x7f),
-      "i" (0x80),
-      "i" (0x7fff),
-      "i" (0x8000),
-      "i" (0x7fffffff),
-      "i" (0x80000000L));
-#endif
 }
diff --git a/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c b/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c
index 6df0c75584f4..0f0093f34fc8 100644
--- a/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c
+++ b/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c
@@ -1,18 +1,15 @@
 /* { dg-do compile } */
-/* { dg-options "-O3 -march=z10 -mzarch -fPIC -mno-pic-data-is-text-relative" } */
+/* { dg-options "-O3 -march=z10 -fPIC -mno-pic-data-is-text-relative" } */
 
 #include "call.h"
 
 /* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} } } */
-/* { dg-final { scan-assembler {lgrl\t%r2,foo@GOTENT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {lrl\t%r2,foo@GOTENT\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {lgrl\t%r2,foo@GOTENT\n} } } */
 
 /* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
 /* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
 
 /* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
-/* { dg-final { scan-assembler {lgrl\t%r2,fooweak@GOTENT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {lrl\t%r2,fooweak@GOTENT\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {lgrl\t%r2,fooweak@GOTENT\n} } } */
 
-/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {foos:\n\t.long\tfoo\n\t.long\tfoostatic\n\t.long\tfooweak\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z10-pic.c b/gcc/testsuite/gcc.target/s390/call-z10-pic.c
index 30145d5b7608..4da626310b18 100644
--- a/gcc/testsuite/gcc.target/s390/call-z10-pic.c
+++ b/gcc/testsuite/gcc.target/s390/call-z10-pic.c
@@ -4,15 +4,12 @@
 #include "call.h"
 
 /* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} } } */
-/* { dg-final { scan-assembler {lgrl\t%r2,foo@GOTENT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {lrl\t%r2,foo@GOTENT\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {lgrl\t%r2,foo@GOTENT\n} } } */
 
 /* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
 /* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
 
 /* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
-/* { dg-final { scan-assembler {lgrl\t%r2,fooweak@GOTENT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {lrl\t%r2,fooweak@GOTENT\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {lgrl\t%r2,fooweak@GOTENT\n} } } */
 
-/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {foos:\n\t.long\tfoo\n\t.long\tfoostatic\n\t.long\tfooweak\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z10.c b/gcc/testsuite/gcc.target/s390/call-z10.c
index d4eab4ff89fc..c261838d62a8 100644
--- a/gcc/testsuite/gcc.target/s390/call-z10.c
+++ b/gcc/testsuite/gcc.target/s390/call-z10.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O3 -march=z10 -mzarch" } */
+/* { dg-options "-O3 -march=z10" } */
 
 #include "call.h"
 
@@ -12,5 +12,4 @@
 /* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
 /* { dg-final { scan-assembler {larl\t%r2,fooweak\n} } } */
 
-/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {foos:\n\t.long\tfoo\n\t.long\tfoostatic\n\t.long\tfooweak\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c b/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c
index fe515bf1903d..d36b760b9e2e 100644
--- a/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c
+++ b/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c
@@ -12,5 +12,4 @@
 /* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
 /* { dg-final { scan-assembler {larl\t%r\d+,fooweak@GOTENT\n} } } */
 
-/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {foos:\n\t.long\tfoo\n\t.long\tfoostatic\n\t.long\tfooweak\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z9-pic.c b/gcc/testsuite/gcc.target/s390/call-z9-pic.c
index 43e1c2f7cb38..3bfd5a8199bb 100644
--- a/gcc/testsuite/gcc.target/s390/call-z9-pic.c
+++ b/gcc/testsuite/gcc.target/s390/call-z9-pic.c
@@ -12,5 +12,4 @@
 /* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
 /* { dg-final { scan-assembler {larl\t%r\d+,fooweak@GOTENT\n} } } */
 
-/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {foos:\n\t.long\tfoo\n\t.long\tfoostatic\n\t.long\tfooweak\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z9.c b/gcc/testsuite/gcc.target/s390/call-z9.c
index b755f33498a3..f2b0f78fa41e 100644
--- a/gcc/testsuite/gcc.target/s390/call-z9.c
+++ b/gcc/testsuite/gcc.target/s390/call-z9.c
@@ -12,5 +12,4 @@
 /* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
 /* { dg-final { scan-assembler {larl\t%r2,fooweak\n} } } */
 
-/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {foos:\n\t.long\tfoo\n\t.long\tfoostatic\n\t.long\tfooweak\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/dwarfregtable-1.c b/gcc/testsuite/gcc.target/s390/dwarfregtable-1.c
deleted file mode 100644
index b12549874515..000000000000
--- a/gcc/testsuite/gcc.target/s390/dwarfregtable-1.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Make sure the dwarf reg size table doesn't change for 31 bit.  */
-
-/* { dg-do compile { target { ! lp64 } } } */
-/* { dg-options "-mesa" } */
-
-#define DWARF_FRAME_REGISTERS 34
-
-static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1];
-static unsigned char ref_reg_size_table[DWARF_FRAME_REGISTERS + 1] =
-  { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 0 };
-
-int
-main ()
-{
-  __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
-  if (__builtin_memcmp (ref_reg_size_table,
-			dwarf_reg_size_table, DWARF_FRAME_REGISTERS + 1) != 0)
-    __builtin_abort ();
-  return 0;
-}
diff --git a/gcc/testsuite/gcc.target/s390/dwarfregtable-2.c b/gcc/testsuite/gcc.target/s390/dwarfregtable-2.c
deleted file mode 100644
index bc5a9f8e6d84..000000000000
--- a/gcc/testsuite/gcc.target/s390/dwarfregtable-2.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Make sure the dwarf reg size table doesn't change for 31 bit zarch.  */
-
-/* { dg-do compile { target { ! lp64 } } } */
-/* { dg-options "-mzarch" } */
-
-#define DWARF_FRAME_REGISTERS 34
-
-static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1];
-static unsigned char ref_reg_size_table[DWARF_FRAME_REGISTERS + 1] =
-  { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 0 };
-
-int
-main ()
-{
-  __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
-  if (__builtin_memcmp (ref_reg_size_table,
-			dwarf_reg_size_table, DWARF_FRAME_REGISTERS + 1) != 0)
-    __builtin_abort ();
-  return 0;
-}
diff --git a/gcc/testsuite/gcc.target/s390/fcall-saved.c b/gcc/testsuite/gcc.target/s390/fcall-saved.c
index a08155372f90..6a10bfabb519 100644
--- a/gcc/testsuite/gcc.target/s390/fcall-saved.c
+++ b/gcc/testsuite/gcc.target/s390/fcall-saved.c
@@ -1,11 +1,9 @@
 /* { dg-do compile } */
-/* { dg-options "-O3 -mzarch -fcall-saved-r4" } */
+/* { dg-options "-O3 -fcall-saved-r4" } */
 
 void test(void) {
     asm volatile("nop" ::: "r4");
 }
 
-/* { dg-final { scan-assembler-times "\tstg\t" 1 { target { lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tlg\t" 1 { target { lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tst\t" 1 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tl\t" 1 { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler-times "\tstg\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tlg\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/s390/fp2int1.c b/gcc/testsuite/gcc.target/s390/fp2int1.c
deleted file mode 100644
index 4a90a8b91ded..000000000000
--- a/gcc/testsuite/gcc.target/s390/fp2int1.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Test for the 32 bit fp to 64 bit int conversion routines.
-   
-   On S/390 32 bit we use our own implementations in order to be IEEE
-   complaint as we are with our machine instructions.  These missed to
-   throw FE_INVALID exceptions in a bunch of cases.  */
-
-/* { dg-do run { target s390-*-* } } */
-/* { dg-options "-O3 -mesa" } */
-/* { dg-require-effective-target fenv_exceptions } */
-
-#define _GNU_SOURCE
-#include <stdlib.h>
-#include <stdio.h>
-#include <fenv.h>
-
-#define INFINITYf       (__builtin_inff())
-#define INFINITY        (__builtin_inf())
-#define INFINITYl       (__builtin_infl())
-#define NANf            (__builtin_nanf (""))
-#define NAN             (__builtin_nan (""))
-#define NANl            (__builtin_nanl (""))
-
-#define TESTEXCEPT_FUNC(FUNC, TYPE_FROM, TYPE_TO)			\
-  TYPE_TO								\
-  __attribute__((noinline)) FUNC (TYPE_FROM a)				\
-  {									\
-    asm volatile ("" : : "f" (a));					\
-    return (TYPE_TO)a;							\
-  }
-
-#define TESTEXCEPT(FUNC, EXCEPT, EXPECT, VALUE, TYPE_TO)		\
-  {									\
-    TYPE_TO b;								\
-    feclearexcept (FE_ALL_EXCEPT);					\
-    b = FUNC (VALUE);							\
-    if ((fetestexcept (EXCEPT) & (EXCEPT)) != EXPECT)			\
-      {									\
-	printf ("FAIL in line: %d\n", __LINE__);			\
-	abort ();							\
-      }									\
-  }
-
-#define TESTEXCEPT_FUNC_ALLFLOATS(FUNC, TYPE_TO)		\
-  TESTEXCEPT_FUNC (FUNC##_f, float, TYPE_TO);			\
-  TESTEXCEPT_FUNC (FUNC##_d, double, TYPE_TO);			\
-  TESTEXCEPT_FUNC (FUNC##_l, long double, TYPE_TO);		\
-
-#define TESTEXCEPT_ALLFLOATS(FUNC, EXCEPT, EXPECT, VALUE, TYPE_TO)	\
-  TESTEXCEPT (FUNC##_f, EXCEPT, EXPECT, VALUE##f, TYPE_TO);		\
-  TESTEXCEPT (FUNC##_d, EXCEPT, EXPECT, VALUE, TYPE_TO);		\
-  TESTEXCEPT (FUNC##_l, EXCEPT, EXPECT, VALUE##l, TYPE_TO);		\
-
-TESTEXCEPT_FUNC_ALLFLOATS (a, unsigned long long);
-TESTEXCEPT_FUNC_ALLFLOATS (u, long long);
-
-
-int
-main ()
-{
-  /* Prevent getting signals.  */
-  fedisableexcept (FE_INVALID);
-
-  /* To unsigned long long */
-
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, FE_INVALID, INFINITY, unsigned long long);
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, FE_INVALID, -INFINITY, unsigned long long);
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, FE_INVALID, NAN, unsigned long long);
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, FE_INVALID, -NAN, unsigned long long);
-
-  /* Negative values >-1.0 must not cause FE_INVALID.  */
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, 0, -0x0.ffffffp0, unsigned long long);
-  /* -1.0 instead must.  */
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, FE_INVALID, -0x1.0p+0, unsigned long long);
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, 0, 0x1.0p+63, unsigned long long);
-  TESTEXCEPT_ALLFLOATS (a, FE_INVALID, FE_INVALID, 0x1.0p+64, unsigned long long);
-
-  /* To signed long long */
-
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, FE_INVALID, INFINITY, long long);
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, FE_INVALID, -INFINITY, long long);
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, FE_INVALID, NAN, long long);
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, FE_INVALID, -NAN, long long);
-
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, 0, -0x1.0p+63, long long);
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, FE_INVALID, -0x1.1p+63, long long);
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, 0, 0x0.fffffp+63, long long);
-  TESTEXCEPT_ALLFLOATS (u, FE_INVALID, FE_INVALID, 0x1.0p+63, long long);
-
-  /* If there are additional bits which would not make it into the
-     integer value no exception is supposed to occur.  */
-  TESTEXCEPT (u_l, FE_INVALID,          0, -0x1.000000000000000123p+63l, long long);
-  TESTEXCEPT (u_l, FE_INVALID, FE_INVALID, -0x1.000000000000000223p+63l, long long);
-
-  return 0;
-}
diff --git a/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c b/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c
index 0ee10841cac5..72b87d40b855 100644
--- a/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c
+++ b/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c
@@ -1,6 +1,6 @@
 /* Test accesses to global array elements in PIC code.  */
 /* { dg-do compile } */
-/* { dg-options "-O1 -march=z10 -mzarch -fPIC" } */
+/* { dg-options "-O1 -march=z10 -fPIC" } */
 
 extern char a[] __attribute__ ((aligned (2)));
 extern char *b;
@@ -8,7 +8,6 @@ extern char *b;
 void c()
 {
   b = a + 4;
-  /* { dg-final { scan-assembler "(?n)\n\tlgrl\t%r\\d+,a@GOTENT\n" { target lp64 } } } */
-  /* { dg-final { scan-assembler "(?n)\n\tlrl\t%r\\d+,a@GOTENT\n" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "(?n)\n\tlgrl\t%r\\d+,a@GOTENT\n" } } */
   /* { dg-final { scan-assembler-not "(?n)\n\tlarl\t%r\\d+,a\[^@\]" } } */
 }
diff --git a/gcc/testsuite/gcc.target/s390/insv-1.c b/gcc/testsuite/gcc.target/s390/insv-1.c
index 020b5d8e3c04..206646e04e75 100644
--- a/gcc/testsuite/gcc.target/s390/insv-1.c
+++ b/gcc/testsuite/gcc.target/s390/insv-1.c
@@ -109,10 +109,4 @@ foo4c (unsigned long a, unsigned long b)
 }
 
 /* The functions foo3, foo4, foo3b, foo4b no longer use risbg but rosbg instead.
-
-   On 64 bit, four risbg go away and four new ones appear in other functions
-     { dg-final { scan-assembler-times "risbg" 6 { target { lp64 } } } }
-
-   ... but not on 31 bit.
-     { dg-final { scan-assembler-times "risbg" 2 { target { ! lp64 } } } }
-*/
+   { dg-final { scan-assembler-times "risbg" 6 } }  */
diff --git a/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c b/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c
index e1c7806ad96f..4afc22054295 100644
--- a/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c
+++ b/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c
@@ -3,10 +3,8 @@
 
 #include "isfinite-isinf-isnormal-signbit.h"
 
-/* { dg-final { scan-assembler-times {tcxb\t%f[0-9]+,1365} 0 { target lp64 } } } SIGNBIT long double */
-/* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,1365} 0 { target lp64 } } } SIGNBIT _Decimal128 */
-/* { dg-final { scan-assembler-times {tcxb\t%f[0-9]+,1365} 1 { target { ! lp64 } } } } SIGNBIT long double */
-/* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,1365} 1 { target { ! lp64 } } } } SIGNBIT _Decimal128 */
+/* { dg-final { scan-assembler-times {tcxb\t%f[0-9]+,1365} 0 } } SIGNBIT long double */
+/* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,1365} 0 } } SIGNBIT _Decimal128 */
 /* { dg-final { scan-assembler-times {tcxb\t%f[0-9]+,4032} 1 } } ISFINITE long double */
 /* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,4032} 1 } } ISFINITE _Decimal128 */
 /* { dg-final { scan-assembler-times {tcxb\t%f[0-9]+,48} 1 } } ISINF long double */
diff --git a/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c b/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c
index 5c9986d06006..cb5c788eef40 100644
--- a/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c
+++ b/gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c
@@ -3,10 +3,8 @@
 
 #include "isfinite-isinf-isnormal-signbit.h"
 
-/* { dg-final { scan-assembler-times {wftcixb\t%v[0-9]+,%v[0-9]+,1365} 0 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,1365} 0 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {wftcixb\t%v[0-9]+,%v[0-9]+,1365} 1 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,1365} 1 { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler-times {wftcixb\t%v[0-9]+,%v[0-9]+,1365} 0 } } */
+/* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,1365} 0 } } */
 /* { dg-final { scan-assembler-times {wftcixb\t%v[0-9]+,%v[0-9]+,4032} 1 } } */
 /* { dg-final { scan-assembler-times {tdcxt\t%f[0-9]+,4032} 1 } } */
 /* { dg-final { scan-assembler-times {wftcixb\t%v[0-9]+,%v[0-9]+,48} 1 } } */
diff --git a/gcc/testsuite/gcc.target/s390/larl-1.c b/gcc/testsuite/gcc.target/s390/larl-1.c
index e22975ba9601..2ec96ab6c028 100644
--- a/gcc/testsuite/gcc.target/s390/larl-1.c
+++ b/gcc/testsuite/gcc.target/s390/larl-1.c
@@ -1,14 +1,13 @@
 /* Check if load-address-relative instructions are created */
 
-/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-do compile } */
 /* { dg-options "-O2 -march=z10 -mzarch -fno-section-anchors" } */
 
 /* An explicitly misaligned symbol.  This symbol is NOT aligned as
    mandated by our ABI.  However, the back-end needs to handle that in
    order to make things like __attribute__((packed)) work.  The symbol
    address is expected to be loaded from literal pool.  */
-/* { dg-final { scan-assembler "lgrl\t%r2," { target { lp64 } } } } */
-/* { dg-final { scan-assembler "lrl\t%r2," { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "lgrl\t%r2," } } */
 extern char align1 __attribute__((aligned(1)));
 
 /* { dg-final { scan-assembler "larl\t%r2,align2" } } */
diff --git a/gcc/testsuite/gcc.target/s390/leaf-profile.c b/gcc/testsuite/gcc.target/s390/leaf-profile.c
index 604774007575..fbb2f1c37487 100644
--- a/gcc/testsuite/gcc.target/s390/leaf-profile.c
+++ b/gcc/testsuite/gcc.target/s390/leaf-profile.c
@@ -6,5 +6,4 @@ foo ()
 {
 }
 /* Make sure no stack frame is generated.  */
-/* { dg-final { scan-assembler-not "ahi" { target s390-*-* } } } */
 /* { dg-final { scan-assembler-not "aghi" { target s390x-*-* } } } */
diff --git a/gcc/testsuite/gcc.target/s390/load-relative-check.c b/gcc/testsuite/gcc.target/s390/load-relative-check.c
index a55bc2442f17..7c85347b2d2a 100644
--- a/gcc/testsuite/gcc.target/s390/load-relative-check.c
+++ b/gcc/testsuite/gcc.target/s390/load-relative-check.c
@@ -1,14 +1,10 @@
 /* Check if load-relative instructions are created */
-/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-do compile } */
 /* { dg-options "-O2 -march=z10 -mzarch -fno-section-anchors" } */
 
-/* { dg-final { scan-assembler "lgfrl\t%r.?,b.4" { target { lp64 } } } } */
-/* { dg-final { scan-assembler "lgfrl\t%r.?,s.12" { target { lp64 } } } } */
-/* { dg-final { scan-assembler "lgrl\t%r.?,s" { target { lp64 } } } } */
-
-/* { dg-final { scan-assembler "lrl\t%r.?,b.4" { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler "lrl\t%r.?,s.8" { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler "lrl\t%r.?,s" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "lgfrl\t%r.?,b.4" } } */
+/* { dg-final { scan-assembler "lgfrl\t%r.?,s.12" } } */
+/* { dg-final { scan-assembler "lgrl\t%r.?,s" } } */
 
 int b[20];
 
diff --git a/gcc/testsuite/gcc.target/s390/load-thread-pointer-once-2.c b/gcc/testsuite/gcc.target/s390/load-thread-pointer-once-2.c
index 36b1ed8800f1..e69acd959f80 100644
--- a/gcc/testsuite/gcc.target/s390/load-thread-pointer-once-2.c
+++ b/gcc/testsuite/gcc.target/s390/load-thread-pointer-once-2.c
@@ -10,5 +10,4 @@ void a(void)
     c(b);
 }
 
-/* { dg-final { scan-assembler-times {\n\tear\t} 2 { target { lp64 } } } } */
-/* { dg-final { scan-assembler-times {\n\tear\t} 1 { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler-times {\n\tear\t} 2 } } */
diff --git a/gcc/testsuite/gcc.target/s390/load-thread-pointer-once.c b/gcc/testsuite/gcc.target/s390/load-thread-pointer-once.c
index 21a5bfaa7321..b127b6356c0f 100644
--- a/gcc/testsuite/gcc.target/s390/load-thread-pointer-once.c
+++ b/gcc/testsuite/gcc.target/s390/load-thread-pointer-once.c
@@ -8,5 +8,4 @@ void *bar()
   return (foo = __builtin_thread_pointer());
 }
 
-/* { dg-final { scan-assembler-times {\n\tear\t} 2 { target { lp64 } } } } */
-/* { dg-final { scan-assembler-times {\n\tear\t} 1 { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler-times {\n\tear\t} 2 } } */
diff --git a/gcc/testsuite/gcc.target/s390/loc-1.c b/gcc/testsuite/gcc.target/s390/loc-1.c
index 26dbd9cecb38..cfe0a122f55b 100644
--- a/gcc/testsuite/gcc.target/s390/loc-1.c
+++ b/gcc/testsuite/gcc.target/s390/loc-1.c
@@ -9,8 +9,7 @@ unsigned long loc_r (unsigned long rc, unsigned long cond, unsigned long val)
     rc = val;
   return rc;
 }
-/* { dg-final { scan-assembler "\tlocgrne\t%r2,%r4" { target { lp64 } } } } */
-/* { dg-final { scan-assembler "\tlocrne\t%r2,%r4" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "\tlocgrne\t%r2,%r4" } } */
 
 long loc_hi (long rc, long cond)
 {
@@ -18,5 +17,4 @@ long loc_hi (long rc, long cond)
     rc = (long)-1;
   return rc;
 }
-/* { dg-final { scan-assembler "\tlocghine\t%r2,-1" { target { lp64 } } } } */
-/* { dg-final { scan-assembler "\tlochine\t%r2,-1" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "\tlocghine\t%r2,-1" } } */
diff --git a/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c b/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c
index 7d098d8d987e..96e15452f6d1 100644
--- a/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c
+++ b/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c
@@ -16,25 +16,25 @@
 __attribute__ ((noinline))
 unsigned int andc_vv(unsigned int a, unsigned int b)
 { return ~b & a; }
-/* { dg-final { scan-assembler ":18:.\* \{\\*andsi3_\(esa\|zarch\)\}" } } */
+/* { dg-final { scan-assembler ":18:.\* \{\\*andsi3\}" } } */
 /* { dg-final { scan-assembler ":18:.\* \{\\*xorsi3\}" } } */
 
 __attribute__ ((noinline))
 unsigned int andc_pv(unsigned int *a, unsigned int b)
 { return ~b & *a; }
-/* { dg-final { scan-assembler ":24:.\* \{\\*andsi3_\(esa\|zarch\)\}" } } */
+/* { dg-final { scan-assembler ":24:.\* \{\\*andsi3\}" } } */
 /* { dg-final { scan-assembler ":24:.\* \{\\*xorsi3\}" } } */
 
 __attribute__ ((noinline))
 unsigned int andc_vp(unsigned int a, unsigned int *b)
 { return ~*b & a; }
-/* { dg-final { scan-assembler ":30:.\* \{\\*andsi3_\(esa\|zarch\)\}" } } */
+/* { dg-final { scan-assembler ":30:.\* \{\\*andsi3\}" } } */
 /* { dg-final { scan-assembler ":30:.\* \{\\*xorsi3\}" } } */
 
 __attribute__ ((noinline))
 unsigned int andc_pp(unsigned int *a, unsigned int *b)
 { return ~*b & *a; }
-/* { dg-final { scan-assembler ":36:.\* \{\\*andsi3_\(esa\|zarch\)\}" } } */
+/* { dg-final { scan-assembler ":36:.\* \{\\*andsi3\}" } } */
 /* { dg-final { scan-assembler ":36:.\* \{\\*xorsi3\}" } } */
 
 /* { dg-final { scan-assembler-times "\tng\?r\?k\?\t" 4 } } */
diff --git a/gcc/testsuite/gcc.target/s390/mnop-mcount-m31-mzarch.c b/gcc/testsuite/gcc.target/s390/mnop-mcount-m31-mzarch.c
deleted file mode 100644
index 874ceb96fe8a..000000000000
--- a/gcc/testsuite/gcc.target/s390/mnop-mcount-m31-mzarch.c
+++ /dev/null
@@ -1,8 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-m31 -mzarch -pg -mnop-mcount" } */
-
-void
-profileme (void)
-{
-  /* { dg-final { scan-assembler "NOPs for -mnop-mcount \\(7 halfwords\\)\n.*brcl\t0,0\n.*brcl\t0,0\n.*bcr\t0,0" } } */
-}
diff --git a/gcc/testsuite/gcc.target/s390/mrecord-mcount.c b/gcc/testsuite/gcc.target/s390/mrecord-mcount.c
index 54ced9f7a11a..d8a23ffdca43 100644
--- a/gcc/testsuite/gcc.target/s390/mrecord-mcount.c
+++ b/gcc/testsuite/gcc.target/s390/mrecord-mcount.c
@@ -5,7 +5,6 @@ void
 profileme (void)
 {
   /* { dg-final { scan-assembler ".section __mcount_loc, \"a\",@progbits" } } */
-  /* { dg-final { scan-assembler ".long 1b" { target { ! lp64 } } } } */
-  /* { dg-final { scan-assembler ".quad 1b" { target { lp64 } } } } */
+  /* { dg-final { scan-assembler ".quad 1b" } } */
   /* { dg-final { scan-assembler ".previous" } } */
 }
diff --git a/gcc/testsuite/gcc.target/s390/mul-signed-overflow-1.c b/gcc/testsuite/gcc.target/s390/mul-signed-overflow-1.c
index e8b1938dab7e..20205bdabbdc 100644
--- a/gcc/testsuite/gcc.target/s390/mul-signed-overflow-1.c
+++ b/gcc/testsuite/gcc.target/s390/mul-signed-overflow-1.c
@@ -50,10 +50,7 @@ main ()
 /* { dg-final { scan-assembler-not "\tcgr" } } */
 /* { dg-final { scan-assembler-not "\txgr" } } */
 /* { dg-final { scan-assembler-not "\tngr" } } */
-/* On 31 bit the long long variants use risbgn to merge the 32 bit
-   regs into a 64 bit reg.  */
-/* { dg-final { scan-assembler-not "\trisbg" { target { lp64 } } } } */
+/* { dg-final { scan-assembler-not "\trisbg" } } */
 /* Just one for the ret != 3 comparison.  */
 /* { dg-final { scan-assembler-times "ci" 1 } } */
-/* { dg-final { scan-assembler-times "\tlochio\t" 3 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tlocghio\t" 3 { target lp64 } } } */
+/* { dg-final { scan-assembler-times "\tlocghio\t" 3 } } */
diff --git a/gcc/testsuite/gcc.target/s390/mul-signed-overflow-2.c b/gcc/testsuite/gcc.target/s390/mul-signed-overflow-2.c
index 01328e1d286a..6c0e6fcfab06 100644
--- a/gcc/testsuite/gcc.target/s390/mul-signed-overflow-2.c
+++ b/gcc/testsuite/gcc.target/s390/mul-signed-overflow-2.c
@@ -52,8 +52,7 @@ main ()
 /* { dg-final { scan-assembler-not "\tngr" } } */
 /* On 31 bit the long long variants use risbgn to merge the 32 bit
    regs into a 64 bit reg.  */
-/* { dg-final { scan-assembler-not "\trisbg" { target { lp64 } } } } */
+/* { dg-final { scan-assembler-not "\trisbg" } } */
 /* Just one for the ret != 3 comparison.  */
 /* { dg-final { scan-assembler-times "ci" 1 } } */
-/* { dg-final { scan-assembler-times "\tlochio\t" 3 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tlocghio\t" 3 { target lp64 } } } */
+/* { dg-final { scan-assembler-times "\tlocghio\t" 3 } } */
diff --git a/gcc/testsuite/gcc.target/s390/not.c b/gcc/testsuite/gcc.target/s390/not.c
index dae95f7d8a06..6a61312ba654 100644
--- a/gcc/testsuite/gcc.target/s390/not.c
+++ b/gcc/testsuite/gcc.target/s390/not.c
@@ -7,5 +7,4 @@ foo (unsigned long a)
   return ~a;
 }
 
-/* { dg-final { scan-assembler-times "\tnngrk\t" 1 { target { lp64 } } } } */
-/* { dg-final { scan-assembler-times "\tnnrk\t" 1 { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler-times "\tnngrk\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/s390/pr102222.c b/gcc/testsuite/gcc.target/s390/pr102222.c
deleted file mode 100644
index 47d075e47fcc..000000000000
--- a/gcc/testsuite/gcc.target/s390/pr102222.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O2 -m31 -mesa" } */
-
-struct squashfs_reg_inode_header_1 read_inode_inode;
-
-int read_inode_val;
-
-struct squashfs_reg_inode_header_1
-{
-  int file_size:32;
-} __attribute__((packed)) read_inode ();
-
-void foo (void)
-{
-  read_inode_inode.file_size = read_inode_val;
-}
diff --git a/gcc/testsuite/gcc.target/s390/pr106355-2.c b/gcc/testsuite/gcc.target/s390/pr106355-2.c
deleted file mode 100644
index ddbdba5d278b..000000000000
--- a/gcc/testsuite/gcc.target/s390/pr106355-2.c
+++ /dev/null
@@ -1,8 +0,0 @@
-/* { dg-do compile { target { s390-*-* } } } */
-/* { dg-options "-foptimize-sibling-calls -mzarch" } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,bar} } } */
-
-/* This tests function s390_call_saved_register_used where
-   GET_CODE (parm_rtx) == PARALLEL holds.  */
-
-#include "pr106355.h"
diff --git a/gcc/testsuite/gcc.target/s390/pr106355-3.c b/gcc/testsuite/gcc.target/s390/pr106355-3.c
deleted file mode 100644
index 39daea44fc4a..000000000000
--- a/gcc/testsuite/gcc.target/s390/pr106355-3.c
+++ /dev/null
@@ -1,8 +0,0 @@
-/* { dg-do compile { target { s390-*-* } } } */
-/* { dg-options "-foptimize-sibling-calls -mesa" } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,bar} } } */
-
-/* This tests function s390_call_saved_register_used where
-   REG_P (parm_rtx) and nregs == 2 holds.  */
-
-#include "pr106355.h"
diff --git a/gcc/testsuite/gcc.target/s390/pr119873-5.c b/gcc/testsuite/gcc.target/s390/pr119873-5.c
deleted file mode 100644
index b5a7950d62b4..000000000000
--- a/gcc/testsuite/gcc.target/s390/pr119873-5.c
+++ /dev/null
@@ -1,11 +0,0 @@
-/* PR target/119873 */
-/* { dg-do compile } */
-/* { dg-options "-O2 -m31 -mzarch" } */
-
-extern void foo (int x, int y, int z, long long w, int v);
-
-void
-bar (int x, int y, int z, long long w, int v)
-{
-  [[gnu::musttail]] return foo (x, y, z, w, v);
-}
diff --git a/gcc/testsuite/gcc.target/s390/pr42224.c b/gcc/testsuite/gcc.target/s390/pr42224.c
index 67146d20fb9b..c2ebc1329565 100644
--- a/gcc/testsuite/gcc.target/s390/pr42224.c
+++ b/gcc/testsuite/gcc.target/s390/pr42224.c
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O0 -Wno-implicit-function-declaration" } */
 
+#ifdef __tpf__
+
 typedef char* __char_ptr32 __attribute__ (( mode (SI) ));
 typedef __char_ptr32 *__char_ptr_char_ptr32 __attribute__ ((mode (SI)));
 
@@ -33,3 +35,4 @@ to_ptr32_ptr32 (char **ptr64)
 
 }
 
+#endif
diff --git a/gcc/testsuite/gcc.target/s390/pr61078.c b/gcc/testsuite/gcc.target/s390/pr61078.c
deleted file mode 100644
index 40f6ad7df098..000000000000
--- a/gcc/testsuite/gcc.target/s390/pr61078.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* This testcase is extracted from s390_emit_prologue.  The negation
-   of a 64bit value got split incorrectly on 31 bit.  */
-
-/* { dg-do run { target { ! lp64 } } } */
-/* { dg-options "-O2 -mesa" } */
-
-extern void abort (void);
-
-long long frame_size = 42;
-
-int __attribute__((noinline))
-foo  (int a __attribute__((unused)), long long b)
-{
-  return (int)b;
-}
-
-int
-main ()
-{
-    if (frame_size > 0)
-    {
-      if (foo (0, -frame_size) != -42)
-	abort ();
-    }
-    return 0;
-}
diff --git a/gcc/testsuite/gcc.target/s390/preserve-args-1.c b/gcc/testsuite/gcc.target/s390/preserve-args-1.c
index 24dcf547432a..c3c0229f58ae 100644
--- a/gcc/testsuite/gcc.target/s390/preserve-args-1.c
+++ b/gcc/testsuite/gcc.target/s390/preserve-args-1.c
@@ -10,8 +10,7 @@ foo (int a, int b, int c, double d, double e)
   return a + c + (int)d + (int)e;
 }
 
-/* { dg-final { scan-assembler "stmg\t%r2,%r4,\[0-9\]*\\(%r15\\)" { target lp64 } } } */
-/* { dg-final { scan-assembler "stm\t%r2,%r4,\[0-9\]*\\(%r15\\)" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "stmg\t%r2,%r4,\[0-9\]*\\(%r15\\)" } } */
 
 /* { dg-final { scan-assembler "std\t%f0,\[0-9\]*\\(%r15\\)" } } */
 /* { dg-final { scan-assembler "std\t%f2,\[0-9\]*\\(%r15\\)" } } */
diff --git a/gcc/testsuite/gcc.target/s390/preserve-args-3.c b/gcc/testsuite/gcc.target/s390/preserve-args-3.c
index f4b135ab8e66..53a73195c000 100644
--- a/gcc/testsuite/gcc.target/s390/preserve-args-3.c
+++ b/gcc/testsuite/gcc.target/s390/preserve-args-3.c
@@ -12,8 +12,7 @@ foo (int a, int, int c, double d, ...)
   return a + c + va_arg(argp, int) + va_arg(argp, int) + (int)va_arg(argp, double);
 }
 
-/* { dg-final { scan-assembler "stmg\t%r2,%r15,\[0-9\]*\\(%r15\\)" { target lp64 } } } */
-/* { dg-final { scan-assembler "stm\t%r2,%r15,\[0-9\]*\\(%r15\\)" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "stmg\t%r2,%r15,\[0-9\]*\\(%r15\\)" } } */
 
 /* { dg-final { scan-assembler "std\t%f0,\[0-9\]*\\(%r15\\)" } } */
 /* { dg-final { scan-assembler "std\t%f2,\[0-9\]*\\(%r15\\)" } } */
diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-1.c b/gcc/testsuite/gcc.target/s390/risbg-ll-1.c
index 1cac15820c06..bebc796d009d 100644
--- a/gcc/testsuite/gcc.target/s390/risbg-ll-1.c
+++ b/gcc/testsuite/gcc.target/s390/risbg-ll-1.c
@@ -25,8 +25,7 @@ i32 f1 (i32 v_foo)
 // ...and again with i64.
 i64 f2 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f2:\n\trisbg\t%r2,%r2,64-1,128\\\+63,53\\\+1" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f2:\n\trisbg\t%r3,%r3,64-1,128\\\+63,53\\\+1\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f2:\n\trisbg\t%r2,%r2,64-1,128\\\+63,53\\\+1" } } */
   i64 v_shr = ((ui64)v_foo) >> 10;
   i64 v_and = v_shr & 1;
   return v_and;
@@ -44,8 +43,7 @@ i32 f3 (i32 v_foo)
 // ...and again with i64.
 i64 f4 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f4:\n\trisbg\t%r2,%r2,60,128\\\+61,64-22" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f4:\n\trisbg\t%r3,%r3,60,128\\\+61,64-22\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f4:\n\trisbg\t%r2,%r2,60,128\\\+61,64-22" } } */
   i64 v_shr = ((ui64)v_foo) >> 22;
   i64 v_and = v_shr & 12;
   return v_and;
@@ -64,8 +62,7 @@ i32 f5 (i32 v_foo)
 // ...and again with i64.
 i64 f6 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f6:\n\trisbg\t%r2,%r2,2,128\\\+60,64-2" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f6:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\trisbg\t%r2,%r3,2,128\\\+60,64-2" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f6:\n\trisbg\t%r2,%r2,2,128\\\+60,64-2" } } */
   i64 v_shr = ((ui64)v_foo) >> 2;
   i64 v_and = v_shr & -8;
   return v_and;
@@ -78,8 +75,7 @@ i32 f7 (i32 v_foo)
   /* Should be
      { dg-final { scan-assembler "f7:\n\tsrl\t%r2,2\n\tnill\t%r2,65529" { xfail { lp64 } } } }
      but because a zeroextend is merged into the pattern it is actually
-     { dg-final { scan-assembler "f7:\n\tsrl\t%r2,2\n\tlgfi\t%r1,1073741817\n\tngr\t%r2,%r1" { target { lp64 } } } }
-     { dg-final { scan-assembler "f7:\n\tsrl\t%r2,2\n\tnill\t%r2,65529" { target { ! lp64 } } } } */
+     { dg-final { scan-assembler "f7:\n\tsrl\t%r2,2\n\tlgfi\t%r1,1073741817\n\tngr\t%r2,%r1" } } */
   i32 v_shr = ((ui32)v_foo) >> 2;
   i32 v_and = v_shr & -7;
   return v_and;
@@ -88,8 +84,7 @@ i32 f7 (i32 v_foo)
 // ...and again with i64.
 i64 f8 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f8:\n\tsrlg\t%r2,%r2,2\n\tnill\t%r2,65529" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f8:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tsrlg\t%r2,%r3,2\n\tnill\t%r2,65529" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f8:\n\tsrlg\t%r2,%r2,2\n\tnill\t%r2,65529" } } */
   i64 v_shr = ((ui64)v_foo) >> 2;
   i64 v_and = v_shr & -7;
   return v_and;
@@ -108,8 +103,7 @@ i32 f9 (i32 v_foo)
 // ...and again with i64.
 i64 f10 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f10:\n\trisbg\t%r2,%r2,56,128\\\+61,2" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f10:\n\trisbg\t%r3,%r3,56,128\\\+61,2\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f10:\n\trisbg\t%r2,%r2,56,128\\\+61,2" } } */
   i64 v_shr = v_foo << 2;
   i64 v_and = v_shr & 255;
   return v_and;
@@ -128,8 +122,7 @@ i32 f11 (i32 v_foo)
 // ...and again with i64.
 i64 f12 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f12:\n\tsllg\t%r2,%r2,2\n\tnill\t%r2,65295" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f12:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tsllg\t%r2,%r3,2\n\tnill\t%r2,65295" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f12:\n\tsllg\t%r2,%r2,2\n\tnill\t%r2,65295" } } */
   i64 v_shr = v_foo << 2;
   i64 v_and = v_shr & -241;
   return v_and;
@@ -140,8 +133,7 @@ i64 f12 (i64 v_foo)
 // shl are not used.
 i32 f13 (i32 v_foo)
 {
-  /* { dg-final { scan-assembler "f13:\n\trisbg\t%r2,%r2,56,128\\\+60,32\\\+14" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f13:\n\trll\t%r2,%r2,14\n\tnilf\t%r2,248" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f13:\n\trisbg\t%r2,%r2,56,128\\\+60,32\\\+14" } } */
   i32 v_parta = v_foo << 14;
   i32 v_partb = ((ui32)v_foo) >> 18;
   i32 v_rotl = v_parta | v_partb;
@@ -152,8 +144,7 @@ i32 f13 (i32 v_foo)
 // ...and again with i64.
 i64 f14 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f14:\n\trisbg\t%r2,%r2,56,128\\\+60,14" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f14:\n\trisbg\t%r3,%r2,56,128\\\+60,46\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f14:\n\trisbg\t%r2,%r2,56,128\\\+60,14" } } */
   i64 v_parta = v_foo << 14;
   i64 v_partb = ((ui64)v_foo) >> 50;
   i64 v_rotl = v_parta | v_partb;
@@ -164,8 +155,7 @@ i64 f14 (i64 v_foo)
 // Try a case in which only the bits from the shl are used.
 i32 f15 (i32 v_foo)
 {
-  /* { dg-final { scan-assembler "f15:\n\trisbg\t%r2,%r2,47,128\\\+49,14" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f15:\n\trll\t%r2,%r2,14\n\tnilf\t%r2,114688" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f15:\n\trisbg\t%r2,%r2,47,128\\\+49,14" } } */
   i32 v_parta = v_foo << 14;
   i32 v_partb = ((ui32)v_foo) >> 18;
   i32 v_rotl = v_parta | v_partb;
@@ -176,8 +166,7 @@ i32 f15 (i32 v_foo)
 // ...and again with i64.
 i64 f16 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f16:\n\trisbg\t%r2,%r2,47,128\\\+49,14" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f16:\n\trisbg\t%r3,%r3,47,128\\\+49,14\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f16:\n\trisbg\t%r2,%r2,47,128\\\+49,14" } } */
   i64 v_parta = v_foo << 14;
   i64 v_partb = ((ui64)v_foo) >> 50;
   i64 v_rotl = v_parta | v_partb;
@@ -192,8 +181,7 @@ i32 f17 (i32 v_foo)
   /* Should be
      { dg-final { scan-assembler "f17:\n\trll\t%r2,%r2,4\n\tnilf\t%r2,126" { xfail { lp64 } } } }
      but because a zeroextend is merged into the pattern it is actually
-     { dg-final { scan-assembler "f17:\n\trll\t%r2,%r2,4\n\trisbg\t%r2,%r2,57,128\\\+62,0" { target { lp64 } } } }
-     { dg-final { scan-assembler "f17:\n\trll\t%r2,%r2,4\n\tnilf\t%r2,126" { target { ! lp64 } } } } */
+     { dg-final { scan-assembler "f17:\n\trll\t%r2,%r2,4\n\trisbg\t%r2,%r2,57,128\\\+62,0" } } */
   i32 v_parta = v_foo << 4;
   i32 v_partb = ((ui32)v_foo) >> 28;
   i32 v_rotl = v_parta | v_partb;
@@ -204,8 +192,7 @@ i32 f17 (i32 v_foo)
 // ...and for i64, where RISBG should do the rotate too.
 i64 f18 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f18:\n\trisbg\t%r2,%r2,57,128\\\+62,4" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f18:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tlhi\t%r2,0\n\trisbg\t%r3,%r3,57,128\\\+62,4" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f18:\n\trisbg\t%r2,%r2,57,128\\\+62,4" } } */
   i64 v_parta = v_foo << 4;
   i64 v_partb = ((ui64)v_foo) >> 60;
   i64 v_rotl = v_parta | v_partb;
@@ -217,8 +204,7 @@ i64 f18 (i64 v_foo)
 // This needs a separate shift and mask on 31 bit.
 i32 f19 (i32 v_foo)
 {
-  /* { dg-final { scan-assembler "f19:\n\trisbg\t%r2,%r2,59,128\\+62,64-28" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f19:\n\tsra\t%r2,28\n\tnilf\t%r2,30" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f19:\n\trisbg\t%r2,%r2,59,128\\+62,64-28" } } */
   i32 v_shr = v_foo >> 28;
   i32 v_and = v_shr & 30;
   return v_and;
@@ -227,8 +213,7 @@ i32 f19 (i32 v_foo)
 // ...and again with i64.  In this case RISBG is the best way of doing the AND.
 i64 f20 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f20:\n\tsrag\t%r2,%r2,60\n\trisbg\t%r2,%r2,59,128\\\+62,0" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f20:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tlhi\t%r2,0\n\tsrag\t%r3,%r3,60\n\tnilf\t%r3,30" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f20:\n\tsrag\t%r2,%r2,60\n\trisbg\t%r2,%r2,59,128\\\+62,0" } } */
   i64 v_shr = v_foo >> 60;
   i64 v_and = v_shr & 30;
   return v_and;
@@ -248,8 +233,7 @@ i32 f21 (i32 v_foo)
 // ...and again with i64.
 i64 f22 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f22:\n\trisbg\t%r2,%r2,60,128\\\+62,64-60" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f22:\n\trisbg\t%r3,%r2,60,128\\\+62,64-28\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f22:\n\trisbg\t%r2,%r2,60,128\\\+62,64-60" } } */
   i64 v_shr = v_foo >> 60;
   i64 v_and = v_shr & 14;
   return v_and;
@@ -259,8 +243,7 @@ i64 f22 (i64 v_foo)
 // natural zero extension.
 i64 f23 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f23:\n\trisbg\t%r2,%r2,64-8,128\\\+63,54\\\+8" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f23:\n\trisbg\t%r3,%r3,64-8,128\\\+63,54\\\+8\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f23:\n\trisbg\t%r2,%r2,64-8,128\\\+63,54\\\+8" } } */
   i64 v_shr = ((ui64)v_foo) >> 2;
   i64 v_and = v_shr & 255;
   return v_and;
@@ -281,8 +264,7 @@ i32 f24 (i32 v_foo)
 // ...and again with i64, where a single RISBG is enough.
 i64 f25 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f25:\n\trisbg\t%r2,%r2,57,128\\\+59,3" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f25:\n\trisbg\t%r3,%r3,57,128\\\+59,3\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f25:\n\trisbg\t%r2,%r2,57,128\\\+59,3" } } */
   i64 v_and = v_foo & 14;
   i64 v_parta = v_and << 3;
   i64 v_partb = ((ui64)v_and) >> 61;
@@ -305,8 +287,7 @@ i32 f26 (i32 v_foo)
 // ...and again with i64, where a single RISBG is OK.
 i64 f27 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f27:\n\trisbg\t%r2,%r2,55,128\\\+52,5" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f27:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\trisbg\t%r2,%r3,55,128\\\+52,5" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f27:\n\trisbg\t%r2,%r2,55,128\\\+52,5" } } */
   i64 v_and = v_foo & -49;
   i64 v_parta = v_and << 5;
   i64 v_partb = ((ui64)v_and) >> 59;
@@ -326,8 +307,7 @@ i32 f28 (i32 v_foo)
 // ...and again with i64.
 i64 f29 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f29:\n\trisbg\t%r2,%r2,0,128\\\+13,49" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f29:\n\trisbg\t%r\[23\],%r3,0,128\\\+13,49\n\tlr\t%r\[23\],%r\[32\]\n\tsrlg\t%r2,%r2" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f29:\n\trisbg\t%r2,%r2,0,128\\\+13,49" } } */
   i64 v_and = v_foo & 32766;
   i64 v_shl = v_and << 49;
   return v_shl;
@@ -345,8 +325,7 @@ i32 f30 (i32 v_foo)
 // ...and again with i64.
 i64 f31 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f31:\n\trisbg\t%r2,%r2,0,128\\\+12,50" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f31:\n\trisbg\t%r\[23\],%r3,0,128\\\+12,50\n\tlr\t%r\[23\],%r\[32\]\n\tsrlg\t%r2,%r2" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f31:\n\trisbg\t%r2,%r2,0,128\\\+12,50" } } */
   i64 v_and = v_foo & 32766;
   i64 v_shl = v_and << 50;
   return v_shl;
@@ -365,8 +344,7 @@ i32 f32 (i32 v_foo)
 // ...and again with i64.
 i64 f33 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f33:\n\tsllg\t%r2,%r2,10\n\tnill\t%r2,58368" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f33:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tsllg\t%r2,%r3,10\n\tnill\t%r2,58368" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f33:\n\tsllg\t%r2,%r2,10\n\tnill\t%r2,58368" } } */
   i64 v_and = v_foo & -7;
   i64 v_shl = v_and << 10;
   return v_shl;
@@ -384,8 +362,7 @@ i32 f34 (i32 v_foo)
 // ...and again with i64.
 i64 f35 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f35:\n\trisbg\t%r2,%r2,64-7,128\\\+63,48\\\+7" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f35:\n\trisbg\t%r3,%r3,64-7,128\\\+63,48\\\+7\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f35:\n\trisbg\t%r2,%r2,64-7,128\\\+63,48\\\+7" } } */
   i64 v_and = v_foo & 65535;
   i64 v_shl = ((ui64)v_and) >> 9;
   return v_shl;
@@ -395,8 +372,7 @@ i64 f35 (i64 v_foo)
 // We can't use RISBG for the shift in that case.
 i32 f36 (i32 v_foo)
 {
-  /* { dg-final { scan-assembler "f36:\n\tsrl\t%r2,1\n\tlgfi\t%r1,2147483635\n\tngr\t%r2,%r1" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f36:\n\tsrl\t%r2,1\n\tnilf\t%r2,2147483635" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f36:\n\tsrl\t%r2,1\n\tlgfi\t%r1,2147483635\n\tngr\t%r2,%r1" } } */
   i32 v_and = v_foo & -25;
   i32 v_shl = ((ui32)v_and) >> 1;
   return v_shl;
@@ -405,8 +381,7 @@ i32 f36 (i32 v_foo)
 // ...and again with i64.
 i64 f37 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f37:\n\(\t.*\n\)*\tsrlg\t%r2,%r2,1\n\tng\t%r2," { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f37:\n\(\t.*\n\)*\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tsrlg\t%r2,%r3,1\n\tng\t%r2," { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f37:\n\(\t.*\n\)*\tsrlg\t%r2,%r2,1\n\tng\t%r2," } } */
   i64 v_and = v_foo & -25;
   i64 v_shl = ((ui64)v_and) >> 1;
   return v_shl;
@@ -416,8 +391,7 @@ i64 f37 (i64 v_foo)
 // use RISBG there.
 i64 f38 (i64 v_foo)
 {
-  /* { dg-final { scan-assembler "f38:\n\tsrag\t%r2,%r2,32\n\tsllg\t%r2,%r2,5" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f38:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tsrag\t%r2,%r3,32\n\tsllg\t%r2,%r2,5" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f38:\n\tsrag\t%r2,%r2,32\n\tsllg\t%r2,%r2,5" } } */
   i64 v_ashr = v_foo >> 32;
   i64 v_shl = v_ashr << 5;
   return v_shl;
@@ -426,8 +400,7 @@ i64 f38 (i64 v_foo)
 // Try a similar thing in which no shifted sign bits are kept.
 i64 f39 (i64 v_foo, i64 *v_dest)
 {
-  /* { dg-final { scan-assembler "f39:\n\tsrag\t%r2,%r2,35\n\(\t.*\n\)*\trisbg\t%r2,%r2,33,128\\\+61,2" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f39:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tlhi\t%r2,0\n\tsrag\t%r3,%r3,35\n\(\t.*\n\)*\trisbg\t%r3,%r3,33,128\\\+61,2" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f39:\n\tsrag\t%r2,%r2,35\n\(\t.*\n\)*\trisbg\t%r2,%r2,33,128\\\+61,2" } } */
   i64 v_ashr = v_foo >> 35;
   *v_dest = v_ashr;
   i64 v_shl = v_ashr << 2;
@@ -438,8 +411,7 @@ i64 f39 (i64 v_foo, i64 *v_dest)
 // ...and again with the next highest shift value, where one sign bit is kept.
 i64 f40 (i64 v_foo, i64 *v_dest)
 {
-  /* { dg-final { scan-assembler "f40:\n\tsrag\t%r2,%r2,36\n\(\t.*\n\)*\trisbg\t%r2,%r2,33,128\\\+61,2" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f40:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\tlhi\t%r2,0\n\tsrag\t%r3,%r3,36\n\(\t.*\n\)*\trisbg\t%r3,%r3,33,128\\\+61,2" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f40:\n\tsrag\t%r2,%r2,36\n\(\t.*\n\)*\trisbg\t%r2,%r2,33,128\\\+61,2" } } */
   i64 v_ashr = v_foo >> 36;
   *v_dest = v_ashr;
   i64 v_shl = v_ashr << 2;
@@ -450,8 +422,7 @@ i64 f40 (i64 v_foo, i64 *v_dest)
 // Check a case where the result is zero-extended.
 i64 f41 (i32 v_a)
 {
-  /* { dg-final { scan-assembler "f41:\n\trisbg\t%r2,%r2,64-28,128\\\+63,34\\\+28" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f41:\n\trisbg\t%r3,%r2,64-28,128\\\+63,34\\\+28\n\tlhi\t%r2,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f41:\n\trisbg\t%r2,%r2,64-28,128\\\+63,34\\\+28" } } */
   i32 v_shl = v_a << 2;
   i32 v_shr = ((ui32)v_shl) >> 4;
   i64 v_ext = (ui64)v_shr;
@@ -464,8 +435,7 @@ i64 f41 (i32 v_a)
 typedef struct { ui64 pad : 63; ui8 a : 1; } t42;
 i64 f42 (t42 v_x)
 {
-  /* { dg-final { scan-assembler "f42:\n\tsllg\t%r2,%r2,63\n\tsrag\t%r2,%r2,63\n\tllgcr\t%r2,%r2" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f42:\n\tsllg\t%r3,%r3,63\n\tlhi\t%r2,0\n\tsrag\t%r3,%r3,63\n\tllcr\t%r3,%r3" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f42:\n\tsllg\t%r2,%r2,63\n\tsrag\t%r2,%r2,63\n\tllgcr\t%r2,%r2" } } */
   ui8 a = v_x.a << 7;
   i8 ext = ((i8)a) >> 7;
   i64 ext2 = (ui64)(ui8)ext;
@@ -475,8 +445,7 @@ i64 f42 (t42 v_x)
 // Check that we get the case where a 64-bit shift is used by a 32-bit and.
 i32 f43 (i64 v_x)
 {
-  /* { dg-final { scan-assembler "f43:\n\trisbg\t%r2,%r2,32,128\\+61,32\\+20\n\tlgfr\t%r2,%r2" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f43:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\trisbg\t%r2,%r3,32,128\\\+61,64-12" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f43:\n\trisbg\t%r2,%r2,32,128\\+61,32\\+20\n\tlgfr\t%r2,%r2" } } */
   i64 v_shr3 = ((ui64)v_x) >> 12;
   i32 v_shr3_tr = (ui32)v_shr3;
   i32 v_conv = v_shr3_tr & -4;
@@ -486,8 +455,7 @@ i32 f43 (i64 v_x)
 // Check that we don't get the case where the 32-bit and mask is not contiguous
 i32 f44 (i64 v_x)
 {
-  /* { dg-final { scan-assembler "f44:\n\tsrlg\t%r2,%r2,12" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f44:\n\tsrlg\t%r2,%r3,12\n\tnilf\t%r2,10" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f44:\n\tsrlg\t%r2,%r2,12" } } */
   i64 v_shr4 = ((ui64)v_x) >> 12;
   i32 v_conv = (ui32)v_shr4;
   i32 v_and = v_conv & 10;
diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-2.c b/gcc/testsuite/gcc.target/s390/risbg-ll-2.c
index ca80602a83ff..b049456157cb 100644
--- a/gcc/testsuite/gcc.target/s390/risbg-ll-2.c
+++ b/gcc/testsuite/gcc.target/s390/risbg-ll-2.c
@@ -23,8 +23,7 @@ i32 f1 (i32 v_a, i32 v_b)
 // ...and again with i64.
 i64 f2 (i64 v_a, i64 v_b)
 {
-  /* { dg-final { scan-assembler "f2:\n\trisbg\t%r2,%r3,60,62,0" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f2:\n\trisbg\t%r3,%r2,0,0\\\+32-1,64-0-32\n\(\t.*\n\)*\trisbg\t%r\[23\],%r5,60,62,0" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f2:\n\trisbg\t%r2,%r3,60,62,0" } } */
   i64 v_anda = v_a & -15;
   i64 v_andb = v_b & 14;
   i64 v_or = v_anda | v_andb;
@@ -45,8 +44,7 @@ i32 f3 (i32 v_a, i32 v_b)
 // ...and again with i64.
 i64 f4 (i64 v_a, i64 v_b)
 {
-  /* { dg-final { scan-assembler "f4:\n\trisbg\t%r2,%r3,64-4,63,\\(64-64\\)\\+4\\+52" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f4:\n\(\t.*\n\)*\trisbg\t%r5,%r5,64-4,128\\+63,\\(64-64\\)\\+52\\+4" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f4:\n\trisbg\t%r2,%r3,64-4,63,\\(64-64\\)\\+4\\+52" } } */
   i64 v_anda = v_a & -16;
   i64 v_shr = ((ui64)v_b) >> 8;
   i64 v_andb = v_shr & 15;
@@ -67,8 +65,7 @@ i32 f5 (i32 v_a, i32 v_b)
 // ...and again with i64.
 i64 f6 (i64 v_a, i64 v_b)
 {
-  /* { dg-final { scan-assembler "f6:\n\trisbg\t%r2,%r3,0,64-10-1,10" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f6:\n\trisbg\t%r5,%r4,0,0\\\+32-1,64-0-32\n\(\t.*\n\)*\trisbg\t%r\[23\],%r5,0,64-10-1,10" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f6:\n\trisbg\t%r2,%r3,0,64-10-1,10" } } */
   i64 v_anda = v_a & 1023;
   i64 v_shlb = v_b << 10;
   i64 v_or = v_anda | v_shlb;
@@ -88,8 +85,7 @@ i32 f7 (i32 v_a, i32 v_b)
 // ...and again with i64.
 i64 f8 (i64 v_a, i64 v_b)
 {
-  /* { dg-final { scan-assembler "f8:\n\trisbg\t%r2,%r3,8,63,64-8" { target { lp64 } } } } */
-  /* With -m31 risbg is not really useful here, so do not test for it.  */
+  /* { dg-final { scan-assembler "f8:\n\trisbg\t%r2,%r3,8,63,64-8" } } */
   i64 v_anda = v_a & -72057594037927936;
   i64 v_shrb = ((ui64)v_b) >> 8;
   i64 v_or = v_anda | v_shrb;
@@ -100,8 +96,7 @@ i64 f8 (i64 v_a, i64 v_b)
 // ands with complement masks.
 i32 f9 (i64 v_x, i32 v_y)
 {
-  /* { dg-final { scan-assembler "f9:\n\trisbg\t%r3,%r2,48,63,64-48" { target { lp64 } }} } */
-  /* { dg-final { scan-assembler "f9:\n\trisbg\t%r4,%r2,32\\+16,63,64-16" { target { ! lp64 } }} } */
+  /* { dg-final { scan-assembler "f9:\n\trisbg\t%r3,%r2,48,63,64-48" } } */
   i64 v_shr6 = ((ui64)v_x) >> 48;
   i32 v_conv = (ui32)v_shr6;
   i32 v_and1 = v_y & -65536;
@@ -113,8 +108,7 @@ i32 f9 (i64 v_x, i32 v_y)
 // ands with incompatible masks.
 i32 f10 (i64 v_x, i32 v_y)
 {
-  /* { dg-final { scan-assembler "f10:\n\tsrlg\t%r2,%r2,48\n\trosbg\t%r2,%r3,0,39,0" { target { lp64 } } } } */
-  /* { dg-final { scan-assembler "f10:\n\tnilf\t%r4,4278190080\n\trosbg\t%r4,%r2,48,63,48" { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler "f10:\n\tsrlg\t%r2,%r2,48\n\trosbg\t%r2,%r3,0,39,0" } } */
   i64 v_shr6 = ((ui64)v_x) >> 48;
   i32 v_conv = (ui32)v_shr6;
   i32 v_and1 = v_y & -16777216;
diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-3.c b/gcc/testsuite/gcc.target/s390/risbg-ll-3.c
index 02f6e046eb9d..e3795e0f8aa0 100644
--- a/gcc/testsuite/gcc.target/s390/risbg-ll-3.c
+++ b/gcc/testsuite/gcc.target/s390/risbg-ll-3.c
@@ -2,7 +2,7 @@
 
 /* Tests ported from the Llvm testsuite. */
 
-/* { dg-do compile { target s390x-*-* } } */
+/* { dg-do compile } */
 /* { dg-options "-O3 -march=zEC12 -mzarch -fno-asynchronous-unwind-tables" } */
 
 #define i64 signed long long
@@ -11,8 +11,7 @@
 // On zEC12, we generally prefer RISBGN.
 i64 f1 (i64 v_a, i64 v_b)
 {
-/* { dg-final { scan-assembler "f1:\n\trisbgn\t%r2,%r3,60,62,0" { target { lp64 } } } } */
-/* { dg-final { scan-assembler "f1:\n\trisbgn\t%r3,%r2,0,0\\\+32-1,64-0-32\n\trisbgn\t%r3,%r5,60,62,0\n" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "f1:\n\trisbgn\t%r2,%r3,60,62,0" } } */
   i64 v_anda = v_a & -15;
   i64 v_andb = v_b & 14;
   i64 v_or = v_anda | v_andb;
@@ -23,8 +22,7 @@ i64 f1 (i64 v_a, i64 v_b)
 extern i64 f2_foo();
 i64 f2 (i64 v_a, i64 v_b)
 {
-/* { dg-final { scan-assembler "f2:\n\trisbg\t%r2,%r3,60,62,0\n\tbner\t%r14\n\tjg\tf2_foo.*\n" { target { lp64 } } } } */
-/* { dg-final { scan-assembler "f2:\n\trisbgn\t%r3,%r2,0,0\\\+32-1,64-0-32\n\trisbg\t%r3,%r5,60,62,0" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "f2:\n\trisbg\t%r2,%r3,60,62,0\n\tbner\t%r14\n\tjg\tf2_foo.*\n" } } */
   i64 v_anda = v_a & -15;
   i64 v_andb = v_b & 14;
   i64 v_or = v_anda | v_andb;
@@ -37,8 +35,7 @@ i64 f2 (i64 v_a, i64 v_b)
 void f2_bar ();
 void f2_cconly (i64 v_a, i64 v_b)
 {
-/* { dg-final { scan-assembler "f2_cconly:\n\trisbg\t%r2,%r3,60,62,0\n\tber\t%r14\n\tjg\tf2_bar(@PLT)?\n" { target { lp64 } } } } */
-/* { dg-final { scan-assembler "f2_cconly:\n\trisbgn\t%r3,%r2,0,0\\\+32-1,64-0-32\n\trisbg\t%r3,%r5,60,62,0\n\tber\t%r14\n\tjg\tf2_bar(@PLT)?\n" { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler "f2_cconly:\n\trisbg\t%r2,%r3,60,62,0\n\tber\t%r14\n\tjg\tf2_bar(@PLT)?\n" } } */
   if ((v_a & -15) | (v_b & 14))
     f2_bar();
 }
diff --git a/gcc/testsuite/gcc.target/s390/stack-clash-4.c b/gcc/testsuite/gcc.target/s390/stack-clash-4.c
deleted file mode 100644
index 619d99ddf691..000000000000
--- a/gcc/testsuite/gcc.target/s390/stack-clash-4.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O1 -m31 -mzarch -fstack-clash-protection" } */
-
-extern void c(char*);
-
-void
-a() {
-  char *b = __builtin_alloca(3);
-  c(b);
-}
diff --git a/gcc/testsuite/gcc.target/s390/stack-clash-5.c b/gcc/testsuite/gcc.target/s390/stack-clash-5.c
deleted file mode 100644
index 81e202e2aab6..000000000000
--- a/gcc/testsuite/gcc.target/s390/stack-clash-5.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O1 -m31 -mzarch -fstack-clash-protection" } */
-
-extern void bar (char*);
-
-void
-foo() {
-  char a[4000];
-  bar (a) ;
-}
diff --git a/gcc/testsuite/gcc.target/s390/stack-protector-guard-tls-1.c b/gcc/testsuite/gcc.target/s390/stack-protector-guard-tls-1.c
index 1efd24551443..b71ff2cf535e 100644
--- a/gcc/testsuite/gcc.target/s390/stack-protector-guard-tls-1.c
+++ b/gcc/testsuite/gcc.target/s390/stack-protector-guard-tls-1.c
@@ -1,12 +1,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-protector-all" } */
-/* { dg-final { scan-assembler-times {\tear\t%r[0-9]+,%a[01]} 8 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\tsllg\t%r[0-9]+,%r[0-9]+,32} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\tear\t%r[0-9]+,%a[01]} 3 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times {\tmvc\t160\(8,%r15\),40\(%r[0-9]+\)} 2 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\tmvc\t100\(4,%r15\),20\(%r[0-9]+\)} 2 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times {\tclc\t160\(8,%r15\),40\(%r[0-9]+\)} 2 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\tclc\t100\(4,%r15\),20\(%r[0-9]+\)} 2 { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler-times {\tear\t%r[0-9]+,%a[01]} 8 } } */
+/* { dg-final { scan-assembler-times {\tsllg\t%r[0-9]+,%r[0-9]+,32} 4 } } */
+/* { dg-final { scan-assembler-times {\tmvc\t160\(8,%r15\),40\(%r[0-9]+\)} 2 } } */
+/* { dg-final { scan-assembler-times {\tclc\t160\(8,%r15\),40\(%r[0-9]+\)} 2 } } */
 
 /* Computing the address of the thread pointer on s390 involves multiple
    instructions and therefore bears the risk that the address of the canary or
diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-12.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-12.c
index a22a3e110185..5a3b8366ff63 100644
--- a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-12.c
+++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-12.c
@@ -10,8 +10,7 @@ void da(int x)
 {
   bar(x);
   bar(x + 1);
-  /* { dg-final { scan-assembler-times "\ttmll\t%r15,256" 2 { target { lp64 } } } } */
-  /* { dg-final { scan-assembler-times "\ttml\t%r15,384" 2 { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler-times "\ttmll\t%r15,256" 2 } } */
 }
 
 #pragma GCC target("stack-size=1024,stack-guard=0")
@@ -19,8 +18,7 @@ void p1(int x)
 {
   bar(x);
   bar(x + 1);
-  /* { dg-final { scan-assembler-times "\ttmll\t%r15,768" 1 { target { lp64 } } } } */
-  /* { dg-final { scan-assembler-times "\ttml\t%r15,896" 1 { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler-times "\ttmll\t%r15,768" 1 } } */
 }
 #pragma GCC reset_options
 
@@ -29,8 +27,7 @@ void p0(int x)
 {
   bar(x);
   bar(x + 1);
-  /* { dg-final { scan-assembler-times "\ttmll\t%r15,1792" 1 { target { lp64 } } } } */
-  /* { dg-final { scan-assembler-times "\ttml\t%r15,1920" 1 { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler-times "\ttmll\t%r15,1792" 1 } } */
 }
 #pragma GCC reset_options
 
@@ -39,8 +36,7 @@ void a1(int x)
 {
   bar(x);
   bar(x + 1);
-  /* { dg-final { scan-assembler-times "\ttmll\t%r15,3840" 1 { target { lp64 } } } } */
-  /* { dg-final { scan-assembler-times "\ttml\t%r15,3968" 1 { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler-times "\ttmll\t%r15,3840" 1 } } */
 }
 
 __attribute__ ((target("stack-size=8192,stack-guard=0")))
@@ -48,8 +44,7 @@ void a0(int x)
 {
   bar(x);
   bar(x + 1);
-  /* { dg-final { scan-assembler-times "\ttmll\t%r15,7936" 1 { target { lp64 } } } } */
-  /* { dg-final { scan-assembler-times "\ttml\t%r15,8064" 1 { target { ! lp64 } } } } */
+  /* { dg-final { scan-assembler-times "\ttmll\t%r15,7936" 1 } } */
 }
 
 void d(int x)
diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-15.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-15.c
index dd0c978936b8..55b7f2756450 100644
--- a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-15.c
+++ b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-15.c
@@ -111,7 +111,5 @@ int a0h(void)
   return 8;
 }
 
-/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -40" 10 { target { lp64 } } } } */
-/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -8" 5 { target { lp64 } } } } */
-/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -36" 10 { target { ! lp64 } } } } */
-/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -4" 5 { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -40" 10 } } */
+/* { dg-final { scan-assembler-times "\t.cfi_offset 15, -8" 5 } } */
diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-1.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-1.c
deleted file mode 100644
index 3247fff902b1..000000000000
--- a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-1.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/* Functional tests for the "target" attribute and pragma.  */
-
-/* { dg-do assemble { target { ! lp64 } } } */
-/* { dg-require-effective-target target_attribute } */
-/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mno-vx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */
-
-/**
- **
- ** Start
- **
- **/
-
-void fn_default_start (void) { }
-/* { dg-final { scan-assembler "fn:fn_default_start ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */
-
-/**
- **
- ** Attribute
- **
- **/
-
-__attribute__ ((target ("arch=z13")))
-void fn_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */
-
-void fn_att_1_default (void) { }
-
-__attribute__ ((target ("arch=z10")))
-void fn_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */
-
-void fn_att_0_default (void) { }
-
-__attribute__ ((target ("arch=z10,arch=z13")))
-void fn_att_0_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */
-
-__attribute__ ((target ("arch=z13,arch=z10")))
-void fn_att_1_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */
-
-/**
- **
- ** Pragma
- **
- **/
-
-#pragma GCC target ("arch=z13")
-void fn_pragma_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */
-#pragma GCC reset_options
-
-void fn_pragma_1_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */
-
-#pragma GCC target ("arch=z10")
-void fn_pragma_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */
-#pragma GCC reset_options
-
-void fn_pragma_0_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */
-
-#pragma GCC target ("arch=z10")
-#pragma GCC target ("arch=z13")
-void fn_pragma_0_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("arch=z13")
-#pragma GCC target ("arch=z10")
-void fn_pragma_1_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */
-#pragma GCC reset_options
-
-/**
- **
- ** Pragma and attribute
- **
- **/
-
-#pragma GCC target ("arch=z13")
-__attribute__ ((target ("arch=z13")))
-void fn_pragma_1_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("arch=z13")
-__attribute__ ((target ("arch=z13")))
-void fn_pragma_0_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("arch=z13")
-__attribute__ ((target ("arch=z10")))
-void fn_pragma_1_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("arch=z13")
-__attribute__ ((target ("arch=z10")))
-void fn_pragma_0_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */
-#pragma GCC reset_options
-
-/**
- **
- ** End
- **
- **/
-
-void fn_default_end (void) { }
-/* { dg-final { scan-assembler "fn:fn_default_end ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */
diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-10.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-10.c
deleted file mode 100644
index f1beb1d8773e..000000000000
--- a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-10.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/* Functional tests for the "target" attribute and pragma.  */
-
-/* { dg-do assemble { target { ! lp64 } } } */
-/* { dg-require-effective-target target_attribute } */
-/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */
-
-/**
- **
- ** Start
- **
- **/
-
-void fn_default_start (void) { }
-/* { dg-final { scan-assembler "fn:fn_default_start ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */
-
-/**
- **
- ** Attribute
- **
- **/
-
-__attribute__ ((target ("branch-cost=1")))
-void fn_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */
-
-void fn_att_0_default (void) { }
-
-__attribute__ ((target ("branch-cost=2")))
-void fn_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */
-
-void fn_att_1_default (void) { }
-
-__attribute__ ((target ("branch-cost=2,branch-cost=1")))
-void fn_att_1_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */
-
-__attribute__ ((target ("branch-cost=1,branch-cost=2")))
-void fn_att_0_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */
-
-/**
- **
- ** Pragma
- **
- **/
-
-#pragma GCC target ("branch-cost=1")
-void fn_pragma_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */
-#pragma GCC reset_options
-
-void fn_pragma_0_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */
-
-#pragma GCC target ("branch-cost=2")
-void fn_pragma_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */
-#pragma GCC reset_options
-
-void fn_pragma_1_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */
-
-#pragma GCC target ("branch-cost=2")
-#pragma GCC target ("branch-cost=1")
-void fn_pragma_1_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("branch-cost=1")
-#pragma GCC target ("branch-cost=2")
-void fn_pragma_0_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */
-#pragma GCC reset_options
-
-/**
- **
- ** Pragma and attribute
- **
- **/
-
-#pragma GCC target ("branch-cost=1")
-__attribute__ ((target ("branch-cost=1")))
-void fn_pragma_0_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd0" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("branch-cost=1")
-__attribute__ ((target ("branch-cost=1")))
-void fn_pragma_1_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd0" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("branch-cost=1")
-__attribute__ ((target ("branch-cost=2")))
-void fn_pragma_0_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd0" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("branch-cost=1")
-__attribute__ ((target ("branch-cost=2")))
-void fn_pragma_1_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd0" } } */
-#pragma GCC reset_options
-
-/**
- **
- ** End
- **
- **/
-
-void fn_default_end (void) { }
-/* { dg-final { scan-assembler "fn:fn_default_end ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end se1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */
diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-11.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-11.c
deleted file mode 100644
index d459eec258f5..000000000000
--- a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-11.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/* Functional tests for the "target" attribute and pragma.  */
-
-/* { dg-do assemble { target { ! lp64 } } } */
-/* { dg-require-effective-target target_attribute } */
-/* { dg-options "-save-temps -mdebug -m31 -march=z13 -mtune=z10 -mstack-size=4096 -mstack-guard=0 -mbranch-cost=2 -mwarn-framesize=0 -mhard-dfp -mno-backchain -mhard-float -mvx -mhtm -mpacked-stack -mno-small-exec -mzvector -mno-mvcle -mzarch -mwarn-dynamicstack" } */
-
-/**
- **
- ** Start
- **
- **/
-
-void fn_default_start (void) { }
-/* { dg-final { scan-assembler "fn:fn_default_start ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start se0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wd1" } } */
-
-/**
- **
- ** Attribute
- **
- **/
-
-__attribute__ ((target ("warn-framesize=512")))
-void fn_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 wd1" } } */
-
-void fn_att_1_default (void) { }
-
-__attribute__ ((target ("warn-framesize=0")))
-void fn_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 wd1" } } */
-
-void fn_att_0_default (void) { }
-
-__attribute__ ((target ("warn-framesize=0,warn-framesize=512")))
-void fn_att_0_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wd1" } } */
-
-__attribute__ ((target ("warn-framesize=512,warn-framesize=0")))
-void fn_att_1_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wd1" } } */
-
-/**
- **
- ** Pragma
- **
- **/
-
-#pragma GCC target ("warn-framesize=512")
-void fn_pragma_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wd1" } } */
-#pragma GCC reset_options
-
-void fn_pragma_1_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default wd1" } } */
-
-#pragma GCC target ("warn-framesize=0")
-void fn_pragma_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wd1" } } */
-#pragma GCC reset_options
-
-void fn_pragma_0_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd1" } } */
-
-#pragma GCC target ("warn-framesize=0")
-#pragma GCC target ("warn-framesize=512")
-void fn_pragma_0_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("warn-framesize=512")
-#pragma GCC target ("warn-framesize=0")
-void fn_pragma_1_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd1" } } */
-#pragma GCC reset_options
-
-/**
- **
- ** Pragma and attribute
- **
- **/
-
-#pragma GCC target ("warn-framesize=512")
-__attribute__ ((target ("warn-framesize=512")))
-void fn_pragma_1_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_1 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("warn-framesize=512")
-__attribute__ ((target ("warn-framesize=512")))
-void fn_pragma_0_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_1 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("warn-framesize=512")
-__attribute__ ((target ("warn-framesize=0")))
-void fn_pragma_1_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_att_0 wd1" } } */
-#pragma GCC reset_options
-
-#pragma GCC target ("warn-framesize=512")
-__attribute__ ((target ("warn-framesize=0")))
-void fn_pragma_0_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 se0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_att_0 wd1" } } */
-#pragma GCC reset_options
-
-/**
- **
- ** End
- **
- **/
-
-void fn_default_end (void) { }
-/* { dg-final { scan-assembler "fn:fn_default_end ar7" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end tu4" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ss4096" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end sg0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end bc2" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end hd1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ba0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end hf1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end vx1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ht1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end ps1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end se0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end zv1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end mv0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_end wd1" } } */
diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-12.c b/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-12.c
deleted file mode 100644
index 8868f91df52f..000000000000
--- a/gcc/testsuite/gcc.target/s390/target-attribute/tattr-m31-12.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/* Functional tests for the "target" attribute and pragma.  */
-
-/* { dg-do assemble { target { ! lp64 } } } */
-/* { dg-require-effective-target target_attribute } */
-/* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */
-
-/**
- **
- ** Start
- **
- **/
-
-void fn_default_start (void) { }
-/* { dg-final { scan-assembler "fn:fn_default_start ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start se1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */
-
-/**
- **
- ** Attribute
- **
- **/
-
-__attribute__ ((target ("warn-framesize=0")))
-void fn_att_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0 wd0" } } */
-
-void fn_att_0_default (void) { }
-
-__attribute__ ((target ("warn-framesize=512")))
-void fn_att_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1 wd0" } } */
-
-void fn_att_1_default (void) { }
-
-__attribute__ ((target ("warn-framesize=512,warn-framesize=0")))
-void fn_att_1_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_1_0 wd0" } } */
-
-__attribute__ ((target ("warn-framesize=0,warn-framesize=512")))
-void fn_att_0_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_att_0_1 wd0" } } */
-
-/**
- **
- ** Pragma
- **
- **/
-
-#pragma GCC target ("warn-framesize=0")
-void fn_pragma_0 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */
-#pragma GCC reset_options
-
-void fn_pragma_0_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */
-
-#pragma GCC target ("warn-framesize=512")
-void fn_pragma_1 (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 zv0" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */
-#pragma GCC reset_options
-
-void fn_pragma_1_default (void) { }
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ar4" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default tu7" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */
-/* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */
-/* { dg-final { scan-asse[...]

[diff truncated at 524288 bytes]


More information about the Libstdc++-cvs mailing list