Hi Richard, cool, thanks. I just gave it a try with my test cases and it does what it is supposed to do, at least if I disable the register pressure check :) A cursory look over the test suite showed no major regressions and just some overly specific tests.
My test case only works before split, though, as the UNSPEC predicates will prevent further combination afterwards. Right now the (pre-RA) code combines every instance disregarding the actual pressure and just checking if the "new" value does not occupy more registers than the old one. - Shouldn't the "pressure" also depend on the number of available hard regs (i.e. an nregs = 2 is not necessarily worse than nregs = 1 if we have 32 hard regs in the new class vs 16 in the old one)? - I assume/hope you expected my (now obsolete) fwprop change could be re-used? Otherwise we wouldn't want to unconditionally "propagate" into a loop for example? For my test case the combination of the vec_duplicate into all insns leads to "high" register pressure that we could avoid. How should we continue here? I suppose you'll first want to get this version to the trunk before complicating it further. Regards Robin