[MLIR] Enhance getLargestKnownDivisor for AffineExpr floordiv/ceildiv
authorUday Bondhugula <uday@polymagelabs.com>
Thu, 15 Dec 2022 15:24:19 +0000 (20:54 +0530)
committerUday Bondhugula <uday@polymagelabs.com>
Sat, 17 Dec 2022 07:15:38 +0000 (12:45 +0530)
commitc9e121eb44c419f0e55e6e5d7735f6c962b141bc
treefd77c88d175aa04e3eaaae4d1e8eaeb0badef2c4
parent85956bd5522faed930d2ad70dd40b4311d66bc95
[MLIR] Enhance getLargestKnownDivisor for AffineExpr floordiv/ceildiv

The largest known divisor for expressions like (32 * d0 + 32, 128)
ceildiv 8 wasn't being computed tightly; a conservative value of 1 was
being returned. Address this. This leads to a broad improvement for
several affine analyses and rewrites that depend on knowing whether
something is a multiple of a specific constant or such largest known
constant.

Differential Revision: https://reviews.llvm.org/D140185
mlir/lib/IR/AffineExpr.cpp
mlir/test/Dialect/Affine/unroll.mlir