- 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.
|
Is there any guarantee that this loop will actually terminate? In other words, do we know that the set PossibleIndexes covers the lanes completely?