[gcc(refs/users/meissner/heads/work098)] Improve converting between 128-bit modes that use the same format.

Michael Meissner meissner@gcc.gnu.org
Wed Aug 17 03:48:06 GMT 2022


https://gcc.gnu.org/g:5446ce481c25fef0e9bf8bb22b9498861987dd9e

commit 5446ce481c25fef0e9bf8bb22b9498861987dd9e
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Aug 16 23:47:48 2022 -0400

    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.
    
    Previously, the two different moves were lumped together (i.e. converting
    between IEEE 128-bit and IEEE 128-bit was matched by the same insns as
    converting between IBM 128-bit and IBM 128-bit moves).
    
    2022-08-16   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 the move uses IEEE 128-bit floating
            point or IBM 128-bit floating point type.
            (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 the move uses IEEE 128-bit floating e
            point or IBM 128-bit floating point type.
            (extendtfif2_internal): Likewise.
            (extendtfkf2_internal): Likewise.

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index b13f3846227..5fe27d232ef 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,32 @@
+==================== work098, patch #5
+
+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.
+
 ==================== work098, patch #4
 
 Rework 128-bit complex multiply and divide.


More information about the Gcc-cvs mailing list