Support TI mode and soft float on PA64
commitdb89d474ad812e57895cb8866ebaeedad0cc3e3f
authorJohn David Anglin <danglin@gcc.gnu.org>
Fri, 5 Nov 2021 16:07:35 +0000 (5 16:07 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Fri, 5 Nov 2021 16:07:35 +0000 (5 16:07 +0000)
tree19a626b97100d137525c01f398c19dcfa158e8ca
parent858d7ee1a0cd97c01d844ea73ab81918da738344
Support TI mode and soft float on PA64

This change implements TI mode on PA64.  Various new patterns are
added to pa.md.  The libgcc build needed modification to build both
DI and TI routines.  We also need various softfp routines to
convert to and from TImode.

I added full softfp for the -msoft-float option.  At the moment,
this doesn't completely eliminate all use of the floating-point
co-processor.  For this, libgcc needs to be built with -msoft-mult.
The floating-point exception support also needs a soft option.

2021-11-05  John David Anglin  <danglin@gcc.gnu.org>

PR libgomp/96661

gcc/ChangeLog:

* config/pa/pa-modes.def: Add OImode integer type.
* config/pa/pa.c (pa_scalar_mode_supported_p): Allow TImode
for TARGET_64BIT.
* config/pa/pa.h (MIN_UNITS_PER_WORD) Define to MIN_UNITS_PER_WORD
to UNITS_PER_WORD if IN_LIBGCC2.
* config/pa/pa.md (addti3, addvti3, subti3, subvti3, negti2,
negvti2, ashlti3, shrpd_internal): New patterns.
Change some multi instruction types to multi.

libgcc/ChangeLog:

* config.host (hppa*64*-*-linux*): Revise tmake_file.
(hppa*64*-*-hpux11*): Likewise.
* config/pa/sfp-exceptions.c: New.
* config/pa/sfp-machine.h: New.
* config/pa/t-dimode: New.
* config/pa/t-softfp-sfdftf: New.
gcc/config/pa/pa-modes.def
gcc/config/pa/pa.c
gcc/config/pa/pa.h
gcc/config/pa/pa.md
libgcc/config.host
libgcc/config/pa/sfp-exceptions.c [new file with mode: 0644]
libgcc/config/pa/sfp-machine.h [new file with mode: 0644]
libgcc/config/pa/t-dimode [new file with mode: 0644]
libgcc/config/pa/t-softfp-sfdftf [new file with mode: 0644]