[PATCH] D73672: [MLIR][Standard] Implement constant folding for IndexCast
Stephen Neuendorffer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 5 15:02:14 PST 2020
stephenneuendorffer updated this revision to Diff 242757.
Herald added a subscriber: Joonsoo.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73672/new/
https://reviews.llvm.org/D73672
Files:
mlir/lib/Dialect/StandardOps/Ops.cpp
mlir/test/Transforms/canonicalize.mlir
Index: mlir/test/Transforms/canonicalize.mlir
===================================================================
--- mlir/test/Transforms/canonicalize.mlir
+++ mlir/test/Transforms/canonicalize.mlir
@@ -887,3 +887,15 @@
// CHECK: return %[[ARG_0]] : i16
return %12 : i16
}
+
+// CHECK-LABEL: func @index_cast_fold
+func @index_cast_fold() -> (i16, index) {
+ %c4 = constant 4 : index
+ %1 = index_cast %c4 : index to i16
+ %c4_i16 = constant 4 : i16
+ %2 = index_cast %c4_i16 : i16 to index
+ // CHECK: %[[C4_I16:.*]] = constant 4 : i16
+ // CHECK: %[[C4:.*]] = constant 4 : index
+ // CHECK: return %[[C4_I16]], %[[C4]] : i16, index
+ return %1, %2 : i16, index
+}
Index: mlir/lib/Dialect/StandardOps/Ops.cpp
===================================================================
--- mlir/lib/Dialect/StandardOps/Ops.cpp
+++ mlir/lib/Dialect/StandardOps/Ops.cpp
@@ -1592,8 +1592,13 @@
if (cast && cast.getOperand().getType() == getType()) {
return cast.getOperand();
}
+ auto value = cstOperands[0].dyn_cast_or_null<IntegerAttr>();
+ if (value) {
+ // A little hack because we go through int. Otherwise, the size
+ // of the constant might need to change.
+ return IntegerAttr::get(getType(), value.getInt());
+ }
return {};
-
}
//===----------------------------------------------------------------------===//
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73672.242757.patch
Type: text/x-patch
Size: 1355 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200205/95529f3c/attachment.bin>
More information about the llvm-commits
mailing list