This is a major step along the way towards the new STEA design. While a great deal of this patch is simple renaming, there are several significant changes as well. I've done my best to ensure that this patch retains the previous behavior and error-conditions, even though those are at odds with the eventual intended semantics of the `dimToLvl` mapping. Since the majority of the compiler does not yet support non-permutations, I've also added explicit assertions in places that previously had implicitly assumed it was dealing with permutations. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D151505
28 lines
1.1 KiB
MLIR
28 lines
1.1 KiB
MLIR
// RUN: mlir-opt %s --post-sparsification-rewrite="enable-runtime-library=false" \
|
|
// RUN: --sparse-tensor-codegen=create-sparse-deallocs=false \
|
|
// RUN: --canonicalize --cse | FileCheck %s -check-prefix=CHECK-NO-DEALLOC
|
|
|
|
// RUN: mlir-opt %s --post-sparsification-rewrite="enable-runtime-library=false" \
|
|
// RUN: --sparse-tensor-codegen=create-sparse-deallocs=true \
|
|
// RUN: --canonicalize --cse | FileCheck %s -check-prefix=CHECK-DEALLOC
|
|
|
|
#CSR = #sparse_tensor.encoding<{ lvlTypes = ["dense", "compressed"]}>
|
|
#CSC = #sparse_tensor.encoding<{
|
|
lvlTypes = ["dense", "compressed"],
|
|
dimToLvl = affine_map<(i,j) -> (j,i)>
|
|
}>
|
|
|
|
//
|
|
// No memref.dealloc is user-requested so
|
|
// CHECK-NO-DEALLOC-LABEL: @sparse_convert_permuted
|
|
// CHECK-NO-DEALLOC-NOT: memref.dealloc
|
|
//
|
|
// Otherwise memref.dealloc is created to free temporary sparse buffers.
|
|
// CHECK-DEALLOC-LABEL: @sparse_convert_permuted
|
|
// CHECK-DEALLOC: memref.dealloc
|
|
//
|
|
func.func @sparse_convert_permuted(%arg0: tensor<?x?xf32, #CSR>) -> tensor<?x?xf32, #CSC> {
|
|
%0 = sparse_tensor.convert %arg0 : tensor<?x?xf32, #CSR> to tensor<?x?xf32, #CSC>
|
|
return %0 : tensor<?x?xf32, #CSC>
|
|
}
|