https://gcc.gnu.org/g:08732a265833d82dfcbc679a73c04cf14875e2ad
commit 08732a265833d82dfcbc679a73c04cf14875e2ad Author: Michael Meissner <[email protected]> Date: Thu Oct 22 04:08:57 2026 -0400 Update ChangeLog.* Diff: --- gcc/ChangeLog.float | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/gcc/ChangeLog.float b/gcc/ChangeLog.float index 85f3acff34a4..68c6743fa286 100644 --- a/gcc/ChangeLog.float +++ b/gcc/ChangeLog.float @@ -1,3 +1,64 @@ +==================== Branch work269-float, patch #211 ==================== + +Pass and return 16-bit fp library values in GPRs + +This patch changes all of the 16-bit floating point library functions to pass +and return 16-bit floating point values as unsigned short. The intention is to +prepare for modifying the calling sequence so that the values are converted to +32/64-bit scalar floating point. However, we can't call the library functions +which are used to do the conversion if we have to convert the argument on a +machine that does not have native conversion instructions. + +This patch adds support in libgcc to build the normal conversion functions and a +modified conversion that has a _gpr suffix, and are the functions called when +-mfloat16-gpr-convert is one. + +This patch also does conversions between TFmode, KFmode, IFmode and BFmode or +HFmode even if we do not have hardware support for BFmode or HFmode. + +2026-10-22 Michael Meissner <[email protected]> + +gcc/ + + * config/rs6000/float16.md + (extend<FP16_HW:mode><FP16_FLOAT_CONVERT:mode>2): Allow insn even if we + do not have hardware support. + (trunc<FP16_FLOAT_CONVERT:mode><FP16_HW:mode>2): Likewise. + * config/rs6000/rs6000-call.cc (FP16_USE_GPR): New macro. + (USE_FP_FOR_ARG_P) Add support for 16-bit fp library functions passing + 16-bit fp in GPR registers. + (init_cumulative_args): Print the function name if it exists and if the + function is a library function when -mdebug=ag is used. + * config/rs6000/rs6000.cc (rs6000_debug_reg_global): Print 16-bit + floating point information if -mdebug=reg. + (init_float16): New function. Mark all of the 16-bit floating point + library functions as passing/returning 16-bit floating point values in + GPR registers and change the name to have a '_gpr' suffix. + (rs6000_init_libfuncs): Likewise. + (rs6000_opt_vars): Add -mfloat16-gpr-convert switch. + * config/rs6000/rs6000.opt (-mfloat16-gpr-convert): New switch. + +libgcc/ + + * config/rs6000/convert-16bit-fp-extend: New file. + * config/rs6000/convert-16bit-fp-fix: Likewise. + * config/rs6000/convert-16bit-fp-float: Likewise. + * config/rs6000/convert-16bit-fp-trunc: Likewise. + * config/rs6000/ppc-eqbf2.c: Likewise. + * config/rs6000/ppc-eqhf2.c: Likewise. + * config/rs6000/ppc-fixbfbitint.c: Likewise. + * config/rs6000/ppc-fixhfbitint.c: Likewise. + * config/rs6000/ppc-floatbitintbf.c: Likewise. + * config/rs6000/ppc-floatbitinthf.c: Likewise. + * config/rs6000/ppc-truncbfhf2.c: Likewise. + * config/rs6000/ppc-trunchfbf2.c: Likewise. + * config/rs6000/sfp-machine.h: Add declarations for declaring the *_gpr + library functions. + * config/rs6000/t-float16: Build all of the new 16-bit floating point + conversion functions that pass and return 16-bit floating point in GPR + registers. + + ==================== Branch work269-float, patch #210 ==================== Add _Float16 and __bf16 tests.
