[ARC] Use hardware support for double-precision compare instructions.
diff mbox series

Message ID 20191209095229.5572-1-claziss@gmail.com
State New
Headers show
Series
  • [ARC] Use hardware support for double-precision compare instructions.
Related show

Commit Message

Claudiu Zissulescu Dec. 9, 2019, 9:52 a.m. UTC
Although the FDCMP (the double precision floating point compare instruction) is added to the compiler, it is not properly used via cstoredi pattern. Fix it.

OK to apply?
Claudidu

xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (iterator SDF): Check TARGET_FP_DP_BASE.
	(cstoredi4): Use TARGET_HARD_FLOAT.
---
 gcc/config/arc/arc.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Jeff Law Dec. 11, 2019, 6:59 p.m. UTC | #1
On Mon, 2019-12-09 at 11:52 +0200, Claudiu Zissulescu wrote:
> Although the FDCMP (the double precision floating point compare
> instruction) is added to the compiler, it is not properly used via
> cstoredi pattern. Fix it.
> 
> OK to apply?
> Claudidu
> 
> xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
> 
> 	* config/arc/arc.md (iterator SDF): Check TARGET_FP_DP_BASE.
> 	(cstoredi4): Use TARGET_HARD_FLOAT.
OK
jeff
Claudiu Zissulescu Dec. 12, 2019, 9:32 a.m. UTC | #2
Thank you for your review. Patch pushed to mainline and gcc9 branch.

//Claudiu

On Wed, Dec 11, 2019 at 8:59 PM Jeff Law <law@redhat.com> wrote:
>
> On Mon, 2019-12-09 at 11:52 +0200, Claudiu Zissulescu wrote:
> > Although the FDCMP (the double precision floating point compare
> > instruction) is added to the compiler, it is not properly used via
> > cstoredi pattern. Fix it.
> >
> > OK to apply?
> > Claudidu
> >
> > xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
> >
> >       * config/arc/arc.md (iterator SDF): Check TARGET_FP_DP_BASE.
> >       (cstoredi4): Use TARGET_HARD_FLOAT.
> OK
> jeff
>
Vineet Gupta Jan. 14, 2020, 11:48 p.m. UTC | #3
On 12/9/19 1:52 AM, Claudiu Zissulescu wrote:
> Although the FDCMP (the double precision floating point compare instruction) is added to the compiler, it is not properly used via cstoredi pattern. Fix it.
>
> OK to apply?
> Claudidu
>
> xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
>
> 	* config/arc/arc.md (iterator SDF): Check TARGET_FP_DP_BASE.
> 	(cstoredi4): Use TARGET_HARD_FLOAT.
> ---
>  gcc/config/arc/arc.md | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
> index b592f25afce..bd44030b409 100644
> --- a/gcc/config/arc/arc.md
> +++ b/gcc/config/arc/arc.md
> @@ -3749,7 +3749,7 @@ archs4x, archs4xd"
>  })
>  
>  (define_mode_iterator SDF [(SF "TARGET_FP_SP_BASE || TARGET_OPTFPE")
> -			   (DF "TARGET_OPTFPE")])
> +			   (DF "TARGET_FP_DP_BASE || TARGET_OPTFPE")])
>  
>  (define_expand "cstore<mode>4"
>    [(set (reg:CC CC_REG)
> @@ -3759,7 +3759,7 @@ archs4x, archs4xd"
>  	(match_operator:SI 1 "comparison_operator" [(reg CC_REG)
>  						    (const_int 0)]))]
>  
> -  "TARGET_FP_SP_BASE || TARGET_OPTFPE"
> +  "TARGET_HARD_FLOAT || TARGET_OPTFPE"
>  {
>    gcc_assert (XEXP (operands[1], 0) == operands[2]);
>    gcc_assert (XEXP (operands[1], 1) == operands[3]);

Can this be backported to gcc-9 please ?
glibc testing uses gcc-9

Thx,
-Vineet
Claudiu Zissulescu Jan. 17, 2020, 11:20 a.m. UTC | #4
It is already ported :)
https://github.com/gcc-mirror/gcc/commit/555e4a053951a0ae24835a266e71819336d7f637#diff-5b8bd26eec6c2b9f560870c205416edc

Cheers,
Claudiu

On Wed, Jan 15, 2020 at 1:49 AM Vineet Gupta <Vineet.Gupta1@synopsys.com> wrote:
>
> On 12/9/19 1:52 AM, Claudiu Zissulescu wrote:
> > Although the FDCMP (the double precision floating point compare instruction) is added to the compiler, it is not properly used via cstoredi pattern. Fix it.
> >
> > OK to apply?
> > Claudidu
> >
> > xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
> >
> >       * config/arc/arc.md (iterator SDF): Check TARGET_FP_DP_BASE.
> >       (cstoredi4): Use TARGET_HARD_FLOAT.
> > ---
> >  gcc/config/arc/arc.md | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
> > index b592f25afce..bd44030b409 100644
> > --- a/gcc/config/arc/arc.md
> > +++ b/gcc/config/arc/arc.md
> > @@ -3749,7 +3749,7 @@ archs4x, archs4xd"
> >  })
> >
> >  (define_mode_iterator SDF [(SF "TARGET_FP_SP_BASE || TARGET_OPTFPE")
> > -                        (DF "TARGET_OPTFPE")])
> > +                        (DF "TARGET_FP_DP_BASE || TARGET_OPTFPE")])
> >
> >  (define_expand "cstore<mode>4"
> >    [(set (reg:CC CC_REG)
> > @@ -3759,7 +3759,7 @@ archs4x, archs4xd"
> >       (match_operator:SI 1 "comparison_operator" [(reg CC_REG)
> >                                                   (const_int 0)]))]
> >
> > -  "TARGET_FP_SP_BASE || TARGET_OPTFPE"
> > +  "TARGET_HARD_FLOAT || TARGET_OPTFPE"
> >  {
> >    gcc_assert (XEXP (operands[1], 0) == operands[2]);
> >    gcc_assert (XEXP (operands[1], 1) == operands[3]);
>
> Can this be backported to gcc-9 please ?
> glibc testing uses gcc-9
>
> Thx,
> -Vineet

Patch
diff mbox series

diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
index b592f25afce..bd44030b409 100644
--- a/gcc/config/arc/arc.md
+++ b/gcc/config/arc/arc.md
@@ -3749,7 +3749,7 @@  archs4x, archs4xd"
 })
 
 (define_mode_iterator SDF [(SF "TARGET_FP_SP_BASE || TARGET_OPTFPE")
-			   (DF "TARGET_OPTFPE")])
+			   (DF "TARGET_FP_DP_BASE || TARGET_OPTFPE")])
 
 (define_expand "cstore<mode>4"
   [(set (reg:CC CC_REG)
@@ -3759,7 +3759,7 @@  archs4x, archs4xd"
 	(match_operator:SI 1 "comparison_operator" [(reg CC_REG)
 						    (const_int 0)]))]
 
-  "TARGET_FP_SP_BASE || TARGET_OPTFPE"
+  "TARGET_HARD_FLOAT || TARGET_OPTFPE"
 {
   gcc_assert (XEXP (operands[1], 0) == operands[2]);
   gcc_assert (XEXP (operands[1], 1) == operands[3]);