diff options
| author | Uday Bondhugula <uday@polymagelabs.com> | 2019-12-10 15:49:07 -0800 |
|---|---|---|
| committer | A. Unique TensorFlower <gardener@tensorflow.org> | 2019-12-10 16:00:53 -0800 |
| commit | 36a415bcc543553891af6809c5256e6e2469357d (patch) | |
| tree | 320ecbe773853b8474cfa57a2e6c119b33e82960 /mlir/test/Transforms | |
| parent | d1213ae51d2e321680a4c62c32358e3e07ff3f66 (diff) | |
| download | bcm5719-llvm-36a415bcc543553891af6809c5256e6e2469357d.tar.gz bcm5719-llvm-36a415bcc543553891af6809c5256e6e2469357d.zip | |
More affine expr simplifications for floordiv and mod
Add one more simplification for floordiv and mod affine expressions.
Examples:
(2*d0 + 1) floordiv 2 is simplified to d0
(8*d0 + 4*d1 + d2) floordiv 4 simplified to 4*d0 + d1 + d2 floordiv 4.
etc.
Similarly, (4*d1 + 1) mod 2 is simplified to 1,
(2*d0 + 8*d1) mod 8 simplified to 2*d0 mod 8.
Change getLargestKnownDivisor to return int64_t to be consistent and
to avoid casting at call sites (since the return value is used in expressions
of int64_t/index type).
Signed-off-by: Uday Bondhugula <uday@polymagelabs.com>
Closes tensorflow/mlir#202
COPYBARA_INTEGRATE_REVIEW=https://github.com/tensorflow/mlir/pull/202 from bondhugula:affine b13fcb2f1c00a39ca5434613a02408e085a80e77
PiperOrigin-RevId: 284866710
Diffstat (limited to 'mlir/test/Transforms')
| -rw-r--r-- | mlir/test/Transforms/Vectorize/compose_maps.mlir | 4 | ||||
| -rw-r--r-- | mlir/test/Transforms/unroll.mlir | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/mlir/test/Transforms/Vectorize/compose_maps.mlir b/mlir/test/Transforms/Vectorize/compose_maps.mlir index a8afbec9eff..f1826f440f2 100644 --- a/mlir/test/Transforms/Vectorize/compose_maps.mlir +++ b/mlir/test/Transforms/Vectorize/compose_maps.mlir @@ -78,7 +78,7 @@ func @simple5c() { } func @simple5d() { - // CHECK: Composed map: (d0) -> ((d0 * 4 + 24) floordiv 3) + // CHECK: Composed map: (d0) -> ((d0 * 4) floordiv 3 + 8) "test_affine_map"() { affine_map = (d0) -> (d0 - 1) } : () -> () "test_affine_map"() { affine_map = (d0) -> (d0 + 7) } : () -> () "test_affine_map"() { affine_map = (d0) -> (d0 * 4) } : () -> () @@ -128,4 +128,4 @@ func @multi_symbols() { "test_affine_map"() { affine_map = (d0)[s0] -> (d0 + s0, d0 - s0) } : () -> () "test_affine_map"() { affine_map = (d0, d1)[s0, s1] -> (d0 + 1 + s1, d1 - 1 - s0) } : () -> () return -}
\ No newline at end of file +} diff --git a/mlir/test/Transforms/unroll.mlir b/mlir/test/Transforms/unroll.mlir index 208df58c84e..da2a5e59bc9 100644 --- a/mlir/test/Transforms/unroll.mlir +++ b/mlir/test/Transforms/unroll.mlir @@ -21,7 +21,7 @@ // UNROLL-BY-4-DAG: [[MAP5:#map[0-9]+]] = (d0)[s0] -> (d0 + s0 + 1) // UNROLL-BY-4-DAG: [[MAP6:#map[0-9]+]] = (d0, d1) -> (d0 * 16 + d1) // UNROLL-BY-4-DAG: [[MAP11:#map[0-9]+]] = (d0) -> (d0) -// UNROLL-BY-4-DAG: [[MAP_TRIP_COUNT_MULTIPLE_FOUR:#map[0-9]+]] = ()[s0, s1, s2] -> (s0 + ((-s0 + s1) floordiv 4) * 4, s0 + ((-s0 + s2) floordiv 4) * 4, s0 + ((-s0 + 1024) floordiv 4) * 4) +// UNROLL-BY-4-DAG: [[MAP_TRIP_COUNT_MULTIPLE_FOUR:#map[0-9]+]] = ()[s0, s1, s2] -> (s0 + ((-s0 + s1) floordiv 4) * 4, s0 + ((-s0 + s2) floordiv 4) * 4, s0 + ((-s0) floordiv 4) * 4 + 1024) // UNROLL-FULL-LABEL: func @loop_nest_simplest() { func @loop_nest_simplest() { |

