public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 0/4] IBM Z: Store long doubles in vector registers when possible
@ 2020-11-03 21:36 Ilya Leoshkevich
  2020-11-03 21:36 ` [PATCH 1/4] IBM Z: Remove unused RRe and RXe mode_attrs Ilya Leoshkevich
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Ilya Leoshkevich @ 2020-11-03 21:36 UTC (permalink / raw)
  To: krebbel; +Cc: gcc-patches, Ilya Leoshkevich

Bootstrapped and regtested on s390x-redhat-linux with --with-mode=zarch
--with-arch=z14.  Ok for master?

This patch series implements storing long doubles in vector registers
on z14+.  Patches 1 and 2 are initial cleanups.  Patch 3 is the actual
implementation, patch 4 adds tests.

Ilya Leoshkevich (4):
  IBM Z: Remove unused RRe and RXe mode_attrs
  IBM Z: Unhardcode NR_C_MODES
  IBM Z: Store long doubles in vector registers when possible
  IBM Z: Test long doubles in vector registers

 gcc/config/s390/s390-modes.def                |   5 +-
 gcc/config/s390/s390-protos.h                 |   1 +
 gcc/config/s390/s390.c                        |  67 ++-
 gcc/config/s390/s390.h                        |  28 ++
 gcc/config/s390/s390.md                       | 214 ++++++----
 gcc/config/s390/s390.opt                      |  11 +
 gcc/config/s390/vector.md                     | 382 ++++++++++++++++--
 gcc/config/s390/vx-builtins.md                |  38 +-
 .../zvector/long-double-callee-abi-scan.c     |  20 +
 .../s390/zvector/long-double-caller-abi-run.c |   4 +
 .../zvector/long-double-caller-abi-scan.c     |  13 +
 .../s390/zvector/long-double-copysign-run.c   |  14 +
 .../s390/zvector/long-double-copysign-scan.c  |  11 +
 .../s390/zvector/long-double-fprx2-constant.c |  11 +
 .../zvector/long-double-from-double-run.c     |  12 +
 .../zvector/long-double-from-double-scan.c    |   9 +
 .../s390/zvector/long-double-from-float-run.c |  12 +
 .../zvector/long-double-from-float-scan.c     |  10 +
 .../s390/zvector/long-double-from-i16-run.c   |  12 +
 .../s390/zvector/long-double-from-i16-scan.c  |  11 +
 .../s390/zvector/long-double-from-i32-run.c   |  12 +
 .../s390/zvector/long-double-from-i32-scan.c  |  11 +
 .../s390/zvector/long-double-from-i64-run.c   |  12 +
 .../s390/zvector/long-double-from-i64-scan.c  |  11 +
 .../s390/zvector/long-double-from-i8-run.c    |  12 +
 .../s390/zvector/long-double-from-i8-scan.c   |  11 +
 .../s390/zvector/long-double-from-u16-run.c   |  12 +
 .../s390/zvector/long-double-from-u16-scan.c  |  11 +
 .../s390/zvector/long-double-from-u32-run.c   |  12 +
 .../s390/zvector/long-double-from-u32-scan.c  |  11 +
 .../s390/zvector/long-double-from-u64-run.c   |  12 +
 .../s390/zvector/long-double-from-u64-scan.c  |  11 +
 .../s390/zvector/long-double-from-u8-run.c    |  12 +
 .../s390/zvector/long-double-from-u8-scan.c   |  11 +
 .../s390/zvector/long-double-to-double-run.c  |  12 +
 .../s390/zvector/long-double-to-double-scan.c |   9 +
 .../s390/zvector/long-double-to-float-run.c   |  12 +
 .../s390/zvector/long-double-to-float-scan.c  |  10 +
 .../s390/zvector/long-double-to-i16-run.c     |  12 +
 .../s390/zvector/long-double-to-i16-scan.c    |  11 +
 .../s390/zvector/long-double-to-i32-run.c     |  12 +
 .../s390/zvector/long-double-to-i32-scan.c    |  11 +
 .../s390/zvector/long-double-to-i64-run.c     |  12 +
 .../s390/zvector/long-double-to-i64-scan.c    |  13 +
 .../s390/zvector/long-double-to-i8-run.c      |  12 +
 .../s390/zvector/long-double-to-i8-scan.c     |  11 +
 .../s390/zvector/long-double-to-u16-run.c     |  13 +
 .../s390/zvector/long-double-to-u16-scan.c    |  11 +
 .../s390/zvector/long-double-to-u32-run.c     |  13 +
 .../s390/zvector/long-double-to-u32-scan.c    |  11 +
 .../s390/zvector/long-double-to-u64-run.c     |  13 +
 .../s390/zvector/long-double-to-u64-scan.c    |  11 +
 .../s390/zvector/long-double-to-u8-run.c      |  13 +
 .../s390/zvector/long-double-to-u8-scan.c     |  11 +
 .../s390/zvector/long-double-vec-duplicate.c  |  13 +
 .../gcc.target/s390/zvector/long-double-wf.h  |  60 +++
 .../s390/zvector/long-double-wfaxb-run.c      |  11 +
 .../s390/zvector/long-double-wfaxb-scan.c     |  10 +
 .../s390/zvector/long-double-wfaxb.c          |   8 +
 .../s390/zvector/long-double-wfcxb-0001.c     |  10 +
 .../s390/zvector/long-double-wfcxb-0111.c     |  10 +
 .../s390/zvector/long-double-wfcxb-1011.c     |  10 +
 .../s390/zvector/long-double-wfcxb-1101.c     |  10 +
 .../s390/zvector/long-double-wfdxb-run.c      |  11 +
 .../s390/zvector/long-double-wfdxb-scan.c     |  10 +
 .../s390/zvector/long-double-wfdxb.c          |   8 +
 .../s390/zvector/long-double-wfixb.c          |   8 +
 .../s390/zvector/long-double-wfkxb-0111.c     |  10 +
 .../s390/zvector/long-double-wfkxb-1011.c     |  10 +
 .../s390/zvector/long-double-wfkxb-1101.c     |  10 +
 .../s390/zvector/long-double-wflcxb.c         |   8 +
 .../s390/zvector/long-double-wflpxb.c         |   8 +
 .../s390/zvector/long-double-wfmaxb-2.c       |  24 ++
 .../s390/zvector/long-double-wfmaxb-3.c       |  14 +
 .../zvector/long-double-wfmaxb-disabled.c     |   9 +
 .../s390/zvector/long-double-wfmaxb.c         |   8 +
 .../zvector/long-double-wfmsxb-disabled.c     |   9 +
 .../s390/zvector/long-double-wfmsxb.c         |   8 +
 .../s390/zvector/long-double-wfmxb.c          |   8 +
 .../zvector/long-double-wfnmaxb-disabled.c    |  10 +
 .../s390/zvector/long-double-wfnmaxb.c        |   8 +
 .../zvector/long-double-wfnmsxb-disabled.c    |  10 +
 .../s390/zvector/long-double-wfnmsxb.c        |   8 +
 .../s390/zvector/long-double-wfsqxb.c         |   8 +
 .../s390/zvector/long-double-wfsxb-1.c        |  21 +
 .../s390/zvector/long-double-wfsxb.c          |   8 +
 .../s390/zvector/long-double-wftcixb-1.c      |  15 +
 .../s390/zvector/long-double-wftcixb.c        |   8 +
 88 files changed, 1534 insertions(+), 146 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-callee-abi-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-caller-abi-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-caller-abi-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-copysign-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-copysign-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-fprx2-constant.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-double-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-double-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-float-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-float-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i16-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i16-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i32-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i32-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i64-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i64-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i8-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-i8-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u16-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u16-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u32-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u32-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u64-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u64-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u8-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-from-u8-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-double-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-double-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-float-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-float-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i16-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i16-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i32-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i32-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i64-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i64-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i8-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-i8-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u16-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u16-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u32-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u32-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u64-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u64-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u8-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-to-u8-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-vec-duplicate.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wf.h
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfaxb-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfaxb-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfaxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfcxb-0001.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfcxb-0111.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfcxb-1011.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfcxb-1101.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfdxb-run.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfdxb-scan.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfdxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfixb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfkxb-0111.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfkxb-1011.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfkxb-1101.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wflcxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wflpxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfmaxb-2.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfmaxb-3.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfmaxb-disabled.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfmaxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfmsxb-disabled.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfmsxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfmxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfnmaxb-disabled.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfnmaxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfnmsxb-disabled.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfnmsxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfsqxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfsxb-1.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wfsxb.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wftcixb-1.c
 create mode 100644 gcc/testsuite/gcc.target/s390/zvector/long-double-wftcixb.c

-- 
2.25.4


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-11-05  7:28 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03 21:36 [PATCH 0/4] IBM Z: Store long doubles in vector registers when possible Ilya Leoshkevich
2020-11-03 21:36 ` [PATCH 1/4] IBM Z: Remove unused RRe and RXe mode_attrs Ilya Leoshkevich
2020-11-04 17:14   ` Andreas Krebbel
2020-11-03 21:45 ` [PATCH 2/4] IBM Z: Unhardcode NR_C_MODES Ilya Leoshkevich
2020-11-04 17:14   ` Andreas Krebbel
2020-11-03 21:45 ` [PATCH 3/4] IBM Z: Store long doubles in vector registers when possible Ilya Leoshkevich
2020-11-04 17:16   ` Andreas Krebbel
2020-11-04 22:12     ` Ilya Leoshkevich
2020-11-05  7:26       ` Andreas Krebbel
2020-11-03 21:46 ` [PATCH 4/4] IBM Z: Test long doubles in vector registers Ilya Leoshkevich
2020-11-04 17:28   ` Andreas Krebbel
2020-11-04 22:19     ` Ilya Leoshkevich
2020-11-05  7:28       ` Andreas Krebbel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).