[MLIR] Generalize detecting mods during slice computing
authorVinayaka Bandishti <vinayaka@polymagelabs.com>
Wed, 23 Jun 2021 06:55:09 +0000 (12:25 +0530)
committerUday Bondhugula <uday@polymagelabs.com>
Wed, 23 Jun 2021 06:59:34 +0000 (12:29 +0530)
commita873b6d466f5c4b2e939eb02c38425e5f7ffa513
treeff8f3c76c67f28405750edd9d7bac0e59117dab3
parent0e55112242f644fdd59c382f774bf0f92143969f
[MLIR] Generalize detecting mods during slice computing

During slice computation of affine loop fusion, detect one id as the mod
of another id w.r.t a constant in a more generic way. Restrictions on
co-efficients of the ids is removed. Also, information from the
previously calculated ids is used for simplification of affine
expressions, e.g.,

If `id1` = `id2`,
  `id_n - divisor * id_q - id_r + id1 - id2 = 0`, is simplified to:
  `id_n - divisor * id_q - id_r = 0`.

If `c` is a non-zero integer,
  `c*id_n - c*divisor * id_q - c*id_r = 0`, is simplified to:
  `id_n - divisor * id_q - id_r = 0`.

Reviewed By: bondhugula, ayzhuang

Differential Revision: https://reviews.llvm.org/D104614
mlir/lib/Analysis/AffineStructures.cpp
mlir/test/Transforms/loop-fusion.mlir