diff mbox series

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

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

Commit Message

Claudiu Zissulescu Ianculescu 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 Ianculescu 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 Ianculescu 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
diff mbox series

Patch

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]);