[PATCH] SubRegister Liveness fixups

Quentin Colombet qcolombet at apple.com
Wed Nov 19 16:01:16 PST 2014


Hi Matthias,

Thanks for all the investigations you have done to track down all the regressions.

This is amazing!

For now, I would focus on having something correct but disabled by default. That way we could fix the performance problems we found more easily, like what you saw with the widening of moves logic.

To this end, I’ll focus into the review of the other thread, so that the ground work is in place and can be tested/enhanced by everybody.
Anyhow, here are my comments for this set of patches.

> 0002-Do-not-unnecessarily-test-for-kill-flags.patch

Why is this required?
X86 does not use the sub register liveness, is it?

> 003-ARM-Rework-widen-VMOVS-transformation.patch

This one is a refactoring of the previous copy widening mechanism. As the diffs in the updated test cases show, this does not seem to be equivalent to the old stuff. Still it seems to me that it could work in both modes (i.e., with and without sub register liveness), therefore it sounds like a good generalization.
Could you start a different thread with this patch?
That is fine if you think it is too early.

> 0004-Adapt-testcases-to-different-schedules-after-subreg-.patch

Could the changes be implied by a different ordering in the coalescing decisions?

> 0005-Add-enable-subreg-liveness-false-to-test.patch

This is awesome!

Thanks,
-Quentin

On Nov 18, 2014, at 7:47 PM, Matthias Braun <matze at braunis.de> wrote:

> Here is a set of patches that deal with some regressions in the ARM testsuite if subregister liveness tracking is enabled.
> 
> The regressions/differences are mostly due to:
> * Different register allocation, less spills in some cases - as expected
> * The scheduled changed in some tests - I'm not sure yet if that is fine or hints at a problem
> * We cannot maintain implicit definitions for superregisters after register allocation anymore if subregister are written. This required a rewrite of the VMOV widening logic. One of the remaining regressions appears to be another case of missing implicit definitions prohibiting float domain-crossing logic to kick in.
> * In some situations fewer kill flags are produced, in other situations more kill flags are produced - this is fine as Kill-flags are deprecated anyway, but a testcases needed to be adapted.
> 
> 
> Greetings
>    Matthias
> 
> <0001-ARM-Enable-subregister-liveness.patch><0002-Do-not-unnecessarily-test-for-kill-flags.patch><0003-ARM-Rework-widen-VMOVS-transformation.patch><0004-Adapt-testcases-to-different-schedules-after-subreg-.patch><0005-Add-enable-subreg-liveness-false-to-test.patch>





More information about the llvm-commits mailing list