public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-09 22:32 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-09 22:32 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:3a43994f4876237e5339e1b50407990c90a18fc6

commit 3a43994f4876237e5339e1b50407990c90a18fc6
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Aug 9 18:32:02 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 4bc6bdb00a9..d660cbf6974 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,38 @@
+==================== work097, patch003
+
+Use _Float128 type for __float128.
+
+In the past if the long double type was IEEE 128-bit, the __float128 type would
+use the long double type, and TFmode would be used for the mode for both
+_Float128 and long double types.
+
+This patch always uses the _Float128 type for __float128, and it always uses
+KFmode for the mode.  Right now, a similar change for __ibm128 has not been
+made.
+
+In making these changes, I noticed that there was an internal tree for holding
+the __float128 type.  This code removes that internal tree variable.
+
+2022-08-09   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Use
+	float128_type_node, not ieee128_float_type_mode.
+	(rs6000_init_builtins): Always use the _Float128 type for the __float128
+	keyword.  Do not use the long double type.
+	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Use
+	float128_type_node, not ieee128_float_type_mode.  Simplify if
+	statements.
+	(rs6000_cpu_cpp_builtins): Delete ieee128_float_type_mode.
+	* config/rs6000/rs6000.cc (rs6000_libgcc_floating_mode_supported_p):
+	Always use KFmode for _Float128 and __float128.
+	(rs6000_floatn_mode): Likewise.
+	(rs6000_c_mode_for_suffix): Always use KFmode for _Float128 and
+	__float128.  Add 'w' and 'W' suffix for __ibm128 constants.
+	* config/rs6000/rs6000.h (RS6000_BTI_ieee128_float): Delete.
+	(ieee128_float_type_node): Likewise.
+
 ==================== work097, patch002
 
 Rework 128-bit complex multiply and divide.


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-13  2:16 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-13  2:16 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:e0e5a6e43642d0fbc7eded5f61c68c45aa22387a

commit e0e5a6e43642d0fbc7eded5f61c68c45aa22387a
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Aug 12 22:15:44 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 83ffc0af1f9..e5a558f30a8 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,22 @@
+==================== work097, patch015
+
+Delete ieee128_float_type_node.
+
+Now that we always use float128_type_node for __float128, we can delete the tree
+variable ieee128_float_type_node.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Delete
+	ieee128_float_type_node.
+	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Likewise.
+	(rs6000_cpu_cpp_builtins): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_translate_mode_attribute): Likewise.
+	* config/rs6000/rs6000.h (RS6000_BTI_ieee128_float): Delete.
+	(ieee128_float_type_node): Delete.
+
 ==================== work097, patch014
 
 Add 'w' suffix for __ibm128 constants.


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-12 21:19 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-12 21:19 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:37084294aa28e52ee615e2e50ffa441bf45d1b74

commit 37084294aa28e52ee615e2e50ffa441bf45d1b74
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Aug 12 17:18:50 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 4065a6f3848..83ffc0af1f9 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,77 @@
+==================== work097, patch014
+
+Add 'w' suffix for __ibm128 constants.
+
+In the documentation, we mention that 'w' or 'W' can be used as a suffix for
+__ibm128 constants.  We never implemented this.  This patch fixes that.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.cc (rs6000_c_mode_for_suffix): Allow 'w' or 'W'
+	for __ibm128 constants.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/ibm128-suffix.c: New test.
+
+==================== work097, patch013
+
+Make __float128 use the _Float128 type.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Always use the
+	_Float128 type for __float128.  Don't use the long double type.
+	* config/rs6000/rs6000.cc (rs6000_libgcc_floating_mode_supported_p):
+	Always use KFmode for Float128 mode.
+	(rs6000_floatn_mode): Likewise.
+	(rs6000_c_mode_for_suffix): Likewise.
+
+==================== work097, patch012
+
+Update switching between KFmode to TFmode and IFmode to TFmode builtins
+
+This patch looks to see if the caller function wants TFmode (when long double is
+IEEE 128-bit) to switch the KFmode built-in functions to TFmode.
+
+It will look to see if the caller functions wants IFmode (when long double is
+IBM 128-bit) to switch the unpackif built-in function to unpacktf.
+
+It will look to see if a TFmode argument is passed (when long double is IBM
+128-bit) to switch the packif built-in function to packtf.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Update
+	switching from KFmode/IFmode built-in functions to TFmode built-in
+	functions.
+
+==================== work097, patch011
+
+Add ibm128_operand.
+
+Since we have 2 modes for IBM 128-bit (IFmode and TFmode if long double is IBM
+128-bit), this patch provides a new predicate (ibm128_operand) that allows
+combining a conversion from one mode to another.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/predicates.md (ibm128_operand): New predicate.
+	* config/rs6000/rs6000.md (extendiftf2_internal): Add GPR registers in
+	case -msoft-float is used.
+	(extendtfif2_internal): Likewise.
+	(unpack<mode>): Use ibm128_operand.
+	(unpack<mode>_dm): Likewise.
+	(unpack<mode>_nodm): Likewise.
+
 ==================== work097, patch010
 
 Update switching between KFmode to TFmode and IFmode to TFmode builtins


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-12 19:59 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-12 19:59 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:faf05356a7f9b80ad918a5b89a47accacfc123d5

commit faf05356a7f9b80ad918a5b89a47accacfc123d5
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Aug 12 15:59:36 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 9882436fa06..4065a6f3848 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,78 @@
+==================== work097, patch010
+
+Update switching between KFmode to TFmode and IFmode to TFmode builtins
+
+This patch looks to see if the caller function wants TFmode (when long double is
+IEEE 128-bit) to switch the KFmode built-in functions to TFmode.
+
+It will look to see if the caller functions wants IFmode (when long double is
+IBM 128-bit) to switch the unpackif built-in function to unpacktf.
+
+It will look to see if a TFmode argument is passed (when long double is IBM
+128-bit) to switch the packif built-in function to packtf.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Update
+	switching from KFmode/IFmode built-in functions to TFmode built-in
+	functions.
+
+==================== work097, patch010
+
+Add ibm128_operand.
+
+Since we have 2 modes for IBM 128-bit (IFmode and TFmode if long double is IBM
+128-bit), this patch provides a new predicate (ibm128_operand) that allows
+combining a conversion from one mode to another.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/predicates.md (ibm128_operand): New predicate.
+	* config/rs6000/rs6000.md (extendiftf2_internal): Add GPR registers in
+	case -msoft-float is used.
+	(extendtfif2_internal): Likewise.
+	(unpack<mode>): Use ibm128_operand.
+	(unpack<mode>_dm): Likewise.
+	(unpack<mode>_nodm): Likewise.
+
+==================== work097, patch010
+
+Add ieee128_operand.
+
+Since we have 2 modes for IEEE 128-bit (KFmode and TFmode if long double is IEEE
+128-bit), this patch provides a new predicate (ieee128_operand) that allows
+combining a conversion from one mode to another.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/predicates.md (ieee128_operand): New predicate.
+	* config/rs6000/rs6000.md (trunc<mode>sf2_hw): Use ieee128_operand.
+	(round<mode>2): Likewise.
+	(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.
+	* config/rs6000/vsx.md (xsxexpqp_<mode>): Likewise.
+	(xsxsigqp_<mode>): Likewise.
+	(xsiexpqpf_<mode>): Likewise.
+	(xscmpexpqp_<code>_<mode): Likewise.
+	(xscmpexpqp_<code>_<mode>): Likewise.
+	(xststdcqp_<mode>): Likewise.
+	(xststdcnegqp_<mode>): Likewise.
+	(xststdcqp_<mode>): Likewise.
+
 ==================== work097, patch009 was reverted
 
 ==================== work097, patch008 was reverted


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-12  4:19 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-12  4:19 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:7f9b5f23153244be5eec52bd466503e3fac8455b

commit 7f9b5f23153244be5eec52bd466503e3fac8455b
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Aug 12 00:18:57 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 4ae59e38377..a2ca1c84eb1 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,18 @@
+==================== work097, patch009
+
+Make __float128 use the _Float128 type.
+
+2022-08-12   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Always use the
+	_Float128 type for __float128.  Don't use the long double type.
+	* config/rs6000/rs6000.cc (rs6000_libgcc_floating_mode_supported_p):
+	Use KFmode for Float128 mode.
+	(rs6000_floatn_mode): Likewise.
+	(rs6000_c_mode_for_suffix): Likewise.
+
 ==================== work097, patch008 was reverted
 
 ==================== work097, patch007


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-12  1:12 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-12  1:12 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:b7ac9cf57025d75f78125e5ee20eb81a9e1bb5ec

commit b7ac9cf57025d75f78125e5ee20eb81a9e1bb5ec
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Aug 11 21:12:30 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index ee10725921a..2e6a3764991 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,14 @@
+==================== work097, patch008
+
+Make __float128 use the _Float128 type.
+
+2022-08-11   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Always use the
+	_Float128 type for __float128.  Don't use the long double type.
+
 ==================== work097, patch007
 
 Add predicates to inter-mix 128-bit floating point modes.


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-11 21:16 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-11 21:16 UTC (permalink / raw)
  To: gcc-cvs

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


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-10  7:04 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-10  7:04 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:ce2baf986535c61decacaf23bcfaa6985507b4dc

commit ce2baf986535c61decacaf23bcfaa6985507b4dc
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Aug 10 03:03:58 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 4bc6bdb00a9..c293e41907a 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,42 @@
+==================== work097, patch004
+
+Use _Float128 type for __float128.
+
+In the past if the long double type was IEEE 128-bit, the __float128 type would
+use the long double type, and TFmode would be used for the mode for both
+_Float128 and long double types.
+
+This patch always uses the _Float128 type for __float128, and it always uses
+KFmode for the mode.  Right now, a similar change for __ibm128 has not been
+made.
+
+In making these changes, I noticed that there was an internal tree for holding
+the __float128 type.  This code removes that internal tree variable.
+
+2022-08-10   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Use
+	float128_type_node, not ieee128_float_type_mode.
+	(rs6000_init_builtins): Always use the _Float128 type for the __float128
+	keyword.  Do not use the long double type.
+	(rs6000_expand_builtin): Rework converting KFmode and IFmode built-in
+	functions to TFmode.
+	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Use
+	float128_type_node, not ieee128_float_type_mode.  Simplify if
+	statements.
+	(rs6000_cpu_cpp_builtins): Delete ieee128_float_type_mode.
+	* config/rs6000/rs6000.cc (rs6000_libgcc_floating_mode_supported_p):
+	Always use KFmode for _Float128 and __float128.
+	(rs6000_floatn_mode): Likewise.
+	(rs6000_c_mode_for_suffix): Always use KFmode for _Float128 and
+	__float128.  Add 'w' and 'W' suffix for __ibm128 constants.
+	* config/rs6000/rs6000.h (RS6000_BTI_ieee128_float): Delete.
+	(ieee128_float_type_node): Likewise.
+
+==================== work097, patch003 was reverted
+
 ==================== work097, patch002
 
 Rework 128-bit complex multiply and divide.


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-09 21:06 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-09 21:06 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:50d44e73584dc2dd98caa649903c8aefa3b6990e

commit 50d44e73584dc2dd98caa649903c8aefa3b6990e
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Aug 9 17:06:21 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index c6f47016765..4bc6bdb00a9 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,34 @@
+==================== work097, patch002
+
+Rework 128-bit complex multiply and divide.
+
+This function reworks how the complex multiply and divide built-in functions are
+done.  Previously we created built-in declarations for doing long double complex
+multiply and divide when long double is IEEE 128-bit.  The old code also did not
+support __ibm128 complex multiply and divide if long double is IEEE 128-bit.
+
+One of the problems with this approach is that the add_builtin_function would
+abort if we used the same name for two different built-in functions.
+
+This code does not create the built-in declaration.  Instead, it uses the
+TARGET_MANGLE_DECL_ASSEMBLER_NAME hook to change the name before it is written
+out to the assembler file.
+
+2022-08-09   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-c.cc (rs6000_cpu_cpp_builtins): Set
+	building_libgcc.
+	* config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
+	(init_float128_ieee): Delete code to switch complex multiply and divide
+	for long double.
+	(complex_multiply_builtin_code): New helper function.
+	(complex_divide_builtin_code): Likewise.
+	(rs6000_mangle_decl_assembler_name): Add support for mangling the name
+	of complex 128-bit multiply and divide built-in functions.
+	* config/rs6000/rs6000.opt (building_libgcc): New target variable.
+
 ==================== work097, patch001
 
 Allow __ibm128 even if IEEE 128-bit floating point is not supported.


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

* [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner.
@ 2022-08-09 20:53 Michael Meissner
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Meissner @ 2022-08-09 20:53 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:ea4e99013f4e49199cb35cd13d0a4d06cb90e70d

commit ea4e99013f4e49199cb35cd13d0a4d06cb90e70d
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Aug 9 16:53:03 2022 -0400

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

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 4904d6ccc45..c6f47016765 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,39 @@
+==================== work097, patch001
+
+Allow __ibm128 even if IEEE 128-bit floating point is not supported.
+
+This set of patches changes the GCC compiler to allow the use of the __ibm128
+keyword if we have IEEE 128-bit floating point support enabled or if long double
+is 128-bits.
+
+In addition, checks for requiring hardware floating point to use __ibm128 have
+been removed.  This fixes PR target/105534.
+
+2022-08-09   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	PR target/105534
+	* config/rs6000/rs6000-builtins.cc (rs6000_init_builtins): Create
+	__ibm128 on older machines without IEEE 128-bit support.
+	* config/rs6000/rs600.cc (init_float128_ibm): Remove checks for hardware
+	floating point for the IBM 128-bit comparisons.
+	(rs6000_init_libfuncs): Create IBM 128-bit floating point support even
+	if we don't support IEEE 128-bit floating point.
+	(rs6000_scalar_mode_supported_p): Allow __ibm128 even if we don't
+	support _Float128.
+	* config/rs6000/rs6000.h (FLOAT128_IBM_P): Remove checks for
+	-mhard-float.
+	(TARGET_IBM128): New macro.
+	* config/rs6000/rs6000.md (@extenddf<mode>2_fprs): Allow IFmode to be
+	converted even if long double is not 128-bits.
+	(extenddf<mode>2_vsx): Likewise.
+	(extendtfif2): Allow conversion if we have __ibm128 but not IEEE 128-bit
+	floating point.
+	(trunckftf2): Likewise.
+
+==================== work097, create branch
+
 2022-08-08   Michael Meissner  <meissner@linux.ibm.com>
 
 	Clone branch


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

end of thread, other threads:[~2022-08-13  2:16 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-09 22:32 [gcc(refs/users/meissner/heads/work097)] Update ChangeLog.meissner Michael Meissner
  -- strict thread matches above, loose matches on Subject: below --
2022-08-13  2:16 Michael Meissner
2022-08-12 21:19 Michael Meissner
2022-08-12 19:59 Michael Meissner
2022-08-12  4:19 Michael Meissner
2022-08-12  1:12 Michael Meissner
2022-08-11 21:16 Michael Meissner
2022-08-10  7:04 Michael Meissner
2022-08-09 21:06 Michael Meissner
2022-08-09 20:53 Michael Meissner

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