On Wed, Jul 15, 2015 at 12:10:51PM +0930, Alan Modra wrote:
> There are one or two regressions related to a TODO that Segher added.
> The following produces poorer code than mainline.

Yes, that's why it says TODO :-)

> Also, rs6000.md patterns uses SImode for the rotate/shift count.
> Segher has added some new insns that use DImode when 64-bit.

"Some"?  Looks like all even.  &($^&*()%$&.  Would be nice if gen*
could warn, hrm.

> I think that inconsistency ought to be fixed.

Yeah; patch in progress.  Thanks for spotting it.

> (I haven't completely analysed this) but won't
> 
> (define_insn_and_split "*and<mode>3_imm_dot_shifted"
> [snip]
>           (lshiftrt:GPR (match_operand:GPR 1 "gpc_reg_operand" "%r,r")
>                         (match_operand:GPR 4 "const_int_operand" "n,n"))
>                                        ^^^this
> fail to match combined patterns generated from other rs6000.md
> patterns like
> 
> (define_insn "lshr<mode>3"

This pattern isn't generated from that; it's generated from and_imm.
Combine thinks many "dot1" patterns should look different than the
"base" and dot2 patterns; this is an important case (it happens when
testing a single bit).


Segher

Reply via email to