public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] rs6000: avoid ineffective replacement of splitters
@ 2022-08-12  6:39 Jiufu Guo
  2022-08-12  9:41 ` Kewen.Lin
  0 siblings, 1 reply; 3+ messages in thread
From: Jiufu Guo @ 2022-08-12  6:39 UTC (permalink / raw)
  To: gcc-patches; +Cc: segher, dje.gcc, linkw, guojiufu

Hi,

As a comment in
https://gcc.gnu.org/pipermail/gcc-patches/2022-August/599556.html

Those splitters call rs6000_emit_set_const directly, and the replacements
are never used.  Using (pc) would be less misleading.

This patch pass bootstrap&regtest on ppc64 BE and LE.
Is this ok for trunk.

BR,
Jeff(Jiufu)

gcc/ChangeLog:

	* config/rs6000/rs6000.md: (constant splitters): Use "(pc)" as the
	replacements.

---
 gcc/config/rs6000/rs6000.md | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 1367a2cb779..7fadbeef1aa 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -7727,11 +7727,7 @@ (define_split
   [(set (match_operand:SI 0 "gpc_reg_operand")
 	(match_operand:SI 1 "const_int_operand"))]
   "num_insns_constant (operands[1], SImode) > 1"
-  [(set (match_dup 0)
-	(match_dup 2))
-   (set (match_dup 0)
-	(ior:SI (match_dup 0)
-		(match_dup 3)))]
+  [(pc)]
 {
   if (rs6000_emit_set_const (operands[0], operands[1]))
     DONE;
@@ -9662,8 +9658,7 @@ (define_split
   [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
 	(match_operand:DI 1 "const_int_operand"))]
   "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
-  [(set (match_dup 0) (match_dup 2))
-   (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
+  [(pc)]
 {
   if (rs6000_emit_set_const (operands[0], operands[1]))
     DONE;
@@ -9675,8 +9670,7 @@ (define_split
   [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
 	(match_operand:DI 1 "const_scalar_int_operand"))]
   "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
-  [(set (match_dup 0) (match_dup 2))
-   (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
+  [(pc)]
 {
   if (rs6000_emit_set_const (operands[0], operands[1]))
     DONE;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] rs6000: avoid ineffective replacement of splitters
  2022-08-12  6:39 [PATCH] rs6000: avoid ineffective replacement of splitters Jiufu Guo
@ 2022-08-12  9:41 ` Kewen.Lin
  2022-08-17  2:40   ` Jiufu Guo
  0 siblings, 1 reply; 3+ messages in thread
From: Kewen.Lin @ 2022-08-12  9:41 UTC (permalink / raw)
  To: Jiufu Guo; +Cc: dje.gcc, segher, linkw, gcc-patches

Hi Jeff,

on 2022/8/12 14:39, Jiufu Guo via Gcc-patches wrote:
> Hi,
> 
> As a comment in
> https://gcc.gnu.org/pipermail/gcc-patches/2022-August/599556.html
> 
> Those splitters call rs6000_emit_set_const directly, and the replacements
> are never used.  Using (pc) would be less misleading.

Since the replacements are never used, IMHO this subject doesn't
quite meet the change.  How about "fix misleading new patterns
of splitters"?

> 
> This patch pass bootstrap&regtest on ppc64 BE and LE.
> Is this ok for trunk.

This patch is OK w/ or w/o subject tweaked.  Thanks!

BR,
Kewen

> 
> BR,
> Jeff(Jiufu)
> 
> gcc/ChangeLog:
> 
> 	* config/rs6000/rs6000.md: (constant splitters): Use "(pc)" as the
> 	replacements.
> 
> ---
>  gcc/config/rs6000/rs6000.md | 12 +++---------
>  1 file changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
> index 1367a2cb779..7fadbeef1aa 100644
> --- a/gcc/config/rs6000/rs6000.md
> +++ b/gcc/config/rs6000/rs6000.md
> @@ -7727,11 +7727,7 @@ (define_split
>    [(set (match_operand:SI 0 "gpc_reg_operand")
>  	(match_operand:SI 1 "const_int_operand"))]
>    "num_insns_constant (operands[1], SImode) > 1"
> -  [(set (match_dup 0)
> -	(match_dup 2))
> -   (set (match_dup 0)
> -	(ior:SI (match_dup 0)
> -		(match_dup 3)))]
> +  [(pc)]
>  {
>    if (rs6000_emit_set_const (operands[0], operands[1]))
>      DONE;
> @@ -9662,8 +9658,7 @@ (define_split
>    [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
>  	(match_operand:DI 1 "const_int_operand"))]
>    "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
> -  [(set (match_dup 0) (match_dup 2))
> -   (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
> +  [(pc)]
>  {
>    if (rs6000_emit_set_const (operands[0], operands[1]))
>      DONE;
> @@ -9675,8 +9670,7 @@ (define_split
>    [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
>  	(match_operand:DI 1 "const_scalar_int_operand"))]
>    "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
> -  [(set (match_dup 0) (match_dup 2))
> -   (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
> +  [(pc)]
>  {
>    if (rs6000_emit_set_const (operands[0], operands[1]))
>      DONE;

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] rs6000: avoid ineffective replacement of splitters
  2022-08-12  9:41 ` Kewen.Lin
@ 2022-08-17  2:40   ` Jiufu Guo
  0 siblings, 0 replies; 3+ messages in thread
From: Jiufu Guo @ 2022-08-17  2:40 UTC (permalink / raw)
  To: Kewen.Lin; +Cc: dje.gcc, segher, linkw, gcc-patches

Hi,

"Kewen.Lin" <linkw@linux.ibm.com> writes:

> Hi Jeff,
>
> on 2022/8/12 14:39, Jiufu Guo via Gcc-patches wrote:
>> Hi,
>> 
>> As a comment in
>> https://gcc.gnu.org/pipermail/gcc-patches/2022-August/599556.html
>> 
>> Those splitters call rs6000_emit_set_const directly, and the replacements
>> are never used.  Using (pc) would be less misleading.
>
> Since the replacements are never used, IMHO this subject doesn't
> quite meet the change.  How about "fix misleading new patterns
> of splitters"?
Thanks for your helpful sugguestion!

BR,
Jeff(Jiufu)
>
>> 
>> This patch pass bootstrap&regtest on ppc64 BE and LE.
>> Is this ok for trunk.
>
> This patch is OK w/ or w/o subject tweaked.  Thanks!
>
> BR,
> Kewen
>
>> 
>> BR,
>> Jeff(Jiufu)
>> 
>> gcc/ChangeLog:
>> 
>> 	* config/rs6000/rs6000.md: (constant splitters): Use "(pc)" as the
>> 	replacements.
>> 
>> ---
>>  gcc/config/rs6000/rs6000.md | 12 +++---------
>>  1 file changed, 3 insertions(+), 9 deletions(-)
>> 
>> diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
>> index 1367a2cb779..7fadbeef1aa 100644
>> --- a/gcc/config/rs6000/rs6000.md
>> +++ b/gcc/config/rs6000/rs6000.md
>> @@ -7727,11 +7727,7 @@ (define_split
>>    [(set (match_operand:SI 0 "gpc_reg_operand")
>>  	(match_operand:SI 1 "const_int_operand"))]
>>    "num_insns_constant (operands[1], SImode) > 1"
>> -  [(set (match_dup 0)
>> -	(match_dup 2))
>> -   (set (match_dup 0)
>> -	(ior:SI (match_dup 0)
>> -		(match_dup 3)))]
>> +  [(pc)]
>>  {
>>    if (rs6000_emit_set_const (operands[0], operands[1]))
>>      DONE;
>> @@ -9662,8 +9658,7 @@ (define_split
>>    [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
>>  	(match_operand:DI 1 "const_int_operand"))]
>>    "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
>> -  [(set (match_dup 0) (match_dup 2))
>> -   (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
>> +  [(pc)]
>>  {
>>    if (rs6000_emit_set_const (operands[0], operands[1]))
>>      DONE;
>> @@ -9675,8 +9670,7 @@ (define_split
>>    [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
>>  	(match_operand:DI 1 "const_scalar_int_operand"))]
>>    "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
>> -  [(set (match_dup 0) (match_dup 2))
>> -   (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
>> +  [(pc)]
>>  {
>>    if (rs6000_emit_set_const (operands[0], operands[1]))
>>      DONE;

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-08-17  2:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-12  6:39 [PATCH] rs6000: avoid ineffective replacement of splitters Jiufu Guo
2022-08-12  9:41 ` Kewen.Lin
2022-08-17  2:40   ` Jiufu Guo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).