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.
gcc/ChangeLog:
* config/rs6000/rs6000.md (const_scalar_int splitter): Remove.
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"
- [(pc)]
-{
- 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"))]