HomePhabricator

[MLIR] Consider AffineIfOp when getting the index set of an Op wrapped in…

Authored by kumasento on Aug 8 2020, 2:41 PM.

Description

[MLIR] Consider AffineIfOp when getting the index set of an Op wrapped in nested loops

This diff attempts to resolve the TODO in getOpIndexSet (formerly
known as getInstIndexSet), which states "Add support to handle IfInsts
surronding op".

Major changes in this diff:

  1. Overload getIndexSet. The overloaded version considers both

AffineForOp and AffineIfOp.

  1. The getInstIndexSet is updated accordingly: its name is changed to

getOpIndexSet and its implementation is based on a new API getIVs
instead of getLoopIVs.

  1. Add addAffineIfOpDomain to FlatAffineConstraints, which extracts

new constraints from the integer set of AffineIfOp and merges it to
the current constraint system.

  1. Update how a Value is determined as dim or symbol for

ValuePositionMap in buildDimAndSymbolPositionMaps.

Differential Revision: https://reviews.llvm.org/D84698