Hi!

On Mon, Dec 07, 2020 at 03:27:14PM +0100, Uros Bizjak wrote:
> On Fri, Dec 4, 2020 at 7:26 PM Segher Boessenkool
> <seg...@kernel.crashing.org> wrote:
> > A splitter can *already* split to only one insn.
> 
> Unfortunately, the attached patch with the following testcase:
> 
> --cut here--
> int test (int a, int b)
> {
>  return a << (b & 31);
> }
> --cut here--
> 
> does not trigger the call to combine_split_insns. The reason in the
> following condition:
> 
>   /* If we were combining three insns and the result is a simple SET
>      with no ASM_OPERANDS that wasn't recognized, try to split it into two
>      insns.  There are two ways to do this.  It can be split using a
>      machine-specific method (like when you have an addition of a large
>      constant) or by combine in the function find_split_point.  */
> 
>   if (i1 && insn_code_number < 0 && GET_CODE (newpat) == SET
>       && asm_noperands (newpat) < 0)
> 
> where i1 is null.

I see.  We could also allow this for 2->2 combinations (w/ the same
restrictions we do for other 2->2 combinations, but that probably falls
out automatically).

This will need careful testing of course, but I don't expect anything
bad (famous last words of course).

Could you please open a PR for this?  Just so I can keep track :-)


Segher

Reply via email to