From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1005) id C90113858C2D; Sat, 30 Jul 2022 01:30:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C90113858C2D Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Michael Meissner To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/meissner/heads/work095)] Update ChangeLog.meissner. X-Act-Checkin: gcc X-Git-Author: Michael Meissner X-Git-Refname: refs/users/meissner/heads/work095 X-Git-Oldrev: c84000fcccb0825eded8ef267fe5538dacb2f6d9 X-Git-Newrev: f091d4ce004b153540470a4a5a4e98742a666bea Message-Id: <20220730013022.C90113858C2D@sourceware.org> Date: Sat, 30 Jul 2022 01:30:22 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jul 2022 01:30:22 -0000 https://gcc.gnu.org/g:f091d4ce004b153540470a4a5a4e98742a666bea commit f091d4ce004b153540470a4a5a4e98742a666bea Author: Michael Meissner Date: Fri Jul 29 21:30:06 2022 -0400 Update ChangeLog.meissner. 2022-07-29 Michael Meissner gcc/ * ChangeLog.meissner: Update. Diff: --- gcc/ChangeLog.meissner | 143 ++----------------------------------------------- 1 file changed, 3 insertions(+), 140 deletions(-) diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner index 48b29eafbee..a61c52210e7 100644 --- a/gcc/ChangeLog.meissner +++ b/gcc/ChangeLog.meissner @@ -1,145 +1,8 @@ -==================== work095, patch #18 +==================== work095, patch #18 was reverted. -Mangle __ibm128 into u8__ibm128. +==================== work095, patch #17 was reverted. -This patch changes the mangling of __ibm128 when long double uses the IBM -128-bit encoding. This change is necessary due to the change where __ibm128 and -long double no longer share the same internal type node. - -2022-07-29 Michael Meissner - -gcc/ - - PR target/85657 - * config/rs6000/rs600.cc (rs6000_mangle_type): Mangle __ibm128 into - "u8__ibm128". - -==================== work095, patch #17 - -Make __ibm128 and __float128 separate types from long double. - -This patch changes GCC so that __float128 and __ibm128 use different types -internally than long double. In the past, GCC would use the long double type -for __float128 if -mabi=ieeelongdouble was used, and it would use the long -double type for __ibm128 if -mabi=ibmlongdouble was used. - -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 changed rs6000_builtin_type_compatible so that if the types are both IEEE -128-bit floating point or both IBM 128-bit floating point have compatible -types. - -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 - -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. - (extendtf2_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. - (extendtf2_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 #16 - -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. - -2022-07-29 Michael Meissner - -gcc/ - - * 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 (@extenddf2_fprs): Allow IFmode to be - converted even if long double is not 128-bits. - (extenddf2_vsx): Likewise. - (extendtfif2): Allow conversion if we have __ibm128 but not IEEE 128-bit - floating point. - (trunckftf2): Likewise. +==================== work095, patch #16 was reverted. ==================== work095, patch #15 was reverted.