[PATCH] D73213: [mlir] [VectorOps] Implement vector tuple get folding
Aart Bik via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 23 14:21:46 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGed8222b2ca75: [mlir] [VectorOps] Implement vector tuple get folding (authored by aartbik).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73213/new/
https://reviews.llvm.org/D73213
Files:
mlir/include/mlir/Dialect/VectorOps/VectorOps.td
mlir/lib/Dialect/VectorOps/VectorOps.cpp
mlir/test/Dialect/VectorOps/vector-transforms.mlir
Index: mlir/test/Dialect/VectorOps/vector-transforms.mlir
===================================================================
--- mlir/test/Dialect/VectorOps/vector-transforms.mlir
+++ mlir/test/Dialect/VectorOps/vector-transforms.mlir
@@ -302,3 +302,12 @@
}
return
}
+
+// CHECK-LABEL: func @tuple_get(%arg0: vector<4xf32>, %arg1: vector<8xf32>)
+// CHECK: return %arg1
+
+func @tuple_get(%arg0: vector<4xf32>, %arg1: vector<8xf32>) -> vector<8xf32> {
+ %0 = vector.tuple %arg0, %arg1 : vector<4xf32>, vector<8xf32>
+ %1 = vector.tuple_get %0, 1 : tuple<vector<4xf32>, vector<8xf32>>
+ return %1 : vector<8xf32>
+}
Index: mlir/lib/Dialect/VectorOps/VectorOps.cpp
===================================================================
--- mlir/lib/Dialect/VectorOps/VectorOps.cpp
+++ mlir/lib/Dialect/VectorOps/VectorOps.cpp
@@ -1681,6 +1681,18 @@
return success();
}
+OpFoldResult TupleGetOp::fold(ArrayRef<Attribute> operands) {
+ // Rewrite:
+ // %t = vector.tuple .., %e_i, ..
+ // %x = vector.tuple_get %t, i
+ // into:
+ // %t = vector.tuple .., %e_i, .. // one less use
+ // %x = %e_i
+ if (auto tupleOp = dyn_cast_or_null<TupleOp>(getOperand().getDefiningOp()))
+ return tupleOp.getOperand(getIndex());
+ return {};
+}
+
//===----------------------------------------------------------------------===//
// ConstantMaskOp
//===----------------------------------------------------------------------===//
Index: mlir/include/mlir/Dialect/VectorOps/VectorOps.td
===================================================================
--- mlir/include/mlir/Dialect/VectorOps/VectorOps.td
+++ mlir/include/mlir/Dialect/VectorOps/VectorOps.td
@@ -1115,6 +1115,7 @@
}
static StringRef getIndexAttrName() { return "index"; }
}];
+ let hasFolder = 1;
}
def Vector_PrintOp :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73213.240011.patch
Type: text/x-patch
Size: 1831 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200123/4cc1fbbf/attachment.bin>
More information about the llvm-commits
mailing list