This is an archive of the discontinued LLVM Phabricator instance.

[mlir][Interfaces] Add `promoteIfSingleIteration` to `LoopLikeOpInterface`
ClosedPublic

Authored by springerm on Jul 3 2023, 6:25 AM.

Details

Summary

There are existing implementations for scf.for, scf.forall and affine.for. This revision adds an interface method to the LoopLikeOpInterface.

  • scf.forall now implements the LoopLikeOpInterface.
  • The implementations of scf.for and scf.forall become interface method implementations. affine.for remains as is for the moment. (The implementation of promoteIfSingleIteration depepends on helper functions from MLIRAffineAnalysis, which cannot be used from MLIRAffineDialect, where the interface is currently implemented.)
  • More efficient implementations of promoteIfSingleIteration. In particular, the scf.forall operation now inlines operations instead of cloning them. This also preserves handles when used from the transform dialect.

Diff Detail