[mlir][Linalg] Cleanup the drop unit dims pass in Linalg.
TL;DR the following API functions have been merged ``` void populateFoldUnitExtentDimsViaReshapesPatterns(RewritePatternSet &patterns); void populateFoldUnitExtentDimsViaSlicesPatterns(RewritePatternSet &patterns); ``` into ``` void populateFoldUnitExtentDimsPatterns(RewritePatternSet &patterns, ControlDropUnitDims &options); ``` To use the previous functionality use ``` ControlDropUnitDims options; // By default options.rankReductionStrategy is // ControlDropUnitDims::RankReductionStrategy::ReassociativeReshape. populateFoldUnitExtentDimsPatterns(patterns, options); ``` and ``` ControlDropUnitDims options; options.rankReductionStrategy = ControlDropUnitDims::RankReductionStrategy::ExtractInsertSlice populateFoldUnitExtentDimsPatterns(patterns, options); ``` This pass is quite old and needed to be updated based on the current approach to transformations in Linalg - Instead of two patterns, one to just remove loop dimensions that are unit extent (and using 0 in the indexing maps), and another to drop the unit-extents in the operand shapes, combine into a single transformation. This avoid creating an intermediate step with indexing maps having 0's in the domains exp ressions. - Expose the core transformation as a utility function and add a pattern that calls this transformation. This is a mostly NFC change, apart from the API change and dropping the patterns/test that only dropped the loops that are unit extents. Differential Revision: https://reviews.llvm.org/D155518
Loading
Please sign in to comment