llvm-project
239ca11a - [MLIR][Mem2Reg] Add support for region control flow and SCF (#185036)

Commit
21 days ago
[MLIR][Mem2Reg] Add support for region control flow and SCF (#185036) This PR adds support for region control-flow. Region control-flow and CFG can be mixed together in the same program. See the [accompanying RFC](https://discourse.llvm.org/t/rfc-support-region-control-flow-in-mem2reg/90082) for some design considerations. Beyond the considerations in the RFC, a few minor changes were introduced: - Calling the visitor hook for defined values is now deferred to the end of promotion. - The lazy creation of default values has been moved to the places where it happens to prepare for a future change where it is actually lazy. Documentation about it not working as intended for now was also added. All SCF operations are supported, including `forall` and `parallel`, which is pretty cool I think. I am sorry in advance for git diff displaying a really bad diff for Mem2Reg.cpp around where the liveness analysis used to be. Do consider simply reading this part of the code off the file. As a disclaimer, I designed all the test cases myself, but I used a large amount of matrix multiplications to produce the corresponding IR and FileCheck tests. I have reviewed them carefully and they correspond to my intent. --------- Co-authored-by: Slava Zakharin <szakharin@nvidia.com>
Parents
Loading