public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Michael Meissner <meissner@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc(refs/users/meissner/heads/work095)] Update ChangeLog.meissner.
Date: Sat, 30 Jul 2022 02:18:48 +0000 (GMT)	[thread overview]
Message-ID: <20220730021848.180FD3858D32@sourceware.org> (raw)

https://gcc.gnu.org/g:54bd5f493b28f7da4b2d7746d78bb53ce9a52750

commit 54bd5f493b28f7da4b2d7746d78bb53ce9a52750
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Jul 29 22:18:25 2022 -0400

    Update ChangeLog.meissner.
    
    2022-07-29   Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * ChangeLog.meissner: Update.

Diff:
---
 gcc/ChangeLog.meissner | 100 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 100 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 838adb2229f..fb910a369ce 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,103 @@
+==================== work095, patch #19 was reverted.
+
+Make __float128 use a different type from long double.
+
+This patch changes GCC so that __float128 use different types internally than
+long double.  In the past, GCC would use the long double type for __float128 if
+-mabi=ieeelongdouble was used.
+
+Currently we are not changing __ibm128 to have a separate type.  There are some
+complications that need to be addressed (such as C++ mangling) before we can
+make the change for __ibm128.
+
+The rs6000 internal ieee128_float_type_node is deleted in favor of using the
+standard float128_type_node.
+
+I deleted the code in rs6000_expand_builtin which used to convert some built-in
+functions that used KFmode arguments to the equivalent built-in functions that
+used TFmode arguments if -mabi=ieeelongdouble.  I also deleted the code that
+converted the built-ins that used IFmode arguments to the equivalant functions
+that used TFmode arguments if -mabi=ibmlongdouble.
+
+I deleted the code in rs6000_builtin_type_compatible that said two 128-bit
+floating point types are compatible if they have the same encoding.  With
+overloading support we don't need this any longer.
+
+I deleted the translate mode attribute hook which is no longer need with these
+changes.
+
+I changed how complex 128-bit long double multiply and divide are done.  The
+previous code indrectly depended on the type mode for __float128 being long
+double, and it no longer works when __float128 always has a unique type.  To do
+this, I had to create two new functions (__multc3_ieee128 and divtc3_ieee128)
+which are called in this case.  I added support in libgcc to make the ifunc
+support for these functions use the __mulkc3 and __divkc3 functions.
+
+I split the define_insn_and_splits for converting between two IEEE 128-bit types
+or two IBM 128-bit types into separate insns, one for converting between IEEE
+128-bit types, and the other for converting between IBM 128-bit types.  One
+benefit of doing this is that we can get the type and length attributes correct
+for each move.
+
+2022-07-29   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Replace
+	ieee128_float_type_node with float128_type_node.
+	(rs6000_init_builtins): Use the float128_type_node for __float128 even
+	if long double uses the IEEE 128-bit encoding.  The type node for
+	__ibm128 is a unqiue type node even if long double uses the IBM 128-bit
+	encoding.
+	(rs6000_expand_builtin): Delete code that converted built-in functions
+	using KFmode to the equivalant built-in function using TFmode if
+	-mabi=ieeelongdouble.  Delete code that coverted built-in functions
+	using IFmode to the equivalent built-in function using TFmode if
+	-mabi=ibmlongdouble.
+	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
+	reference to ieee128_float_type_node.
+	(rs6000_cpu_cpp_builtins): Delete reference to ieee128_float_type_node.
+	Use TARGET_IBM128 for checking if __ibm128 is supported.
+	(is_float128_p): Delete.
+	(rs6000_builtin_type_compatible): For 128-bit floating point, check if
+	both types have the same encoding.
+	* config/rs6000/rs6000.cc (TARGET_TRANSLATE_MODE_ATTRIBUTE): Delete.
+	(init_float128_ieee): Delete creation of complex long double multiply
+	and divide here and move the implemention to rs6000_init_libfuncs.
+	(rs6000_init_libfuncs): Rework complex long double multiply and divide
+	support here if long double uses IEEE 128-bit encoding.
+	(rs6000_translate_mode_attribute): Delete.
+	(rs6000_libgcc_floating_mode_supported_p): Remove code that used TFmode
+	if long double used the IEEE 128-bit encoding.
+	(rs6000_floatn_mode): Likewise.
+	(rs6000_c_mode_for_suffix): Likewise.
+	* config/rs6000/rs6000.h (RS6000_BTI_ieee128_float): Delete.
+	(ieee128_float_type_node): Delete.
+	* config/rs6000/rs6000.md (IFKF): Delete.
+	(IFKF_reg): Delete.
+	(extendkfif2): New insn.
+	(trunckfif2): New insn.
+	(extend<mode>tf2_internal): Delete combined extend mode, and split it
+	into separate insns that either just handle IEEE 128-bit to IEEE 128-bit
+	conversions or IBM 128-bit to IBM 128-bit conversions.
+	(extendtf<mode>2_internal): Likewise.
+	(extendkftf2_internal): New insn.
+	(extendtfkf2_internal): New insn.
+	(extendiftf2_internal): New insn.
+	(extendtfif2_internal): New insn.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/divkc3-2: Update test to track compiler changes.
+	* gcc.target/powerpc/mulkc3-2: Likewise.
+
+libgcc/
+
+	* config/rs6000/float128-ifunc.c (__multc3_ieee128): New ifunc handler.
+	(__divtc3_ieee128): Likewise.
+	* config/rs6000/quad-float128.h (__multc3_ieee128): Add declaration.
+	(__divtc3_ieee128): Likewise.
+
 ==================== work095, patch #18 was reverted.
 
 ==================== work095, patch #17 was reverted.


             reply	other threads:[~2022-07-30  2:18 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-30  2:18 Michael Meissner [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-30  1:34 Michael Meissner
2022-07-30  1:30 Michael Meissner
2022-07-29 19:30 Michael Meissner
2022-07-29 17:57 Michael Meissner
2022-07-29  5:58 Michael Meissner
2022-07-29  1:57 Michael Meissner
2022-07-29  1:47 Michael Meissner
2022-07-28 22:58 Michael Meissner
2022-07-28 22:31 Michael Meissner
2022-07-28 20:59 Michael Meissner
2022-07-23  0:12 Michael Meissner
2022-07-22 18:57 Michael Meissner
2022-07-21 21:50 Michael Meissner
2022-07-18 19:41 Michael Meissner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220730021848.180FD3858D32@sourceware.org \
    --to=meissner@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).