public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Changes to allow PowerPC to change the long double type to use the IEEE 128-bit floating point format
@ 2020-08-07 20:55 Michael Meissner
  2020-08-07 21:14 ` PowerPC long double Mangling Michael Meissner
                   ` (3 more replies)
  0 siblings, 4 replies; 24+ messages in thread
From: Michael Meissner @ 2020-08-07 20:55 UTC (permalink / raw)
  To: gcc Mailing List, Michael Meissner, Carlos O'Donell,
	Alan Modra, Andreas Krebbel, Arnaud Charlet, Bill Schmidt,
	Daniel Franke, Daniel Kraft, David Edelsohn, Eric Botcazou,
	Erik Edelmann, François-Xavier Coudert, Hartmut Penner,
	Jakub Jelinek, Jan Hubicka, Janne Blomqvist, Janus Weil,
	Jason Merrill, Jeff Law, Jerry DeLisle, Jonathan Wakely,
	Joseph Myers, Mikael Morin, Nathan Sidwell, Nick Clifton,
	Paul Thomas, Pedro Franco de Carvalho, Peter Bergner,
	Ramana Radhakrishnan, Richard Biener, Richard Earnshaw,
	Richard Sandiford, Segher Boessenkool, Thomas König,
	Tobias Burnus, Tobias Schlüter, Toon Moene,
	Tulio Magno Quites Machado Filho, Ulrich Weigand, Uros Bizjak,
	Paul Clarke, Carl Love, Aaron Sawdey, Will Schmidt, Bill Seurer,
	Pat Haugen

I want to discuss changes that I think we need to make across the open source
toochain to allow us to change the long double type on PowerPC hardware from
using the IBM extended double (i.e. a pair of doubles) to the IEEE 128-bit
format defined in IEEE 754.

I wasn't sure whom to address this to, so I took a scatter shot approach.  I
likely missed a few people, and some people were added that may not need to
participate in the discussion.  Sorry for either not including you initially or
for including you by mistake.

I added people from the following areas:

	PowerPC folk

	Langugage maintainers: At the moment, only the C/C++ front ends have
	code to support both 128-bit floating point types.  The other languages
	use just the defaults provided by the machine maintainers.  However, it
	may be we will need to think about rules for code being compiled and
	linked with a different long double format.

	Arm/x86 maintainers: It is possible that these sorts of changes might
	mesh with things that are being planned.  For example, maybe x86 might
	want to explore changing the default for long double from the
	traditional Intel 80-bit format to IEEE 128-bit.  And there might be
	issues with the several different 16-bit floating point formats
	floating around.

	Glibc developers: I added Tulio and Carlos, but I suspect there may be
	others that might want to respond.

	Binutils developers: I added Alan, Peter, and Nick.  I don't know who
	else might be interested.

	Gdb developers: I added Pedro and Ulrich, but I don't know if there are
	others that may be interested.

At the moment, this change is only done if you use the following option:
	--with-long-double-format=ieee

option when configuring GCC.  There will be some changes need to make this
option work as intended.  You will also need an up to date glibc and binutils
if you want to use this option.

In terms of time table, I feel that whatever changes are made NEED to be done
by the time GCC 11 is released.

Each topic will be done as a followup to this post, so that people can
concentrate on individual features via threaded email readers, rather than
wading through the whole list over time.

For those of you that are not aware, the PowerPC ISA 3.0 (power9) now has
instructions that implement IEEE 754 128-bit floating point directly.  Over the
last few releases, I have been adding support for IEEE 128-bit floating point
into GCC.  On power7 and power8 hardware we use soft-float emulator to emulate
the IEEE 128-bit floating point format.

At the moment, we are only considering doing these changes on the little endian
PowerPC linux systems.

In theory, it could work on big endian 64-bit PowerPC linux systems that are
configured with a minimum cpu of power7.  You would need to edit the libgcc and
gcc support to enable IEEE 128-bit floating point on those systems and build
current glibc for those systems.  However, I'm not planning to do this work.

In addition, the IEEE 128-bit instructions are not enabled on 32-bit systems
(you can use the soft-fp emulation, just not the hardware support).  This is
due to the issue within GCC we don't support TImode on 32-bit systems.  Some
parts of GCC require a supported integer that is the same size as basic types.
If somebody is motivated to do that work, that is fine, but I'm not planning to
do that work.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.ibm.com, phone: +1 (978) 899-4797

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

end of thread, other threads:[~2020-10-08  1:32 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-07 20:55 Changes to allow PowerPC to change the long double type to use the IEEE 128-bit floating point format Michael Meissner
2020-08-07 21:14 ` PowerPC long double Mangling Michael Meissner
2020-09-09 13:42   ` Jonathan Wakely
2020-09-09 15:36     ` Segher Boessenkool
2020-09-09 17:06       ` Thomas Koenig
2020-09-09 17:32         ` Segher Boessenkool
2020-09-09 17:41           ` Jakub Jelinek
2020-09-09 18:49             ` Segher Boessenkool
2020-09-15  5:37     ` Michael Meissner
2020-09-15  7:09       ` Jakub Jelinek
2020-08-08 13:33 ` Changes to allow PowerPC to change the long double type to use the IEEE 128-bit floating point format Thomas König
2020-08-08 20:17   ` Thomas König
2020-08-10 16:53   ` Michael Meissner
2020-08-15  7:58     ` Thomas König
2020-08-08 13:44 ` H.J. Lu
2020-09-24 21:00 ` First set of patches to allow changing the long double default were posted: Michael Meissner
2020-09-28 16:38   ` Joseph Myers
2020-09-28 21:07     ` Michael Meissner
2020-09-28 21:19       ` Jakub Jelinek
2020-09-28 22:13       ` Joseph Myers
2020-09-29 16:34         ` Jonathan Wakely
2020-09-29 16:53           ` Joseph Myers
2020-10-08  0:00           ` Michael Meissner
2020-10-08  1:30             ` Segher Boessenkool

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).