[Mlir-commits] [mlir] f017027 - [mlir][sparse] introduce new op for querying number of stored entries
Aart Bik
llvmlistbot at llvm.org
Thu Oct 20 15:06:52 PDT 2022
Author: Aart Bik
Date: 2022-10-20T15:06:45-07:00
New Revision: f01702752af84661cc9d1cec4ec508530dd9e2ec
URL: https://github.com/llvm/llvm-project/commit/f01702752af84661cc9d1cec4ec508530dd9e2ec
DIFF: https://github.com/llvm/llvm-project/commit/f01702752af84661cc9d1cec4ec508530dd9e2ec.diff
LOG: [mlir][sparse] introduce new op for querying number of stored entries
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D136382
Added:
Modified:
mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
mlir/test/Dialect/SparseTensor/roundtrip.mlir
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
index 822fd44b306d..edd19d22732b 100644
--- a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
+++ b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
@@ -167,6 +167,25 @@ def SparseTensor_ToValuesOp : SparseTensor_Op<"values", [Pure]>,
let hasVerifier = 1;
}
+def SparseTensor_NumberOfEntriesOp : SparseTensor_Op<"number_of_entries", [Pure]>,
+ Arguments<(ins AnySparseTensor:$tensor)>,
+ Results<(outs Index:$result)> {
+ let summary = "Returns the number of entries that are stored in the tensor.";
+ let description = [{
+ Returns the number of entries that are stored in the given sparse tensor.
+ Note that this is typically the number of nonzero elements in the tensor,
+ but since explicit zeros may appear in the storage formats, the more
+ accurate nomenclature is used.
+
+ Example:
+
+ ```mlir
+ %noe = sparse_tensor.number_of_entries %tensor : tensor<64x64xf64, #CSR>
+ ```
+ }];
+ let assemblyFormat = "$tensor attr-dict `:` type($tensor)";
+}
+
def SparseTensor_ConcatenateOp : SparseTensor_Op<"concatenate", [Pure]>,
Arguments<(ins Variadic<AnyRankedTensor>:$inputs, IndexAttr:$dimension)>,
Results<(outs AnyRankedTensor:$result)> {
diff --git a/mlir/test/Dialect/SparseTensor/roundtrip.mlir b/mlir/test/Dialect/SparseTensor/roundtrip.mlir
index 8c8ab6be7037..3fed1566da14 100644
--- a/mlir/test/Dialect/SparseTensor/roundtrip.mlir
+++ b/mlir/test/Dialect/SparseTensor/roundtrip.mlir
@@ -91,6 +91,19 @@ func.func @sparse_values(%arg0: tensor<128xf64, #SparseVector>) -> memref<?xf64>
// -----
+#SparseVector = #sparse_tensor.encoding<{dimLevelType = ["compressed"]}>
+
+// CHECK-LABEL: func @sparse_noe(
+// CHECK-SAME: %[[A:.*]]: tensor<128xf64, #{{.*}}>)
+// CHECK: %[[T:.*]] = sparse_tensor.number_of_entries %[[A]] : tensor<128xf64, #{{.*}}>
+// CHECK: return %[[T]] : index
+func.func @sparse_noe(%arg0: tensor<128xf64, #SparseVector>) -> index {
+ %0 = sparse_tensor.number_of_entries %arg0 : tensor<128xf64, #SparseVector>
+ return %0 : index
+}
+
+// -----
+
#DenseMatrix = #sparse_tensor.encoding<{dimLevelType = ["dense","dense"]}>
// CHECK-LABEL: func @sparse_load(
More information about the Mlir-commits
mailing list