diff mbox series

[8/8] rs6000: Fix some missing built-in attributes [PR104004]

Message ID bf94891ecd8995fa1a4a2c3f9366cc88c969edfa.1643390744.git.wschmidt@linux.ibm.com
State New
Headers show
Series rs6000: Built-in function cleanups and bug fixes | expand

Commit Message

Bill Schmidt Jan. 28, 2022, 5:50 p.m. UTC
PR104004 caught some misses on my part in converting to the new built-in
function infrastructure.  In particular, I forgot to mark all of the "nosoft"
built-ins, and one of those should also have been marked "no32bit".

Bootstrapped and tested on powerpc64le-linux-gnu with no regressions.
Is this okay for trunk?

Thanks,
Bill


2022-01-27  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
	* config/rs6000/rs6000-builtin.def (MFFSL): Mark nosoft.
	(MTFSB0): Likewise.
	(MTFSB1): Likewise.
	(SET_FPSCR_RN): Likewise.
	(SET_FPSCR_DRN): Mark nosoft and no32bit.
---
 gcc/config/rs6000/rs6000-builtins.def | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Jakub Jelinek March 15, 2022, 1:18 p.m. UTC | #1
On Fri, Jan 28, 2022 at 11:50:26AM -0600, Bill Schmidt via Gcc-patches wrote:
> PR104004 caught some misses on my part in converting to the new built-in
> function infrastructure.  In particular, I forgot to mark all of the "nosoft"
> built-ins, and one of those should also have been marked "no32bit".
> 
> Bootstrapped and tested on powerpc64le-linux-gnu with no regressions.
> Is this okay for trunk?
> 
> Thanks,
> Bill
> 
> 
> 2022-01-27  Bill Schmidt  <wschmidt@linux.ibm.com>
> 
> gcc/
> 	* config/rs6000/rs6000-builtin.def (MFFSL): Mark nosoft.
> 	(MTFSB0): Likewise.
> 	(MTFSB1): Likewise.
> 	(SET_FPSCR_RN): Likewise.
> 	(SET_FPSCR_DRN): Mark nosoft and no32bit.

This patch fixes a P1 regression and from my (limited) understanding
doesn't depend on any other patch in the series.

Is this ok for trunk (I agree some testcase coverage would be nice)?

> diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def
> index c8f0cf332eb..98619a649e3 100644
> --- a/gcc/config/rs6000/rs6000-builtins.def
> +++ b/gcc/config/rs6000/rs6000-builtins.def
> @@ -215,7 +215,7 @@
>  ; processors, this builtin automatically falls back to mffs on older
>  ; platforms.  Thus it appears here in the [always] stanza.
>    double __builtin_mffsl ();
> -    MFFSL rs6000_mffsl {}
> +    MFFSL rs6000_mffsl {nosoft}
>  
>  ; This is redundant with __builtin_pack_ibm128, as it requires long
>  ; double to be __ibm128.  Should probably be deprecated.
> @@ -226,10 +226,10 @@
>      MFTB rs6000_mftb_di {32bit}
>  
>    void __builtin_mtfsb0 (const int<0,31>);
> -    MTFSB0 rs6000_mtfsb0 {}
> +    MTFSB0 rs6000_mtfsb0 {nosoft}
>  
>    void __builtin_mtfsb1 (const int<0,31>);
> -    MTFSB1 rs6000_mtfsb1 {}
> +    MTFSB1 rs6000_mtfsb1 {nosoft}
>  
>    void __builtin_mtfsf (const int<0,255>, double);
>      MTFSF rs6000_mtfsf {}
> @@ -238,7 +238,7 @@
>      PACK_IF packif {}
>  
>    void __builtin_set_fpscr_rn (const int[0,3]);
> -    SET_FPSCR_RN rs6000_set_fpscr_rn {}
> +    SET_FPSCR_RN rs6000_set_fpscr_rn {nosoft}
>  
>    const double __builtin_unpack_ibm128 (__ibm128, const int<0,1>);
>      UNPACK_IF unpackif {}
> @@ -2969,7 +2969,7 @@
>      PACK_TD packtd {}
>  
>    void __builtin_set_fpscr_drn (const int[0,7]);
> -    SET_FPSCR_DRN rs6000_set_fpscr_drn {}
> +    SET_FPSCR_DRN rs6000_set_fpscr_drn {nosoft,no32bit}
>  
>    const unsigned long long __builtin_unpack_dec128 (_Decimal128, \
>                                                      const int<0,1>);
> -- 
> 2.27.0

	Jakub
Jakub Jelinek March 30, 2022, 12:28 p.m. UTC | #2
On Tue, Mar 15, 2022 at 02:18:00PM +0100, Jakub Jelinek via Gcc-patches wrote:
> On Fri, Jan 28, 2022 at 11:50:26AM -0600, Bill Schmidt via Gcc-patches wrote:
> > PR104004 caught some misses on my part in converting to the new built-in
> > function infrastructure.  In particular, I forgot to mark all of the "nosoft"
> > built-ins, and one of those should also have been marked "no32bit".
> > 
> > Bootstrapped and tested on powerpc64le-linux-gnu with no regressions.
> > Is this okay for trunk?
> > 
> > Thanks,
> > Bill
> > 
> > 
> > 2022-01-27  Bill Schmidt  <wschmidt@linux.ibm.com>
> > 
> > gcc/
> > 	* config/rs6000/rs6000-builtin.def (MFFSL): Mark nosoft.
> > 	(MTFSB0): Likewise.
> > 	(MTFSB1): Likewise.
> > 	(SET_FPSCR_RN): Likewise.
> > 	(SET_FPSCR_DRN): Mark nosoft and no32bit.
> 
> This patch fixes a P1 regression and from my (limited) understanding
> doesn't depend on any other patch in the series.
> 
> Is this ok for trunk (I agree some testcase coverage would be nice)?

I'd like to ping this again.

> > diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def
> > index c8f0cf332eb..98619a649e3 100644
> > --- a/gcc/config/rs6000/rs6000-builtins.def
> > +++ b/gcc/config/rs6000/rs6000-builtins.def
> > @@ -215,7 +215,7 @@
> >  ; processors, this builtin automatically falls back to mffs on older
> >  ; platforms.  Thus it appears here in the [always] stanza.
> >    double __builtin_mffsl ();
> > -    MFFSL rs6000_mffsl {}
> > +    MFFSL rs6000_mffsl {nosoft}
> >  
> >  ; This is redundant with __builtin_pack_ibm128, as it requires long
> >  ; double to be __ibm128.  Should probably be deprecated.
> > @@ -226,10 +226,10 @@
> >      MFTB rs6000_mftb_di {32bit}
> >  
> >    void __builtin_mtfsb0 (const int<0,31>);
> > -    MTFSB0 rs6000_mtfsb0 {}
> > +    MTFSB0 rs6000_mtfsb0 {nosoft}
> >  
> >    void __builtin_mtfsb1 (const int<0,31>);
> > -    MTFSB1 rs6000_mtfsb1 {}
> > +    MTFSB1 rs6000_mtfsb1 {nosoft}
> >  
> >    void __builtin_mtfsf (const int<0,255>, double);
> >      MTFSF rs6000_mtfsf {}
> > @@ -238,7 +238,7 @@
> >      PACK_IF packif {}
> >  
> >    void __builtin_set_fpscr_rn (const int[0,3]);
> > -    SET_FPSCR_RN rs6000_set_fpscr_rn {}
> > +    SET_FPSCR_RN rs6000_set_fpscr_rn {nosoft}
> >  
> >    const double __builtin_unpack_ibm128 (__ibm128, const int<0,1>);
> >      UNPACK_IF unpackif {}
> > @@ -2969,7 +2969,7 @@
> >      PACK_TD packtd {}
> >  
> >    void __builtin_set_fpscr_drn (const int[0,7]);
> > -    SET_FPSCR_DRN rs6000_set_fpscr_drn {}
> > +    SET_FPSCR_DRN rs6000_set_fpscr_drn {nosoft,no32bit}
> >  
> >    const unsigned long long __builtin_unpack_dec128 (_Decimal128, \
> >                                                      const int<0,1>);
> > -- 
> > 2.27.0
> 
> 	Jakub

	Jakub
will schmidt March 30, 2022, 5:41 p.m. UTC | #3
On Fri, 2022-01-28 at 11:50 -0600, Bill Schmidt via Gcc-patches wrote:
> PR104004 caught some misses on my part in converting to the new
> built-in
> function infrastructure.  In particular, I forgot to mark all of the
> "nosoft"
> built-ins, and one of those should also have been marked "no32bit".
> 
> Bootstrapped and tested on powerpc64le-linux-gnu with no regressions.
> Is this okay for trunk?
> 
> Thanks,
> Bill
> 
Hi,

The patch here seems reasonable to me. 
There are comments/subsequent pings that include commentary about
additional test coverage.

I see all of the builtins referenced here appear to be touched by
the existing test  gcc.target/powerpc/test_fpscr_drn_builtin.c .
I could create a variation of that test forcing ! hard_dfp in case that
would help, though i'm uncertain the value there. 

Thanks
-Will

> 
> 2022-01-27  Bill Schmidt  <wschmidt@linux.ibm.com>
> 
> gcc/
> 	* config/rs6000/rs6000-builtin.def (MFFSL): Mark nosoft.
> 	(MTFSB0): Likewise.
> 	(MTFSB1): Likewise.
> 	(SET_FPSCR_RN): Likewise.
> 	(SET_FPSCR_DRN): Mark nosoft and no32bit.
> ---
>  gcc/config/rs6000/rs6000-builtins.def | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/gcc/config/rs6000/rs6000-builtins.def
> b/gcc/config/rs6000/rs6000-builtins.def
> index c8f0cf332eb..98619a649e3 100644
> --- a/gcc/config/rs6000/rs6000-builtins.def
> +++ b/gcc/config/rs6000/rs6000-builtins.def
> @@ -215,7 +215,7 @@
>  ; processors, this builtin automatically falls back to mffs on older
>  ; platforms.  Thus it appears here in the [always] stanza.
>    double __builtin_mffsl ();
> -    MFFSL rs6000_mffsl {}
> +    MFFSL rs6000_mffsl {nosoft}
> 
>  ; This is redundant with __builtin_pack_ibm128, as it requires long
>  ; double to be __ibm128.  Should probably be deprecated.
> @@ -226,10 +226,10 @@
>      MFTB rs6000_mftb_di {32bit}
> 
>    void __builtin_mtfsb0 (const int<0,31>);
> -    MTFSB0 rs6000_mtfsb0 {}
> +    MTFSB0 rs6000_mtfsb0 {nosoft}
> 
>    void __builtin_mtfsb1 (const int<0,31>);
> -    MTFSB1 rs6000_mtfsb1 {}
> +    MTFSB1 rs6000_mtfsb1 {nosoft}
> 
>    void __builtin_mtfsf (const int<0,255>, double);
>      MTFSF rs6000_mtfsf {}
> @@ -238,7 +238,7 @@
>      PACK_IF packif {}
> 
>    void __builtin_set_fpscr_rn (const int[0,3]);
> -    SET_FPSCR_RN rs6000_set_fpscr_rn {}
> +    SET_FPSCR_RN rs6000_set_fpscr_rn {nosoft}
> 
>    const double __builtin_unpack_ibm128 (__ibm128, const int<0,1>);
>      UNPACK_IF unpackif {}
> @@ -2969,7 +2969,7 @@
>      PACK_TD packtd {}
> 
>    void __builtin_set_fpscr_drn (const int[0,7]);
> -    SET_FPSCR_DRN rs6000_set_fpscr_drn {}
> +    SET_FPSCR_DRN rs6000_set_fpscr_drn {nosoft,no32bit}
> 
>    const unsigned long long __builtin_unpack_dec128 (_Decimal128, \
>                                                      const int<0,1>);
Segher Boessenkool March 30, 2022, 11:07 p.m. UTC | #4
On Tue, Mar 15, 2022 at 02:18:00PM +0100, Jakub Jelinek wrote:
> On Fri, Jan 28, 2022 at 11:50:26AM -0600, Bill Schmidt via Gcc-patches wrote:
> > PR104004 caught some misses on my part in converting to the new built-in
> > function infrastructure.  In particular, I forgot to mark all of the "nosoft"
> > built-ins, and one of those should also have been marked "no32bit".

> This patch fixes a P1 regression and from my (limited) understanding
> doesn't depend on any other patch in the series.

It depends on 3/8 which was only partially applied (or not at all even?)
It is a mess :-(

I'll look into it tomorrow.


Segher
Segher Boessenkool March 31, 2022, 10:17 p.m. UTC | #5
On Wed, Mar 30, 2022 at 06:07:26PM -0500, Segher Boessenkool wrote:
> On Tue, Mar 15, 2022 at 02:18:00PM +0100, Jakub Jelinek wrote:
> > On Fri, Jan 28, 2022 at 11:50:26AM -0600, Bill Schmidt via Gcc-patches wrote:
> > > PR104004 caught some misses on my part in converting to the new built-in
> > > function infrastructure.  In particular, I forgot to mark all of the "nosoft"
> > > built-ins, and one of those should also have been marked "no32bit".
> 
> > This patch fixes a P1 regression and from my (limited) understanding
> > doesn't depend on any other patch in the series.
> 
> It depends on 3/8 which was only partially applied (or not at all even?)
> It is a mess :-(
> 
> I'll look into it tomorrow.

3/8 wasn't applied at all.  I did some surgery to apply this 8/8 though.


Segher
diff mbox series

Patch

diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def
index c8f0cf332eb..98619a649e3 100644
--- a/gcc/config/rs6000/rs6000-builtins.def
+++ b/gcc/config/rs6000/rs6000-builtins.def
@@ -215,7 +215,7 @@ 
 ; processors, this builtin automatically falls back to mffs on older
 ; platforms.  Thus it appears here in the [always] stanza.
   double __builtin_mffsl ();
-    MFFSL rs6000_mffsl {}
+    MFFSL rs6000_mffsl {nosoft}
 
 ; This is redundant with __builtin_pack_ibm128, as it requires long
 ; double to be __ibm128.  Should probably be deprecated.
@@ -226,10 +226,10 @@ 
     MFTB rs6000_mftb_di {32bit}
 
   void __builtin_mtfsb0 (const int<0,31>);
-    MTFSB0 rs6000_mtfsb0 {}
+    MTFSB0 rs6000_mtfsb0 {nosoft}
 
   void __builtin_mtfsb1 (const int<0,31>);
-    MTFSB1 rs6000_mtfsb1 {}
+    MTFSB1 rs6000_mtfsb1 {nosoft}
 
   void __builtin_mtfsf (const int<0,255>, double);
     MTFSF rs6000_mtfsf {}
@@ -238,7 +238,7 @@ 
     PACK_IF packif {}
 
   void __builtin_set_fpscr_rn (const int[0,3]);
-    SET_FPSCR_RN rs6000_set_fpscr_rn {}
+    SET_FPSCR_RN rs6000_set_fpscr_rn {nosoft}
 
   const double __builtin_unpack_ibm128 (__ibm128, const int<0,1>);
     UNPACK_IF unpackif {}
@@ -2969,7 +2969,7 @@ 
     PACK_TD packtd {}
 
   void __builtin_set_fpscr_drn (const int[0,7]);
-    SET_FPSCR_DRN rs6000_set_fpscr_drn {}
+    SET_FPSCR_DRN rs6000_set_fpscr_drn {nosoft,no32bit}
 
   const unsigned long long __builtin_unpack_dec128 (_Decimal128, \
                                                     const int<0,1>);