[gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.

Michael Meissner meissner@gcc.gnu.org
Thu Aug 11 21:16:34 GMT 2022


https://gcc.gnu.org/g:2014c1c94faf39e804d7a41793bf4fc826aebd04

commit 2014c1c94faf39e804d7a41793bf4fc826aebd04
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Aug 11 17:16:17 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index dc7c9c8e599..ee10725921a 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,99 @@
+==================== work097, patch007
+
+Add predicates to inter-mix 128-bit floating point modes.
+
+This patch adds two new predicates (ieee128_operand and ibm128_operand) that
+allow KFmode and TFmode to be used inter-changeably when long double is IEEE
+128-bit, and IFmode and TFmode to be used inter-changeabily with long double is
+IBM 128-bit.
+
+The various built-in functions that use KFmode or IFmode have been modified to
+use these new predicates.
+
+The code in rs6000_expand_builtin that switched between the KFmode and TFmode
+built-in functions and the code that switched between the IFmode and TFmode
+built-in functions has been modified so it looks at the argument type.  If a
+TFmode argument was passed, it will convert the built-in to from using KFmode or
+IFmode to one using TFmode.
+
+The nop conversion functions between IFmode and TFmode when long double uses IBM
+128-bit have been extended so that they take GPR registers as well as FPR
+registers.  This is to allow the test "pr105334.c" to pass.  This test wants to
+use -msoft-float along with the __ibm128 pack/unpack functions.
+
+2022-08-11   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/predicates.md (ieee128_operand): New predicate.
+	(ibm128_operand): Likewise.
+	* config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Rework code
+	that switches KFmode and IFmode built-in functions to TFmode to look at
+	the argument's mode, and not just use the switch.
+	* config/rs6000/rs6000.md (extendkftf2_internal): Add support for using
+	GPR registers.
+	(extendtfkf2_internal): Likewise.
+	(extendiftf2_internal): Likewise.
+	(extendtfif2_internal): Likewise.
+	(unpack<mode>): Use ibm128_operand for TFmode/IFmode operands.
+	(unpack<mode>_dm): Likewise.
+	(unpack<mode>_nodm): Likewise.
+	(pack<mode>_hard): Likewise.
+	(unpack<mode>): Likewise.
+	(pack<mode>): Likewise.
+	(trunc<mode>sf2_hw): Use ieee128_operand for TFmode/KFmode operands.
+	(add<mode>3_odd): Likewise.
+	(sub<mode>3_odd): Likewise.
+	(mul<mode>3_odd): Likewise.
+	(div<mode>3_odd): Likewise.
+	(sqrt<mode>2_odd): Likewise.
+	(fma<mode>4_odd): Likewise.
+	(fms<mode>4_odd): Likewise.
+	(nfma<mode>4_odd): Likewise.
+	(nfms<mode>4_odd): Likewise.
+	(trunc<mode>df2_odd): Likewise.
+	(cmp<mode>_hw): Likewise.
+	* config/rs6000/vsx.md (xsxexpqp_<mode>): Likewise.
+	(xsxsigqp_<mode>): Likewise.
+	(xsiexpqpf_<mode): Likewise.
+	(xsiexpqp_<mode>): Likewise.
+	(xscmpexpqp_<code>_<mode>): Likewise.
+	(xscmpexpqp_<code>_<mode>): Likewise.
+	(xststdcqp_<mode>): Likewise.
+	(xststdcnegqp_<mode): Likewise.
+	(xststdcqp_<mode): Likewise.
+
+==================== work097, patch006 was reverted
+
+==================== work097, patch005
+
+Improve converting between 128-bit modes that use the same format.
+
+This patch improves the insns used for converting between two modes using
+the 128-bit floating point format (i.e. converting between KFmode and TFmode if
+-mabi=ieeelongdouble is used, and converting between IFmode and TFmode if
+-mabi=ibmlongdouble is used).  The new insns have the correct insn type and
+instruction length for the move involved.
+
+2022-08-10   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.md (IFKF): Delete.
+	(IFKF_reg): Delete.
+	(extendkfif2): New define_expand.
+	(trunckfif2): New define_expand.
+	(extend<mode>tf2_internal): Split into extendiftf2_internal and
+	extendkftf2_internal.  Update the insns to use the correct insn type and
+	length attributes based on whether KFmode or IFmode is used.
+	(extendiftf2_internal): Likewise.
+	(extendkftf2_internal): Likewise.
+	(extendtf<mode>2_internal): Split into extendtfif2_internal and
+	extendtfkf2_internal.  Update the insns to use the correct insn type and
+	length attributes based on whether KFmode or IFmode is used.
+	(extendtfif2_internal): Likewise.
+	(extendtfkf2_internal): Likewise.
+
 ==================== work097, patch004 was reverted
 
 ==================== work097, patch003 was reverted


More information about the Gcc-cvs mailing list