- This fixes a bug where subregisters incompatible with the given vreg were choosen.
- Implement the case where multiple copies are necessary to cover a given lanemask.
rdar://30388692
Differential D30438
SplitKit: Correctly implement partial copies MatzeB on Feb 27 2017, 6:06 PM. Authored by
Details
rdar://30388692
Diff Detail
Event TimelineComment Actions defFromParent supposed to return a single def, how does it work if there is more than one? I suppose it does work as you should have tests passed... Comment Actions Redo a lot of this patch:
Comment Actions Indeed this turned out to screw up the liveness and I just wasn't able to catch it with the small amount of tests we had before. Hence this new version of the patch. Comment Actions Upload the correct patch this time! Redo a lot of this patch:
Comment Actions The other question, what would happen if target implements its own addOptimizedRegAlloc and skips VirtRegRewriter? I guess in this case copies will remain bundled. Looks like NVPTX does not use it. Comment Actions If they have their own regalloc they probably cannot use SplitKit either. If they do use SplitKit, well they have to implement their own expansion mechanism (though it seems SplitKit has references to VirtRegMap so I don't think you realistically will use SplitKit without the VirtRegRewriter).
Comment Actions LGTM with more checks in the test.
|
I think it can break something which was bundled not by SplitKit. I wish we could mark these somehow... It will not happen now because we do not use bundles, but potentially a problem. Maybe insert some sort of a marker into the bundle or slot, or create a new MIFlag? Ideally of course it shall not use bundles just to keep LIS correct :(