[v1] Internal-fn: Add FLOATN support for l/ll round and rint [PR/112432]

Message ID 20231109143338.307725-1-pan2.li@intel.com
State Accepted
Headers
Series [v1] Internal-fn: Add FLOATN support for l/ll round and rint [PR/112432] |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Li, Pan2 Nov. 9, 2023, 2:33 p.m. UTC
  From: Pan Li <pan2.li@intel.com>

The defined DEF_EXT_LIB_FLOATN_NX_BUILTINS functions should also
have DEF_INTERNAL_FLT_FLOATN_FN instead of DEF_INTERNAL_FLT_FN for
the FLOATN support. According to the glibc API and gcc builtin, we
have below table for the FLOATN is supported or not.

+---------+-------+-------------------------------------+
|         | glibc | gcc: DEF_EXT_LIB_FLOATN_NX_BUILTINS |
+---------+-------+-------------------------------------+
| iceil   | N     | N                                   |
| ifloor  | N     | N                                   |
| irint   | N     | N                                   |
| iround  | N     | N                                   |
| lceil   | N     | N                                   |
| lfloor  | N     | N                                   |
| lrint   | Y     | Y                                   |
| lround  | Y     | Y                                   |
| llceil  | N     | N                                   |
| llfllor | N     | N                                   |
| llrint  | Y     | Y                                   |
| llround | Y     | Y                                   |
+---------+-------+-------------------------------------+

This patch would like to support FLOATN for:
1. lrint
2. lround
3. llrint
4. llround

The below tests are passed within this patch:
1. x86 bootstrap and regression test.
2. aarch64 regression test.
3. riscv regression tests.

	PR target/112432

gcc/ChangeLog:

	* internal-fn.def (LRINT): Add FLOATN support.
	(LROUND): Ditto.
	(LLRINT): Ditto.
	(LLROUND): Ditto.

Signed-off-by: Pan Li <pan2.li@intel.com>
---
 gcc/internal-fn.def | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
  

Comments

Richard Biener Nov. 9, 2023, 3:11 p.m. UTC | #1
> Am 09.11.2023 um 15:34 schrieb pan2.li@intel.com:
> 
> From: Pan Li <pan2.li@intel.com>
> 
> The defined DEF_EXT_LIB_FLOATN_NX_BUILTINS functions should also
> have DEF_INTERNAL_FLT_FLOATN_FN instead of DEF_INTERNAL_FLT_FN for
> the FLOATN support. According to the glibc API and gcc builtin, we
> have below table for the FLOATN is supported or not.
> 
> +---------+-------+-------------------------------------+
> |         | glibc | gcc: DEF_EXT_LIB_FLOATN_NX_BUILTINS |
> +---------+-------+-------------------------------------+
> | iceil   | N     | N                                   |
> | ifloor  | N     | N                                   |
> | irint   | N     | N                                   |
> | iround  | N     | N                                   |
> | lceil   | N     | N                                   |
> | lfloor  | N     | N                                   |
> | lrint   | Y     | Y                                   |
> | lround  | Y     | Y                                   |
> | llceil  | N     | N                                   |
> | llfllor | N     | N                                   |
> | llrint  | Y     | Y                                   |
> | llround | Y     | Y                                   |
> +---------+-------+-------------------------------------+
> 
> This patch would like to support FLOATN for:
> 1. lrint
> 2. lround
> 3. llrint
> 4. llround
> 
> The below tests are passed within this patch:
> 1. x86 bootstrap and regression test.
> 2. aarch64 regression test.
> 3. riscv regression tests.

Ok 

Richard 

>    PR target/112432
> 
> gcc/ChangeLog:
> 
>    * internal-fn.def (LRINT): Add FLOATN support.
>    (LROUND): Ditto.
>    (LLRINT): Ditto.
>    (LLROUND): Ditto.
> 
> Signed-off-by: Pan Li <pan2.li@intel.com>
> ---
> gcc/internal-fn.def | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def
> index 7f0e3759615..10f88e37bc9 100644
> --- a/gcc/internal-fn.def
> +++ b/gcc/internal-fn.def
> @@ -365,12 +365,12 @@ DEF_INTERNAL_FLT_FN (IRINT, ECF_CONST, lrint, unary_convert)
> DEF_INTERNAL_FLT_FN (IROUND, ECF_CONST, lround, unary_convert)
> DEF_INTERNAL_FLT_FN (LCEIL, ECF_CONST, lceil, unary_convert)
> DEF_INTERNAL_FLT_FN (LFLOOR, ECF_CONST, lfloor, unary_convert)
> -DEF_INTERNAL_FLT_FN (LRINT, ECF_CONST, lrint, unary_convert)
> -DEF_INTERNAL_FLT_FN (LROUND, ECF_CONST, lround, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LRINT, ECF_CONST, lrint, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LROUND, ECF_CONST, lround, unary_convert)
> DEF_INTERNAL_FLT_FN (LLCEIL, ECF_CONST, lceil, unary_convert)
> DEF_INTERNAL_FLT_FN (LLFLOOR, ECF_CONST, lfloor, unary_convert)
> -DEF_INTERNAL_FLT_FN (LLRINT, ECF_CONST, lrint, unary_convert)
> -DEF_INTERNAL_FLT_FN (LLROUND, ECF_CONST, lround, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LLRINT, ECF_CONST, lrint, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LLROUND, ECF_CONST, lround, unary_convert)
> 
> /* FP rounding.  */
> DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary)
> -- 
> 2.34.1
>
  
Li, Pan2 Nov. 10, 2023, 12:56 a.m. UTC | #2
Committed, thanks Richard.

Pan

-----Original Message-----
From: Richard Biener <rguenther@suse.de> 
Sent: Thursday, November 9, 2023 11:12 PM
To: Li, Pan2 <pan2.li@intel.com>
Cc: gcc-patches@gcc.gnu.org; juzhe.zhong@rivai.ai; kito.cheng@sifive.com; Wang, Yanzhang <yanzhang.wang@intel.com>
Subject: Re: [PATCH v1] Internal-fn: Add FLOATN support for l/ll round and rint [PR/112432]



> Am 09.11.2023 um 15:34 schrieb pan2.li@intel.com:
> 
> From: Pan Li <pan2.li@intel.com>
> 
> The defined DEF_EXT_LIB_FLOATN_NX_BUILTINS functions should also
> have DEF_INTERNAL_FLT_FLOATN_FN instead of DEF_INTERNAL_FLT_FN for
> the FLOATN support. According to the glibc API and gcc builtin, we
> have below table for the FLOATN is supported or not.
> 
> +---------+-------+-------------------------------------+
> |         | glibc | gcc: DEF_EXT_LIB_FLOATN_NX_BUILTINS |
> +---------+-------+-------------------------------------+
> | iceil   | N     | N                                   |
> | ifloor  | N     | N                                   |
> | irint   | N     | N                                   |
> | iround  | N     | N                                   |
> | lceil   | N     | N                                   |
> | lfloor  | N     | N                                   |
> | lrint   | Y     | Y                                   |
> | lround  | Y     | Y                                   |
> | llceil  | N     | N                                   |
> | llfllor | N     | N                                   |
> | llrint  | Y     | Y                                   |
> | llround | Y     | Y                                   |
> +---------+-------+-------------------------------------+
> 
> This patch would like to support FLOATN for:
> 1. lrint
> 2. lround
> 3. llrint
> 4. llround
> 
> The below tests are passed within this patch:
> 1. x86 bootstrap and regression test.
> 2. aarch64 regression test.
> 3. riscv regression tests.

Ok 

Richard 

>    PR target/112432
> 
> gcc/ChangeLog:
> 
>    * internal-fn.def (LRINT): Add FLOATN support.
>    (LROUND): Ditto.
>    (LLRINT): Ditto.
>    (LLROUND): Ditto.
> 
> Signed-off-by: Pan Li <pan2.li@intel.com>
> ---
> gcc/internal-fn.def | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def
> index 7f0e3759615..10f88e37bc9 100644
> --- a/gcc/internal-fn.def
> +++ b/gcc/internal-fn.def
> @@ -365,12 +365,12 @@ DEF_INTERNAL_FLT_FN (IRINT, ECF_CONST, lrint, unary_convert)
> DEF_INTERNAL_FLT_FN (IROUND, ECF_CONST, lround, unary_convert)
> DEF_INTERNAL_FLT_FN (LCEIL, ECF_CONST, lceil, unary_convert)
> DEF_INTERNAL_FLT_FN (LFLOOR, ECF_CONST, lfloor, unary_convert)
> -DEF_INTERNAL_FLT_FN (LRINT, ECF_CONST, lrint, unary_convert)
> -DEF_INTERNAL_FLT_FN (LROUND, ECF_CONST, lround, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LRINT, ECF_CONST, lrint, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LROUND, ECF_CONST, lround, unary_convert)
> DEF_INTERNAL_FLT_FN (LLCEIL, ECF_CONST, lceil, unary_convert)
> DEF_INTERNAL_FLT_FN (LLFLOOR, ECF_CONST, lfloor, unary_convert)
> -DEF_INTERNAL_FLT_FN (LLRINT, ECF_CONST, lrint, unary_convert)
> -DEF_INTERNAL_FLT_FN (LLROUND, ECF_CONST, lround, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LLRINT, ECF_CONST, lrint, unary_convert)
> +DEF_INTERNAL_FLT_FLOATN_FN (LLROUND, ECF_CONST, lround, unary_convert)
> 
> /* FP rounding.  */
> DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary)
> -- 
> 2.34.1
>
  

Patch

diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def
index 7f0e3759615..10f88e37bc9 100644
--- a/gcc/internal-fn.def
+++ b/gcc/internal-fn.def
@@ -365,12 +365,12 @@  DEF_INTERNAL_FLT_FN (IRINT, ECF_CONST, lrint, unary_convert)
 DEF_INTERNAL_FLT_FN (IROUND, ECF_CONST, lround, unary_convert)
 DEF_INTERNAL_FLT_FN (LCEIL, ECF_CONST, lceil, unary_convert)
 DEF_INTERNAL_FLT_FN (LFLOOR, ECF_CONST, lfloor, unary_convert)
-DEF_INTERNAL_FLT_FN (LRINT, ECF_CONST, lrint, unary_convert)
-DEF_INTERNAL_FLT_FN (LROUND, ECF_CONST, lround, unary_convert)
+DEF_INTERNAL_FLT_FLOATN_FN (LRINT, ECF_CONST, lrint, unary_convert)
+DEF_INTERNAL_FLT_FLOATN_FN (LROUND, ECF_CONST, lround, unary_convert)
 DEF_INTERNAL_FLT_FN (LLCEIL, ECF_CONST, lceil, unary_convert)
 DEF_INTERNAL_FLT_FN (LLFLOOR, ECF_CONST, lfloor, unary_convert)
-DEF_INTERNAL_FLT_FN (LLRINT, ECF_CONST, lrint, unary_convert)
-DEF_INTERNAL_FLT_FN (LLROUND, ECF_CONST, lround, unary_convert)
+DEF_INTERNAL_FLT_FLOATN_FN (LLRINT, ECF_CONST, lrint, unary_convert)
+DEF_INTERNAL_FLT_FLOATN_FN (LLROUND, ECF_CONST, lround, unary_convert)
 
 /* FP rounding.  */
 DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary)