[PATCH] i386: Add combine splitters to allow combining multiple insns into reg1 = const; reg2 = rotate (reg1, reg3 & cst) [PR96226]

Jakub Jelinek jakub@redhat.com
Fri Dec 4 17:57:32 GMT 2020


On Fri, Dec 04, 2020 at 06:53:49PM +0100, Uros Bizjak wrote:
> > > I was trying that first, but it didn't work.  Without the
> > > clobber it actually works right, we don't have the rotate insn with the
> > > masking and no clobber, so in the end combiner does add the clobber there
> > > (or would fail it the clobber couldn't be added).
> >
> > I was not aware of that detail ...
> 
> That said, IMO, it would be better to rewrite other _mask and _mask_1
> patterns that remove useless masking to combine splitter.
> Unfortunately, the combine splitter expects exactly two output
> instructions for some reason, but these patterns split to one
> instruction. Perhaps it is possible to relax this limitation of
> combine splitters and also allow one output instruction.

I've already checked it in.  Guess I can try to change the combine splitters
(can it wait till Monday?) so that they remove the masking when splitting
the insn into two, so that the pre-reload splitters aren't involved.

To turn those pre-reload define_insn_and_splits I'm afraid we'd indeed
need combiner's changes, so that would need to be discussed with Segher
first.

	Jakub



More information about the Gcc-patches mailing list