From 07ecb011a759ce8641c90caee239aadcaa39e7a9 Mon Sep 17 00:00:00 2001 From: Uday Bondhugula Date: Tue, 20 Aug 2019 01:52:39 -0700 Subject: [PATCH] Fix AffineExpr::simplifyAdd bug - fix missing check while simplifying an expression with floordiv to a mod - fixes issue tensorflow/mlir#82 Signed-off-by: Uday Bondhugula Closes tensorflow/mlir#84 PiperOrigin-RevId: 264338353 --- mlir/lib/IR/AffineExpr.cpp | 2 +- mlir/test/IR/affine-map.mlir | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mlir/lib/IR/AffineExpr.cpp b/mlir/lib/IR/AffineExpr.cpp index 10aed66..2ce62e3 100644 --- a/mlir/lib/IR/AffineExpr.cpp +++ b/mlir/lib/IR/AffineExpr.cpp @@ -341,7 +341,7 @@ static AffineExpr simplifyAdd(AffineExpr lhs, AffineExpr rhs) { // Process lrhs, which is 'expr floordiv c'. AffineBinaryOpExpr lrBinOpExpr = lrhs.dyn_cast(); - if (!lrBinOpExpr) + if (!lrBinOpExpr || lrBinOpExpr.getKind() != AffineExprKind::FloorDiv) return nullptr; auto llrhs = lrBinOpExpr.getLHS(); diff --git a/mlir/test/IR/affine-map.mlir b/mlir/test/IR/affine-map.mlir index a393d77..531b26f 100644 --- a/mlir/test/IR/affine-map.mlir +++ b/mlir/test/IR/affine-map.mlir @@ -171,6 +171,9 @@ // CHECK: #map{{[0-9]+}} = (d0) -> (d0 * 16 - (d0 + 1) + 15) #map52 = (d0) -> (16*d0 + ((d0 + 1) * -1) + 15) +// CHECK: #map{{[0-9]+}} = (d0) -> (d0 - (d0 + 1)) +#map53 = (d0) -> (d0 - (d0 + 1)) + // Single identity maps are removed. // CHECK: func @f0(memref<2x4xi8, 1>) func @f0(memref<2x4xi8, #map0, 1>) @@ -337,3 +340,6 @@ func @f51(memref<1xi8, #map51>) // CHECK: func @f52(memref<1xi8, #map{{[0-9]+}}>) func @f52(memref<1xi8, #map52>) + +// CHECK: func @f53(memref<1xi8, #map{{[0-9]+}}>) +func @f53(memref<1xi8, #map53>) -- 2.7.4