Compare commits

...

2 Commits

Author SHA1 Message Date
Michael Meissner 753f68d5dc Update ChangeLog.* 2025-10-17 23:34:32 -04:00
Michael Meissner 96da9d464a Do not issue psabi warning for 16-bit floating point library calls.
2025-10-17  Michael Meissner  <meissner@linux.ibm.com>

gcc/

	* config/rs6000/rs6000-call.c (init_cumulative_args): Do not issue the
	psabi warning for passing and returning 16-bit floating point calls on
	library functions.
	(rs6000_function_arg): Likewise.
2025-10-17 23:33:12 -04:00
2 changed files with 18 additions and 4 deletions

View File

@ -1,3 +1,16 @@
==================== Branch work222-float, patch #341 ====================
Do not issue psabi warning for 16-bit floating point library calls.
2025-10-17 Michael Meissner <meissner@linux.ibm.com>
gcc/
* config/rs6000/rs6000-call.c (init_cumulative_args): Do not issue the
psabi warning for passing and returning 16-bit floating point calls on
library functions.
(rs6000_function_arg): Likewise.
==================== Branch work222-float, patch #340 ==================== ==================== Branch work222-float, patch #340 ====================
Fix loading up negative 0 vector 16-bit floating point. Fix loading up negative 0 vector 16-bit floating point.

View File

@ -64,6 +64,7 @@
#include "ppc-auxv.h" #include "ppc-auxv.h"
#include "targhooks.h" #include "targhooks.h"
#include "opts.h" #include "opts.h"
#include "print-tree.h"
#include "rs6000-internal.h" #include "rs6000-internal.h"
@ -691,7 +692,7 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype,
future. The issue is currently 16-bit floating point is returned in future. The issue is currently 16-bit floating point is returned in
floating point register #1 in 16-bit format. We may or may not want to floating point register #1 in 16-bit format. We may or may not want to
return it as a scalar 64-bit value. */ return it as a scalar 64-bit value. */
if (fntype && warn_psabi) if (fntype && warn_psabi && !cum->libcall)
{ {
machine_mode ret_mode = TYPE_MODE (TREE_TYPE (fntype)); machine_mode ret_mode = TYPE_MODE (TREE_TYPE (fntype));
if (ret_mode == BFmode || ret_mode == HFmode) if (ret_mode == BFmode || ret_mode == HFmode)
@ -1659,9 +1660,9 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
future. The issue is currently 16-bit floating point values are passed in future. The issue is currently 16-bit floating point values are passed in
floating point registers in the native 16-bit format. We may or may not floating point registers in the native 16-bit format. We may or may not
want to pass the value it as a scalar 64-bit value. */ want to pass the value it as a scalar 64-bit value. */
if (warn_psabi && (mode == BFmode || mode == HFmode)) if (warn_psabi && !cum->libcall && (mode == BFmode || mode == HFmode))
warning (OPT_Wpsabi, "%s might be passed differently in the future", warning (OPT_Wpsabi, "%s might be passed differently in the future",
mode == BFmode ? "__bfloat16" : "_Float16"); mode == BFmode ? "__bfloat16" : "_Float16");
/* Return a marker to indicate whether CR1 needs to set or clear the /* Return a marker to indicate whether CR1 needs to set or clear the
bit that V.4 uses to say fp args were passed in registers. bit that V.4 uses to say fp args were passed in registers.