rs6000: remove unused splitter on const_scalar_int_operand

Message ID 20220830094426.94692-1-guojiufu@linux.ibm.com
State New, archived
Headers
Series rs6000: remove unused splitter on const_scalar_int_operand |

Commit Message

Jiufu Guo Aug. 30, 2022, 9:44 a.m. UTC
  Hi,

There are two splitters, both are calling rs6000_emit_set_const to emit
instructions for constant building.
One splitter checks `const_int_operand`, this splitter is always used.
Another spitter checks `const_scalar_int_operand`, this one is never
used now.

Checking the history, that splitter is introduced around 1999 for
HOST_BITS_PER_WIDE_INT=32, as below:

(define_split
  [(set (match_operand:DI 0 "gpc_reg_operand" "")
	(match_operand:DI 1 "const_double_operand" ""))]
  "HOST_BITS_PER_WIDE_INT == 32 && TARGET_POWERPC64
   && num_insns_constant (operands[1], DImode) > 1"

And `HOST_BITS_PER_WIDE_INT == 32` is eliminated later, since it is
`const_double_operand` can cover it.
When wide_int is introduced, `const_double_operand` is replaced by
`const_scalar_int_operand`.

Now, HOST_BITS_PER_WIDE_INT is forced to 64, this splitter is safe
to remove.

Bootstrap and regtest pass on ppc64 and ppc64le.
Is this ok for trunk?

BR,
Jeff

gcc/ChangeLog:

	* config/rs6000/rs6000.md (const_scalar_int splitter): Remove.

---
 gcc/config/rs6000/rs6000.md | 13 -------------
 1 file changed, 13 deletions(-)
  

Comments

Segher Boessenkool Sept. 1, 2022, 11:21 p.m. UTC | #1
Hi!

On Tue, Aug 30, 2022 at 05:44:26PM +0800, Jiufu Guo wrote:
> There are two splitters, both are calling rs6000_emit_set_const to emit
> instructions for constant building.
> One splitter checks `const_int_operand`, this splitter is always used.
> Another spitter checks `const_scalar_int_operand`, this one is never
> used now.

> Now, HOST_BITS_PER_WIDE_INT is forced to 64, this splitter is safe
> to remove.

Okay for trunk.  Thanks!


Segher
  

Patch

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index e9e5cd1e54d..2a177936689 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -9717,19 +9717,6 @@  (define_split
     FAIL;
 })
 
-(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)))]
-{
-  if (rs6000_emit_set_const (operands[0], operands[1]))
-    DONE;
-  else
-    FAIL;
-})
-
 (define_split
   [(set (match_operand:DI 0 "altivec_register_operand")
 	(match_operand:DI 1 "s5bit_cint_operand"))]