[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