mirror of
https://github.com/intel/llvm.git
synced 2026-01-24 08:30:34 +08:00
[mlir][sparse] Migrate more tests to use sparse_tensor.print (#84833)
Continuous efforts following #84249.
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
|
||||
@@ -99,20 +99,6 @@ module {
|
||||
return
|
||||
}
|
||||
|
||||
func.func @dump_mat_perm_9x4(%A: tensor<9x4xf64, #MAT_C_C_P>) {
|
||||
%c = sparse_tensor.convert %A : tensor<9x4xf64, #MAT_C_C_P> to tensor<9x4xf64>
|
||||
%cu = tensor.cast %c : tensor<9x4xf64> to tensor<*xf64>
|
||||
call @printMemrefF64(%cu) : (tensor<*xf64>) -> ()
|
||||
|
||||
%n = sparse_tensor.number_of_entries %A : tensor<9x4xf64, #MAT_C_C_P>
|
||||
vector.print %n : index
|
||||
|
||||
%1 = sparse_tensor.values %A : tensor<9x4xf64, #MAT_C_C_P> to memref<?xf64>
|
||||
call @printMemref1dF64(%1) : (memref<?xf64>) -> ()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func.func @dump_mat_dense_9x4(%A: tensor<9x4xf64>) {
|
||||
%u = tensor.cast %A : tensor<9x4xf64> to tensor<*xf64>
|
||||
call @printMemrefF64(%u) : (tensor<*xf64>) -> ()
|
||||
@@ -120,18 +106,8 @@ module {
|
||||
return
|
||||
}
|
||||
|
||||
func.func @dump_mat_annotated_dense_9x4(%A: tensor<9x4xf64, #MAT_D_D>) {
|
||||
%n = sparse_tensor.number_of_entries %A : tensor<9x4xf64, #MAT_D_D>
|
||||
vector.print %n : index
|
||||
|
||||
%1 = sparse_tensor.values %A : tensor<9x4xf64, #MAT_D_D> to memref<?xf64>
|
||||
call @printMemref1dF64(%1) : (memref<?xf64>) -> ()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Driver method to call and verify kernels.
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%m42 = arith.constant dense<
|
||||
[ [ 1.0, 0.0 ],
|
||||
[ 3.1, 0.0 ],
|
||||
@@ -163,20 +139,21 @@ module {
|
||||
%sm34cdp = sparse_tensor.convert %m34 : tensor<3x4xf64> to tensor<3x4xf64, #MAT_C_D_P>
|
||||
%sm44dcp = sparse_tensor.convert %m44 : tensor<4x4xf64> to tensor<4x4xf64, #MAT_D_C_P>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 3, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0],
|
||||
// CHECK-NEXT: [1, 0, 1, 1],
|
||||
// CHECK-NEXT: [0, 0.5, 0, 0],
|
||||
// CHECK-NEXT: [1, 5, 2, 0],
|
||||
// CHECK-NEXT: [0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [0, 3.5, 0, 0],
|
||||
// CHECK-NEXT: [1, 5, 2, 0],
|
||||
// CHECK-NEXT: [1, 0.5, 0, 0]]
|
||||
// CHECK-NEXT: 18
|
||||
// CHECK: [1, 1, 1, 1, 1, 2, 0.5, 5, 3.5, 5, 0.5, 3, 1, 2, 1.5, 2, 1, 1
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 9, 4 )
|
||||
// CHECK-NEXT: lvl = ( 4, 9 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 4
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 11, 16, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 7, 8, 1, 3, 4, 6, 7, 8, 0, 2, 4, 5, 7, 2, 5
|
||||
// CHECK-NEXT: values : ( 1, 1, 1, 1, 1, 2, 0.5, 5, 3.5, 5, 0.5, 3, 1, 2, 1.5, 2, 1, 1
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%4 = call @concat_sparse_sparse_perm(%sm24ccp, %sm34cd, %sm44dc)
|
||||
: (tensor<2x4xf64, #MAT_C_C_P>, tensor<3x4xf64, #MAT_C_D>, tensor<4x4xf64, #MAT_D_C>) -> tensor<9x4xf64, #MAT_C_C_P>
|
||||
call @dump_mat_perm_9x4(%4) : (tensor<9x4xf64, #MAT_C_C_P>) -> ()
|
||||
sparse_tensor.print %4 : tensor<9x4xf64, #MAT_C_C_P>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 3, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0],
|
||||
@@ -191,20 +168,21 @@ module {
|
||||
: (tensor<2x4xf64, #MAT_C_C_P>, tensor<3x4xf64, #MAT_C_D_P>, tensor<4x4xf64, #MAT_D_C>) -> tensor<9x4xf64>
|
||||
call @dump_mat_dense_9x4(%5) : (tensor<9x4xf64>) -> ()
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 3, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0],
|
||||
// CHECK-NEXT: [1, 0, 1, 1],
|
||||
// CHECK-NEXT: [0, 0.5, 0, 0],
|
||||
// CHECK-NEXT: [1, 5, 2, 0],
|
||||
// CHECK-NEXT: [0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [0, 3.5, 0, 0],
|
||||
// CHECK-NEXT: [1, 5, 2, 0],
|
||||
// CHECK-NEXT: [1, 0.5, 0, 0]]
|
||||
// CHECK-NEXT: 18
|
||||
// CHECK: [1, 3, 2, 1, 1, 1, 0.5, 1, 5, 2, 1.5, 1, 3.5, 1, 5, 2, 1, 0.5
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 9, 4 )
|
||||
// CHECK-NEXT: lvl = ( 9, 4 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 9
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8
|
||||
// CHECK-NEXT: pos[1] : ( 0, 2, 3, 6, 7, 10, 12, 13, 16, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 1, 0, 2, 3, 1, 0, 1, 2, 2, 3, 1, 0, 1, 2, 0, 1
|
||||
// CHECK-NEXT: values : ( 1, 3, 2, 1, 1, 1, 0.5, 1, 5, 2, 1.5, 1, 3.5, 1, 5, 2, 1, 0.5
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%6 = call @concat_mix_sparse_perm(%m24, %sm34cdp, %sm44dc)
|
||||
: (tensor<2x4xf64>, tensor<3x4xf64, #MAT_C_D_P>, tensor<4x4xf64, #MAT_D_C>) -> tensor<9x4xf64, #MAT_C_C>
|
||||
call @dump_mat_9x4(%6) : (tensor<9x4xf64, #MAT_C_C>) -> ()
|
||||
sparse_tensor.print %6 : tensor<9x4xf64, #MAT_C_C>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 3, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0],
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
|
||||
@@ -82,20 +82,6 @@ module {
|
||||
return %0 : tensor<4x9xf64>
|
||||
}
|
||||
|
||||
func.func @dump_mat_4x9(%A: tensor<4x9xf64, #MAT_C_C>) {
|
||||
%c = sparse_tensor.convert %A : tensor<4x9xf64, #MAT_C_C> to tensor<4x9xf64>
|
||||
%cu = tensor.cast %c : tensor<4x9xf64> to tensor<*xf64>
|
||||
call @printMemrefF64(%cu) : (tensor<*xf64>) -> ()
|
||||
|
||||
%n = sparse_tensor.number_of_entries %A : tensor<4x9xf64, #MAT_C_C>
|
||||
vector.print %n : index
|
||||
|
||||
%1 = sparse_tensor.values %A : tensor<4x9xf64, #MAT_C_C> to memref<?xf64>
|
||||
call @printMemref1dF64(%1) : (memref<?xf64>) -> ()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func.func @dump_mat_dense_4x9(%A: tensor<4x9xf64>) {
|
||||
%1 = tensor.cast %A : tensor<4x9xf64> to tensor<*xf64>
|
||||
call @printMemrefF64(%1) : (tensor<*xf64>) -> ()
|
||||
@@ -104,7 +90,7 @@ module {
|
||||
}
|
||||
|
||||
// Driver method to call and verify kernels.
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%m42 = arith.constant dense<
|
||||
[ [ 1.0, 0.0 ],
|
||||
[ 3.1, 0.0 ],
|
||||
@@ -125,15 +111,21 @@ module {
|
||||
%sm43cd = sparse_tensor.convert %m43 : tensor<4x3xf64> to tensor<4x3xf64, #MAT_C_D>
|
||||
%sm44dc = sparse_tensor.convert %m44 : tensor<4x4xf64> to tensor<4x4xf64, #MAT_D_C>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0, 1, 1, 5, 2, 0],
|
||||
// CHECK-NEXT: [0, 0, 5, 2, 0, 1, 0.5, 0, 0]]
|
||||
// CHECK-NEXT: 18
|
||||
// CHECK: [1, 1, 1, 1.5, 1, 3.1, 1, 0.5, 3.5, 2, 1, 1, 5, 2, 5, 2, 1, 0.5
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 4, 9 )
|
||||
// CHECK-NEXT: lvl = ( 4, 9 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 4
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 9, 14, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 7, 8, 0, 2, 4, 6, 1, 4, 5, 6, 7, 2, 3, 5, 6
|
||||
// CHECK-NEXT: values : ( 1, 1, 1, 1.5, 1, 3.1, 1, 0.5, 3.5, 2, 1, 1, 5, 2, 5, 2, 1, 0.5
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%8 = call @concat_sparse_sparse_dim1(%sm42cc, %sm43cd, %sm44dc)
|
||||
: (tensor<4x2xf64, #MAT_C_C>, tensor<4x3xf64, #MAT_C_D>, tensor<4x4xf64, #MAT_D_C>) -> tensor<4x9xf64, #MAT_C_C>
|
||||
call @dump_mat_4x9(%8) : (tensor<4x9xf64, #MAT_C_C>) -> ()
|
||||
sparse_tensor.print %8 : tensor<4x9xf64, #MAT_C_C>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
@@ -143,15 +135,21 @@ module {
|
||||
: (tensor<4x2xf64, #MAT_C_C>, tensor<4x3xf64, #MAT_C_D>, tensor<4x4xf64, #MAT_D_C>) -> tensor<4x9xf64>
|
||||
call @dump_mat_dense_4x9(%9) : (tensor<4x9xf64>) -> ()
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0, 1, 1, 5, 2, 0],
|
||||
// CHECK-NEXT: [0, 0, 5, 2, 0, 1, 0.5, 0, 0]]
|
||||
// CHECK-NEXT: 18
|
||||
// CHECK: [1, 1, 1, 1.5, 1, 3.1, 1, 0.5, 3.5, 2, 1, 1, 5, 2, 5, 2, 1, 0.5
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 4, 9 )
|
||||
// CHECK-NEXT: lvl = ( 4, 9 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 4
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 9, 14, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 7, 8, 0, 2, 4, 6, 1, 4, 5, 6, 7, 2, 3, 5, 6
|
||||
// CHECK-NEXT: values : ( 1, 1, 1, 1.5, 1, 3.1, 1, 0.5, 3.5, 2, 1, 1, 5, 2, 5, 2, 1, 0.5
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%10 = call @concat_mix_sparse_dim1(%m42, %sm43cd, %sm44dc)
|
||||
: (tensor<4x2xf64>, tensor<4x3xf64, #MAT_C_D>, tensor<4x4xf64, #MAT_D_C>) -> tensor<4x9xf64, #MAT_C_C>
|
||||
call @dump_mat_4x9(%10) : (tensor<4x9xf64, #MAT_C_C>) -> ()
|
||||
sparse_tensor.print %10 : tensor<4x9xf64, #MAT_C_C>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
|
||||
@@ -85,34 +85,6 @@ module {
|
||||
return %0 : tensor<4x9xf64>
|
||||
}
|
||||
|
||||
func.func @dump_mat_4x9(%A: tensor<4x9xf64, #MAT_C_C>) {
|
||||
%c = sparse_tensor.convert %A : tensor<4x9xf64, #MAT_C_C> to tensor<4x9xf64>
|
||||
%cu = tensor.cast %c : tensor<4x9xf64> to tensor<*xf64>
|
||||
call @printMemrefF64(%cu) : (tensor<*xf64>) -> ()
|
||||
|
||||
%n = sparse_tensor.number_of_entries %A : tensor<4x9xf64, #MAT_C_C>
|
||||
vector.print %n : index
|
||||
|
||||
%1 = sparse_tensor.values %A : tensor<4x9xf64, #MAT_C_C> to memref<?xf64>
|
||||
call @printMemref1dF64(%1) : (memref<?xf64>) -> ()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func.func @dump_mat_perm_4x9(%A: tensor<4x9xf64, #MAT_C_C_P>) {
|
||||
%c = sparse_tensor.convert %A : tensor<4x9xf64, #MAT_C_C_P> to tensor<4x9xf64>
|
||||
%cu = tensor.cast %c : tensor<4x9xf64> to tensor<*xf64>
|
||||
call @printMemrefF64(%cu) : (tensor<*xf64>) -> ()
|
||||
|
||||
%n = sparse_tensor.number_of_entries %A : tensor<4x9xf64, #MAT_C_C_P>
|
||||
vector.print %n : index
|
||||
|
||||
%1 = sparse_tensor.values %A : tensor<4x9xf64, #MAT_C_C_P> to memref<?xf64>
|
||||
call @printMemref1dF64(%1) : (memref<?xf64>) -> ()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func.func @dump_mat_dense_4x9(%A: tensor<4x9xf64>) {
|
||||
%1 = tensor.cast %A : tensor<4x9xf64> to tensor<*xf64>
|
||||
call @printMemrefF64(%1) : (tensor<*xf64>) -> ()
|
||||
@@ -121,7 +93,7 @@ module {
|
||||
}
|
||||
|
||||
// Driver method to call and verify kernels.
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%m42 = arith.constant dense<
|
||||
[ [ 1.0, 0.0 ],
|
||||
[ 3.1, 0.0 ],
|
||||
@@ -153,15 +125,21 @@ module {
|
||||
%sm43cdp = sparse_tensor.convert %m43 : tensor<4x3xf64> to tensor<4x3xf64, #MAT_C_D_P>
|
||||
%sm44dcp = sparse_tensor.convert %m44 : tensor<4x4xf64> to tensor<4x4xf64, #MAT_D_C_P>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0, 1, 1, 5, 2, 0],
|
||||
// CHECK-NEXT: [0, 0, 5, 2, 0, 1, 0.5, 0, 0]]
|
||||
// CHECK-NEXT: 18
|
||||
// CHECK: [1, 3.1, 2, 1, 1, 5, 2, 1, 0.5, 1, 1, 1, 3.5, 5, 0.5, 1.5, 2, 1
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 4, 9 )
|
||||
// CHECK-NEXT: lvl = ( 9, 4 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 9
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8
|
||||
// CHECK-NEXT: pos[1] : ( 0, 2, 3, 6, 7, 10, 12, 15, 17, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 0, 1, 3, 3, 0, 1, 2, 2, 3, 1, 2, 3, 0, 2, 0
|
||||
// CHECK-NEXT: values : ( 1, 3.1, 2, 1, 1, 5, 2, 1, 0.5, 1, 1, 1, 3.5, 5, 0.5, 1.5, 2, 1
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%12 = call @concat_sparse_sparse_perm_dim1(%sm42ccp, %sm43cd, %sm44dc)
|
||||
: (tensor<4x2xf64, #MAT_C_C_P>, tensor<4x3xf64, #MAT_C_D>, tensor<4x4xf64, #MAT_D_C>) -> tensor<4x9xf64, #MAT_C_C_P>
|
||||
call @dump_mat_perm_4x9(%12) : (tensor<4x9xf64, #MAT_C_C_P>) -> ()
|
||||
sparse_tensor.print %12 : tensor<4x9xf64, #MAT_C_C_P>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
@@ -171,15 +149,21 @@ module {
|
||||
: (tensor<4x2xf64, #MAT_C_C_P>, tensor<4x3xf64, #MAT_C_D_P>, tensor<4x4xf64, #MAT_D_C>) -> tensor<4x9xf64>
|
||||
call @dump_mat_dense_4x9(%13) : (tensor<4x9xf64>) -> ()
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
// CHECK-NEXT: [0, 2, 0, 0, 1, 1, 5, 2, 0],
|
||||
// CHECK-NEXT: [0, 0, 5, 2, 0, 1, 0.5, 0, 0]]
|
||||
// CHECK-NEXT: 18
|
||||
// CHECK: [1, 1, 1, 1.5, 1, 3.1, 1, 0.5, 3.5, 2, 1, 1, 5, 2, 5, 2, 1, 0.5
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 4, 9 )
|
||||
// CHECK-NEXT: lvl = ( 4, 9 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 4
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 9, 14, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 7, 8, 0, 2, 4, 6, 1, 4, 5, 6, 7, 2, 3, 5, 6
|
||||
// CHECK-NEXT: values : ( 1, 1, 1, 1.5, 1, 3.1, 1, 0.5, 3.5, 2, 1, 1, 5, 2, 5, 2, 1, 0.5
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%14 = call @concat_mix_sparse_perm_dim1(%m42, %sm43cdp, %sm44dc)
|
||||
: (tensor<4x2xf64>, tensor<4x3xf64, #MAT_C_D_P>, tensor<4x4xf64, #MAT_D_C>) -> tensor<4x9xf64, #MAT_C_C>
|
||||
call @dump_mat_4x9(%14) : (tensor<4x9xf64, #MAT_C_C>) -> ()
|
||||
sparse_tensor.print %14 : tensor<4x9xf64, #MAT_C_C>
|
||||
|
||||
// CHECK: {{\[}}[1, 0, 1, 0, 1, 0, 0, 1.5, 1],
|
||||
// CHECK-NEXT: [3.1, 0, 1, 0, 0.5, 0, 3.5, 0, 0],
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -85,7 +85,7 @@ module {
|
||||
return %0 : tensor<6x6xi32, #CSC>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%i0 = arith.constant 0 : i32
|
||||
|
||||
@@ -141,7 +141,6 @@ module {
|
||||
: (tensor<8x8xi32, #CSC>,
|
||||
tensor<3x3xi32, #CSC>) -> tensor<6x6xi32, #CSC>
|
||||
|
||||
|
||||
// Verify the output.
|
||||
//
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
@@ -156,64 +155,62 @@ module {
|
||||
vector.print %v : vector<6x6xi32>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_DCSR = sparse_tensor.convert %2
|
||||
: tensor<6x6xi32, #DCSR> to tensor<6x6xi32>
|
||||
%v2 = vector.transfer_read %all_sparse_DCSR[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v2 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, 0, -1, -6, -1, 6, -1, 0, 1, 0, 1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 3, 6, -3, -6, 2, -1, 3, 0, -3, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %2 : tensor<6x6xi32, #DCSR>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_CD = sparse_tensor.convert %4
|
||||
: tensor<6x6xi32, #CDR> to tensor<6x6xi32>
|
||||
%v4 = vector.transfer_read %all_sparse_CD[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v4 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, 0, -1, -6, -1, 6, -1, 0, 1, 0, 1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 3, 6, -3, -6, 2, -1, 3, 0, -3, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %3 : tensor<6x6xi32, #CSR>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_CSR = sparse_tensor.convert %3
|
||||
: tensor<6x6xi32, #CSR> to tensor<6x6xi32>
|
||||
%v3 = vector.transfer_read %all_sparse_CSR[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v3 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, 0, -1, -6, -1, 6, -1, 0, 1, 0, 1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 3, 6, -3, -6, 2, -1, 3, 0, -3, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %4 : tensor<6x6xi32, #CDR>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_CSC = sparse_tensor.convert %5
|
||||
: tensor<6x6xi32, #CSC> to tensor<6x6xi32>
|
||||
%v5 = vector.transfer_read %all_sparse_CSC[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v5 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, -1, 0, -1, 0, 2, 0, 0, -1, 0, 0, -1, -1, 1, 1, 0, 3, 3, -6, 0, 0, 0, 6, 0, -1, 1, 0, 0, -3, -3, 6, 0, 0, 0, -6, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %5 : tensor<6x6xi32, #CSC>
|
||||
|
||||
// Release the resources.
|
||||
bufferization.dealloc_tensor %sparse_input_DCSR : tensor<8x8xi32, #DCSR>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -84,7 +84,7 @@ module {
|
||||
}
|
||||
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
// Setup two sparse vectors.
|
||||
%d1 = arith.constant sparse<
|
||||
[ [0, 0], [1, 1], [2, 2], [2, 3], [4, 5] ],
|
||||
|
||||
@@ -90,28 +90,38 @@ module {
|
||||
// ending at index (3,3,2)) with a “DCSR-flavored” along (j,k) with
|
||||
// dense “fibers” in the i-dim, we end up with 8 stored entries.
|
||||
//
|
||||
// CHECK: 8
|
||||
// CHECK-NEXT: ( 1, 2, 3, 4, 5, 6, 7, 8 )
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 8
|
||||
// CHECK-NEXT: dim = ( 4, 4, 4 )
|
||||
// CHECK-NEXT: lvl = ( 4, 4, 4 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 2
|
||||
// CHECK-NEXT: crd[0] : ( 0, 3
|
||||
// CHECK-NEXT: pos[1] : ( 0, 1, 2
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2
|
||||
// CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7, 8
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%na = sparse_tensor.number_of_entries %a : tensor<4x4x4xi32, #Sparse1>
|
||||
vector.print %na : index
|
||||
%ma = sparse_tensor.values %a: tensor<4x4x4xi32, #Sparse1> to memref<?xi32>
|
||||
%va = vector.transfer_read %ma[%c0], %i0: memref<?xi32>, vector<8xi32>
|
||||
vector.print %va : vector<8xi32>
|
||||
sparse_tensor.print %a : tensor<4x4x4xi32, #Sparse1>
|
||||
|
||||
//
|
||||
// If we store full 2x2x2 3-D blocks in the original index order
|
||||
// in a compressed fashion, we end up with 4 blocks to incorporate
|
||||
// all the nonzeros, and thus 32 stored entries.
|
||||
//
|
||||
// CHECK: 32
|
||||
// CHECK-NEXT: ( 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 6, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0 )
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 32
|
||||
// CHECK-NEXT: dim = ( 4, 4, 4 )
|
||||
// CHECK-NEXT: lvl = ( 2, 2, 2, 2, 2, 2 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 2
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1
|
||||
// CHECK-NEXT: pos[1] : ( 0, 2, 4
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 0, 1
|
||||
// CHECK-NEXT: pos[2] : ( 0, 1, 2, 3, 4
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 0, 1
|
||||
// CHECK-NEXT: values : ( 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 6, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%nb = sparse_tensor.number_of_entries %b : tensor<4x4x4xi32, #Sparse2>
|
||||
vector.print %nb : index
|
||||
%mb = sparse_tensor.values %b: tensor<4x4x4xi32, #Sparse2> to memref<?xi32>
|
||||
%vb = vector.transfer_read %mb[%c0], %i0: memref<?xi32>, vector<32xi32>
|
||||
vector.print %vb : vector<32xi32>
|
||||
sparse_tensor.print %b : tensor<4x4x4xi32, #Sparse2>
|
||||
|
||||
// Release the resources.
|
||||
bufferization.dealloc_tensor %a : tensor<4x4x4xi32, #Sparse1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -178,7 +178,7 @@ module {
|
||||
// Main driver that converts a dense tensor into a sparse tensor
|
||||
// and then calls the sparse casting kernel.
|
||||
//
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%z = arith.constant 0 : index
|
||||
%b = arith.constant 0 : i8
|
||||
%i = arith.constant 0 : i32
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -96,7 +96,7 @@ module {
|
||||
// Main driver that constructs matrix and calls the sparse kernel to perform
|
||||
// element-wise comparison.
|
||||
//
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%d0 = arith.constant 0 : i8
|
||||
%c0 = arith.constant 0 : index
|
||||
|
||||
@@ -124,33 +124,44 @@ module {
|
||||
: (tensor<4x4xf64, #DCSR>, tensor<4x4xf64, #DCSR>) -> tensor<4x4xi8, #DCSR>
|
||||
|
||||
//
|
||||
// All should have the same result.
|
||||
// All should have the same boolean values.
|
||||
//
|
||||
// CHECK: ( ( 0, 1, 0, 1 ), ( 1, 0, 0, 0 ), ( 1, 0, 0, 1 ), ( 0, 0, 0, 0 ) )
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 16
|
||||
// CHECK-NEXT: dim = ( 4, 4 )
|
||||
// CHECK-NEXT: lvl = ( 4, 4 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 4
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
|
||||
// CHECK-NEXT: pos[1] : ( 0, 4, 8, 12, 16
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3
|
||||
// CHECK-NEXT: values : ( 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 11
|
||||
// CHECK-NEXT: dim = ( 4, 4 )
|
||||
// CHECK-NEXT: lvl = ( 4, 4 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 4
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
|
||||
// CHECK-NEXT: pos[1] : ( 0, 3, 5, 9, 11
|
||||
// CHECK-NEXT: crd[1] : ( 1, 2, 3, 0, 1, 0, 1, 2, 3, 0, 1
|
||||
// CHECK-NEXT: values : ( 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
// CHECK-COUNT-3: ( ( 0, 1, 0, 1 ), ( 1, 0, 0, 0 ), ( 1, 0, 0, 1 ), ( 0, 0, 0, 0 ) )
|
||||
%v = vector.transfer_read %all_dn_out[%c0, %c0], %d0
|
||||
: tensor<4x4xi8>, vector<4x4xi8>
|
||||
vector.print %v : vector<4x4xi8>
|
||||
|
||||
%lhs_sp_ret = sparse_tensor.convert %lhs_sp_out
|
||||
: tensor<4x4xi8, #DCSR> to tensor<4x4xi8>
|
||||
%v1 = vector.transfer_read %lhs_sp_ret[%c0, %c0], %d0
|
||||
: tensor<4x4xi8>, vector<4x4xi8>
|
||||
vector.print %v1 : vector<4x4xi8>
|
||||
|
||||
%rhs_sp_ret = sparse_tensor.convert %all_sp_out
|
||||
: tensor<4x4xi8, #DCSR> to tensor<4x4xi8>
|
||||
%v2 = vector.transfer_read %rhs_sp_ret[%c0, %c0], %d0
|
||||
: tensor<4x4xi8>, vector<4x4xi8>
|
||||
vector.print %v2 : vector<4x4xi8>
|
||||
|
||||
sparse_tensor.print %lhs_sp_out : tensor<4x4xi8, #DCSR>
|
||||
sparse_tensor.print %all_sp_out : tensor<4x4xi8, #DCSR>
|
||||
|
||||
bufferization.dealloc_tensor %lhs_sp : tensor<4x4xf64, #DCSR>
|
||||
bufferization.dealloc_tensor %rhs_sp : tensor<4x4xf64, #DCSR>
|
||||
bufferization.dealloc_tensor %all_dn_out : tensor<4x4xi8>
|
||||
bufferization.dealloc_tensor %lhs_sp_out : tensor<4x4xi8, #DCSR>
|
||||
bufferization.dealloc_tensor %all_sp_out : tensor<4x4xi8, #DCSR>
|
||||
bufferization.dealloc_tensor %lhs_sp_ret : tensor<4x4xi8>
|
||||
bufferization.dealloc_tensor %rhs_sp_ret : tensor<4x4xi8>
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -38,7 +38,7 @@ module {
|
||||
//
|
||||
// Main driver.
|
||||
//
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%c1 = arith.constant 1 : index
|
||||
%c2 = arith.constant 2 : index
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -144,7 +144,7 @@ module {
|
||||
//
|
||||
// Main driver.
|
||||
//
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
//
|
||||
// Initialize a 3-dim dense tensor.
|
||||
//
|
||||
@@ -166,6 +166,7 @@ module {
|
||||
%s4 = sparse_tensor.convert %src : tensor<2x2xf64> to tensor<2x2xf64, #SortedCOO>
|
||||
%s5 = sparse_tensor.convert %src : tensor<2x2xf64> to tensor<2x2xf64, #SortedCOOPerm>
|
||||
%s6 = sparse_tensor.convert %src3d : tensor<7x8x9xf64> to tensor<7x8x9xf64, #CCCPerm>
|
||||
|
||||
// CHECK: 0
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 1
|
||||
@@ -173,6 +174,7 @@ module {
|
||||
// CHECK-NEXT: 6
|
||||
// CHECK-NEXT: 5
|
||||
call @foreach_print_const() : () -> ()
|
||||
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 1
|
||||
@@ -186,6 +188,7 @@ module {
|
||||
// CHECK-NEXT: 1
|
||||
// CHECK-NEXT: 6
|
||||
call @foreach_print_dense(%src) : (tensor<2x2xf64>) -> ()
|
||||
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 1
|
||||
@@ -199,6 +202,7 @@ module {
|
||||
// CHECK-NEXT: 1
|
||||
// CHECK-NEXT: 6
|
||||
call @foreach_print_1(%s1) : (tensor<2x2xf64, #Row>) -> ()
|
||||
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 1
|
||||
@@ -212,6 +216,7 @@ module {
|
||||
// CHECK-NEXT: 1
|
||||
// CHECK-NEXT: 6
|
||||
call @foreach_print_2(%s2) : (tensor<2x2xf64, #CSR>) -> ()
|
||||
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 1
|
||||
@@ -225,6 +230,7 @@ module {
|
||||
// CHECK-NEXT: 1
|
||||
// CHECK-NEXT: 6
|
||||
call @foreach_print_3(%s3) : (tensor<2x2xf64, #DCSC>) -> ()
|
||||
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 1
|
||||
@@ -238,6 +244,7 @@ module {
|
||||
// CHECK-NEXT: 1
|
||||
// CHECK-NEXT: 6
|
||||
call @foreach_print_4(%s4) : (tensor<2x2xf64, #SortedCOO>) -> ()
|
||||
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 0
|
||||
// CHECK-NEXT: 1
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -115,7 +115,7 @@ module {
|
||||
//
|
||||
// Main driver.
|
||||
//
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%df = arith.constant -1.0 : f64
|
||||
|
||||
@@ -157,69 +157,95 @@ module {
|
||||
//
|
||||
// CHECK: ( 1.1, 0, 1.3, 0, 2.1, 0, 2.3, 0, 3.1, 0, 3.3, 0 )
|
||||
// CHECK-NEXT: ( 1.1, 0, 1.3, 0, 2.1, 0, 2.3, 0, 3.1, 0, 3.3, 0 )
|
||||
// CHECK-NEXT: ( 1.1, 1.3, 2.1, 2.3, 3.1, 3.3
|
||||
// CHECK-NEXT: ( 1.1, 1.3, 2.1, 2.3, 3.1, 3.3
|
||||
// CHECK-NEXT: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
// CHECK-NEXT: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
// CHECK-NEXT: ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47
|
||||
// CHECK-NEXT: ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47
|
||||
// CHECK-NEXT: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
// CHECK-NEXT: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
// CHECK-NEXT: ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47, 49
|
||||
// CHECK-NEXT: ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47, 49
|
||||
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 6
|
||||
// CHECK-NEXT: dim = ( 12 )
|
||||
// CHECK-NEXT: lvl = ( 12 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 2, 4, 6, 8, 10
|
||||
// CHECK-NEXT: values : ( 1.1, 1.3, 2.1, 2.3, 3.1, 3.3
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 6
|
||||
// CHECK-NEXT: dim = ( 12 )
|
||||
// CHECK-NEXT: lvl = ( 12 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 2, 4, 6, 8, 10
|
||||
// CHECK-NEXT: values : ( 1.1, 1.3, 2.1, 2.3, 3.1, 3.3
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
// CHECK: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
// CHECK-NEXT: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 15
|
||||
// CHECK-NEXT: dim = ( 6, 10 )
|
||||
// CHECK-NEXT: lvl = ( 6, 10 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 2, 4
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 10, 15
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8
|
||||
// CHECK-NEXT: values : ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47, 49
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 15
|
||||
// CHECK-NEXT: dim = ( 6, 10 )
|
||||
// CHECK-NEXT: lvl = ( 6, 10 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 2, 4
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 10, 15
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8
|
||||
// CHECK-NEXT: values : ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47, 49
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
// CHECK: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
// CHECK-NEXT: ( ( 1, 0, 3, 0, 5, 0, 7, 0, 9, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 21, 0, 23, 0, 25, 0, 27, 0, 29, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 41, 0, 43, 0, 45, 0, 47, 0, 49, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) )
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 15
|
||||
// CHECK-NEXT: dim = ( 6, 10 )
|
||||
// CHECK-NEXT: lvl = ( 6, 10 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 2, 4
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 10, 15
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8
|
||||
// CHECK-NEXT: values : ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47, 49
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 15
|
||||
// CHECK-NEXT: dim = ( 6, 10 )
|
||||
// CHECK-NEXT: lvl = ( 6, 10 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 2, 4
|
||||
// CHECK-NEXT: pos[1] : ( 0, 5, 10, 15
|
||||
// CHECK-NEXT: crd[1] : ( 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8
|
||||
// CHECK-NEXT: values : ( 1, 3, 5, 7, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47, 49
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
%v0 = vector.transfer_read %collapse0[%c0], %df: tensor<12xf64>, vector<12xf64>
|
||||
vector.print %v0 : vector<12xf64>
|
||||
%v1 = vector.transfer_read %collapse1[%c0], %df: tensor<12xf64>, vector<12xf64>
|
||||
vector.print %v1 : vector<12xf64>
|
||||
%b2 = sparse_tensor.values %collapse2 : tensor<12xf64, #SparseVector> to memref<?xf64>
|
||||
%v2 = vector.transfer_read %b2[%c0], %df: memref<?xf64>, vector<12xf64>
|
||||
vector.print %v2 : vector<12xf64>
|
||||
%b3 = sparse_tensor.values %collapse3 : tensor<12xf64, #SparseVector> to memref<?xf64>
|
||||
%v3 = vector.transfer_read %b3[%c0], %df: memref<?xf64>, vector<12xf64>
|
||||
vector.print %v3 : vector<12xf64>
|
||||
sparse_tensor.print %collapse2 : tensor<12xf64, #SparseVector>
|
||||
sparse_tensor.print %collapse3 : tensor<12xf64, #SparseVector>
|
||||
|
||||
%v4 = vector.transfer_read %collapse4[%c0, %c0], %df: tensor<6x10xf64>, vector<6x10xf64>
|
||||
vector.print %v4 : vector<6x10xf64>
|
||||
%v5 = vector.transfer_read %collapse5[%c0, %c0], %df: tensor<6x10xf64>, vector<6x10xf64>
|
||||
vector.print %v5 : vector<6x10xf64>
|
||||
%b6 = sparse_tensor.values %collapse6 : tensor<6x10xf64, #SparseMatrix> to memref<?xf64>
|
||||
%v6 = vector.transfer_read %b6[%c0], %df: memref<?xf64>, vector<60xf64>
|
||||
vector.print %v6 : vector<60xf64>
|
||||
%b7 = sparse_tensor.values %collapse7 : tensor<6x10xf64, #SparseMatrix> to memref<?xf64>
|
||||
%v7 = vector.transfer_read %b7[%c0], %df: memref<?xf64>, vector<60xf64>
|
||||
vector.print %v7 : vector<60xf64>
|
||||
sparse_tensor.print %collapse6 : tensor<6x10xf64, #SparseMatrix>
|
||||
sparse_tensor.print %collapse7 : tensor<6x10xf64, #SparseMatrix>
|
||||
|
||||
%v8 = vector.transfer_read %collapse8[%c0, %c0], %df: tensor<?x?xf64>, vector<6x10xf64>
|
||||
vector.print %v8 : vector<6x10xf64>
|
||||
%v9 = vector.transfer_read %collapse9[%c0, %c0], %df: tensor<?x?xf64>, vector<6x10xf64>
|
||||
vector.print %v9 : vector<6x10xf64>
|
||||
%b10 = sparse_tensor.values %collapse10 : tensor<?x?xf64, #SparseMatrix> to memref<?xf64>
|
||||
%v10 = vector.transfer_read %b10[%c0], %df: memref<?xf64>, vector<60xf64>
|
||||
vector.print %v10 : vector<60xf64>
|
||||
%b11 = sparse_tensor.values %collapse11 : tensor<?x?xf64, #SparseMatrix> to memref<?xf64>
|
||||
%v11 = vector.transfer_read %b11[%c0], %df: memref<?xf64>, vector<60xf64>
|
||||
vector.print %v11 : vector<60xf64>
|
||||
sparse_tensor.print %collapse10 : tensor<?x?xf64, #SparseMatrix>
|
||||
sparse_tensor.print %collapse11 : tensor<?x?xf64, #SparseMatrix>
|
||||
|
||||
// Release sparse resources.
|
||||
bufferization.dealloc_tensor %sm : tensor<3x4xf64, #SparseMatrix>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -38,7 +38,7 @@
|
||||
// Integration tests for conversions from sparse constants to sparse tensors.
|
||||
//
|
||||
module {
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%c1 = arith.constant 1 : index
|
||||
%c2 = arith.constant 2 : index
|
||||
@@ -51,20 +51,19 @@ module {
|
||||
// Convert the tensor in COO format to a sparse tensor with annotation #Tensor1.
|
||||
%ts = sparse_tensor.convert %ti : tensor<10x8xf64> to tensor<10x8xf64, #Tensor1>
|
||||
|
||||
// CHECK: ( 0, 1, 4, 5, 6, 9 )
|
||||
%i0 = sparse_tensor.coordinates %ts { level = 0 : index } : tensor<10x8xf64, #Tensor1> to memref<?xindex>
|
||||
%i0r = vector.transfer_read %i0[%c0], %c0: memref<?xindex>, vector<6xindex>
|
||||
vector.print %i0r : vector<6xindex>
|
||||
|
||||
// CHECK: ( 0, 7, 2, 2, 3, 4, 6, 7 )
|
||||
%i1 = sparse_tensor.coordinates %ts { level = 1 : index } : tensor<10x8xf64, #Tensor1> to memref<?xindex>
|
||||
%i1r = vector.transfer_read %i1[%c0], %c0: memref<?xindex>, vector<8xindex>
|
||||
vector.print %i1r : vector<8xindex>
|
||||
|
||||
// CHECK: ( 1, 2, 3, 4, 5, 6, 7, 8 )
|
||||
%v = sparse_tensor.values %ts : tensor<10x8xf64, #Tensor1> to memref<?xf64>
|
||||
%vr = vector.transfer_read %v[%c0], %d0: memref<?xf64>, vector<8xf64>
|
||||
vector.print %vr : vector<8xf64>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 8
|
||||
// CHECK-NEXT: dim = ( 10, 8 )
|
||||
// CHECK-NEXT: lvl = ( 10, 8 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 4, 5, 6, 9
|
||||
// CHECK-NEXT: pos[1] : ( 0, 2, 3, 4, 5, 7, 8
|
||||
// CHECK-NEXT: crd[1] : ( 0, 7, 2, 2, 3, 4, 6, 7
|
||||
// CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7, 8
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %ts : tensor<10x8xf64, #Tensor1>
|
||||
|
||||
// Release the resources.
|
||||
bufferization.dealloc_tensor %ts : tensor<10x8xf64, #Tensor1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -79,7 +79,7 @@ func.func @conv_1d_nwc_wcf_CDC(%arg0: tensor<?x?x?xf32, #CDC>, %arg1: tensor<?x?
|
||||
return %ret : tensor<?x?x?xf32, #CDC>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%c1 = arith.constant 1 : index
|
||||
%c3 = arith.constant 3 : index
|
||||
@@ -111,23 +111,35 @@ func.func @entry() {
|
||||
: tensor<?x?x?xf32>, vector<3x6x1xf32>
|
||||
vector.print %dense_v : vector<3x6x1xf32>
|
||||
|
||||
// CHECK: ( ( ( 12 ), ( 28 ), ( 28 ), ( 28 ), ( 12 ), ( 12 ) ),
|
||||
// CHECK-SAME: ( ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ) ),
|
||||
// CHECK-SAME: ( ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ) ) )
|
||||
%1 = sparse_tensor.convert %CCC_ret
|
||||
: tensor<?x?x?xf32, #CCC> to tensor<?x?x?xf32>
|
||||
%v1 = vector.transfer_read %1[%c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?xf32>, vector<3x6x1xf32>
|
||||
vector.print %v1 : vector<3x6x1xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 3, 6, 1 )
|
||||
// CHECK-NEXT: lvl = ( 3, 6, 1 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[2] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
|
||||
// CHECK-NEXT: crd[2] : ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
// CHECK-NEXT: values : ( 12, 28, 28, 28, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CCC_ret : tensor<?x?x?xf32, #CCC>
|
||||
|
||||
// CHECK: ( ( ( 12 ), ( 28 ), ( 28 ), ( 28 ), ( 12 ), ( 12 ) ),
|
||||
// CHECK-SAME: ( ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ) ),
|
||||
// CHECK-SAME: ( ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ), ( 12 ) ) )
|
||||
%2 = sparse_tensor.convert %CDC_ret
|
||||
: tensor<?x?x?xf32, #CDC> to tensor<?x?x?xf32>
|
||||
%v2 = vector.transfer_read %2[%c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?xf32>, vector<3x6x1xf32>
|
||||
vector.print %v2 : vector<3x6x1xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 18
|
||||
// CHECK-NEXT: dim = ( 3, 6, 1 )
|
||||
// CHECK-NEXT: lvl = ( 3, 6, 1 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2
|
||||
// CHECK-NEXT: pos[2] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
|
||||
// CHECK-NEXT: crd[2] : ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
// CHECK-NEXT: values : ( 12, 28, 28, 28, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CDC_ret : tensor<?x?x?xf32, #CDC>
|
||||
|
||||
// Free the resources
|
||||
bufferization.dealloc_tensor %in1D_nwc : tensor<?x?x?xf32>
|
||||
@@ -140,8 +152,5 @@ func.func @entry() {
|
||||
bufferization.dealloc_tensor %CCC_ret : tensor<?x?x?xf32, #CCC>
|
||||
bufferization.dealloc_tensor %CDC_ret : tensor<?x?x?xf32, #CDC>
|
||||
|
||||
bufferization.dealloc_tensor %1 : tensor<?x?x?xf32>
|
||||
bufferization.dealloc_tensor %2 : tensor<?x?x?xf32>
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -113,7 +113,7 @@ module {
|
||||
return %0 : tensor<6x6xi32, #CSC>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%i0 = arith.constant 0 : i32
|
||||
|
||||
@@ -181,82 +181,81 @@ module {
|
||||
vector.print %v : vector<6x6xi32>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%sparse_ret = sparse_tensor.convert %1
|
||||
: tensor<6x6xi32, #DCSR> to tensor<6x6xi32>
|
||||
%v1 = vector.transfer_read %sparse_ret[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v1 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, 0, -1, -6, -1, 6, -1, 0, 1, 0, 1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 3, 6, -3, -6, 2, -1, 3, 0, -3, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %1 : tensor<6x6xi32, #DCSR>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_DCSR = sparse_tensor.convert %2
|
||||
: tensor<6x6xi32, #DCSR> to tensor<6x6xi32>
|
||||
%v2 = vector.transfer_read %all_sparse_DCSR[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v2 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, 0, -1, -6, -1, 6, -1, 0, 1, 0, 1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 3, 6, -3, -6, 2, -1, 3, 0, -3, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %2 : tensor<6x6xi32, #DCSR>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_CD = sparse_tensor.convert %4
|
||||
: tensor<6x6xi32, #CDR> to tensor<6x6xi32>
|
||||
%v4 = vector.transfer_read %all_sparse_CD[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v4 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, 0, -1, -6, -1, 6, -1, 0, 1, 0, 1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 3, 6, -3, -6, 2, -1, 3, 0, -3, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %3 : tensor<6x6xi32, #CSR>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_CSR = sparse_tensor.convert %3
|
||||
: tensor<6x6xi32, #CSR> to tensor<6x6xi32>
|
||||
%v3 = vector.transfer_read %all_sparse_CSR[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v3 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, 0, -1, -6, -1, 6, -1, 0, 1, 0, 1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 3, 6, -3, -6, 2, -1, 3, 0, -3, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %4 : tensor<6x6xi32, #CDR>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( -1, 0, 0, 0, 0, 0 ),
|
||||
// CHECK-SAME: ( 0, 0, 3, 6, -3, -6 ),
|
||||
// CHECK-SAME: ( 2, -1, 3, 0, -3, 0 ) )
|
||||
// Should be the same as dense output.
|
||||
//
|
||||
%all_sparse_CSC = sparse_tensor.convert %5
|
||||
: tensor<6x6xi32, #CSC> to tensor<6x6xi32>
|
||||
%v5 = vector.transfer_read %all_sparse_CSC[%c0, %c0], %i0
|
||||
: tensor<6x6xi32>, vector<6x6xi32>
|
||||
vector.print %v5 : vector<6x6xi32>
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 36
|
||||
// CHECK-NEXT: dim = ( 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6 )
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 0, -1, 0, -1, 0, 2, 0, 0, -1, 0, 0, -1, -1, 1, 1, 0, 3, 3, -6, 0, 0, 0, 6, 0, -1, 1, 0, 0, -3, -3, 6, 0, 0, 0, -6, 0
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %5 : tensor<6x6xi32, #CSC>
|
||||
|
||||
//
|
||||
// Should be the same as dense output
|
||||
// Should be the same as dense output.
|
||||
// CHECK: ( ( 0, 0, -1, -6, -1, 6 ),
|
||||
// CHECK-SAME: ( -1, 0, 1, 0, 1, 0 ),
|
||||
// CHECK-SAME: ( 0, -1, 1, 0, 0, 0 ),
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -68,7 +68,7 @@ module {
|
||||
return %0 : tensor<6x6xi32>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%i0 = arith.constant 0 : i32
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -82,7 +82,7 @@ func.func @conv_2d_nchw_fchw_CCCC_CCCC(%arg0: tensor<?x?x?x?xf32, #CCCC>, %arg1:
|
||||
return %ret : tensor<?x?x?x?xf32>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%c1 = arith.constant 1 : index
|
||||
%c3 = arith.constant 3 : index
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -93,7 +93,7 @@ func.func @conv_2d_nhwc_hwcf_DCCD(%arg0: tensor<?x?x?x?xf32, #DCCD>, %arg1: tens
|
||||
return %ret : tensor<?x?x?x?xf32, #DCCD>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%c1 = arith.constant 1 : index
|
||||
%c3 = arith.constant 3 : index
|
||||
@@ -142,77 +142,93 @@ func.func @entry() {
|
||||
: tensor<?x?x?x?xf32>, vector<3x6x6x1xf32>
|
||||
vector.print %dense_v : vector<3x6x6x1xf32>
|
||||
|
||||
// CHECK: ( ( ( ( 108 ), ( 124 ), ( 124 ), ( 124 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ) )
|
||||
%1 = sparse_tensor.convert %CCCC_ret
|
||||
: tensor<?x?x?x?xf32, #CCCC> to tensor<?x?x?x?xf32>
|
||||
%v1 = vector.transfer_read %1[%c0, %c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?x?xf32>, vector<3x6x6x1xf32>
|
||||
vector.print %v1 : vector<3x6x6x1xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 108
|
||||
// CHECK-NEXT: dim = ( 3, 6, 6, 1 )
|
||||
// CHECK-NEXT: lvl = ( 3, 6, 6, 1 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0,
|
||||
// CHECK-SAME: 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
|
||||
// CHECK-SAME: 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[3] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
||||
// CHECK-SAME: 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
||||
// CHECK-SAME: 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
|
||||
// CHECK-SAME: 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
|
||||
// CHECK-SAME: 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
|
||||
// CHECK-SAME: 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108
|
||||
// CHECK-NEXT: crd[3] : ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0
|
||||
// CHECK-NEXT: values : ( 108, 124, 124, 124, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CCCC_ret : tensor<?x?x?x?xf32, #CCCC>
|
||||
|
||||
// CHECK: ( ( ( ( 108 ), ( 124 ), ( 124 ), ( 124 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ) )
|
||||
%2 = sparse_tensor.convert %CDCD_ret
|
||||
: tensor<?x?x?x?xf32, #CDCD> to tensor<?x?x?x?xf32>
|
||||
%v2 = vector.transfer_read %2[%c0, %c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?x?xf32>, vector<3x6x6x1xf32>
|
||||
vector.print %v2 : vector<3x6x6x1xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 108
|
||||
// CHECK-NEXT: dim = ( 3, 6, 6, 1 )
|
||||
// CHECK-NEXT: lvl = ( 3, 6, 6, 1 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 3
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0,
|
||||
// CHECK-SAME: 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
|
||||
// CHECK-SAME: 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 108, 124, 124, 124, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CDCD_ret : tensor<?x?x?x?xf32, #CDCD>
|
||||
|
||||
// CHECK: ( ( ( ( 108 ), ( 124 ), ( 124 ), ( 124 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ) )
|
||||
%3 = sparse_tensor.convert %DCCD_ret
|
||||
: tensor<?x?x?x?xf32, #DCCD> to tensor<?x?x?x?xf32>
|
||||
%v3 = vector.transfer_read %3[%c0, %c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?x?xf32>, vector<3x6x6x1xf32>
|
||||
vector.print %v3 : vector<3x6x6x1xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 108
|
||||
// CHECK-NEXT: dim = ( 3, 6, 6, 1 )
|
||||
// CHECK-NEXT: lvl = ( 3, 6, 6, 1 )
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0,
|
||||
// CHECK-SAME: 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
|
||||
// CHECK-SAME: 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 108, 124, 124, 124, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %DCCD_ret : tensor<?x?x?x?xf32, #DCCD>
|
||||
|
||||
// Free the resources
|
||||
bufferization.dealloc_tensor %in2D_nhwc : tensor<?x?x?x?xf32>
|
||||
@@ -227,9 +243,5 @@ func.func @entry() {
|
||||
bufferization.dealloc_tensor %CDCD_ret : tensor<?x?x?x?xf32, #CDCD>
|
||||
bufferization.dealloc_tensor %DCCD_ret : tensor<?x?x?x?xf32, #DCCD>
|
||||
|
||||
bufferization.dealloc_tensor %1 : tensor<?x?x?x?xf32>
|
||||
bufferization.dealloc_tensor %2 : tensor<?x?x?x?xf32>
|
||||
bufferization.dealloc_tensor %3 : tensor<?x?x?x?xf32>
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -96,7 +96,7 @@ func.func @conv_3d_DDC(%arg0: tensor<?x?x?xf32, #DDC>, %arg1: tensor<?x?x?xf32>)
|
||||
return %ret : tensor<?x?x?xf32, #DDC>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%c1 = arith.constant 1 : index
|
||||
%c3 = arith.constant 3 : index
|
||||
@@ -166,173 +166,180 @@ func.func @entry() {
|
||||
: tensor<?x?x?xf32>, vector<6x6x6xf32>
|
||||
vector.print %dense_v : vector<6x6x6xf32>
|
||||
|
||||
// CHECK-NEXT:( ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ) )
|
||||
%1 = sparse_tensor.convert %CCC_ret
|
||||
: tensor<?x?x?xf32, #CCC> to tensor<?x?x?xf32>
|
||||
%v1 = vector.transfer_read %1[%c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?xf32>, vector<6x6x6xf32>
|
||||
vector.print %v1 : vector<6x6x6xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 216
|
||||
// CHECK-NEXT: dim = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78,
|
||||
// CHECK-SAME: 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150,
|
||||
// CHECK-SAME: 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0,
|
||||
// CHECK-SAME: 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
|
||||
// CHECK-SAME: 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4,
|
||||
// CHECK-SAME: 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0,
|
||||
// CHECK-SAME: 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
|
||||
// CHECK-SAME: 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4,
|
||||
// CHECK-SAME: 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 108, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 124, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CCC_ret : tensor<?x?x?xf32, #CCC>
|
||||
|
||||
// CHECK-NEXT:( ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ) )
|
||||
%2 = sparse_tensor.convert %CCC_ret
|
||||
: tensor<?x?x?xf32, #CCC> to tensor<?x?x?xf32>
|
||||
%v2 = vector.transfer_read %2[%c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?xf32>, vector<6x6x6xf32>
|
||||
vector.print %v2 : vector<6x6x6xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 216
|
||||
// CHECK-NEXT: dim = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 6
|
||||
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84,
|
||||
// CHECK-SAME: 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156,
|
||||
// CHECK-SAME: 162, 168, 174, 180, 186, 192, 198, 204, 210, 216
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 108, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 124, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CDC_ret : tensor<?x?x?xf32, #CDC>
|
||||
|
||||
// CHECK-NEXT:( ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ) )
|
||||
%3 = sparse_tensor.convert %DDC_ret
|
||||
: tensor<?x?x?xf32, #DDC> to tensor<?x?x?xf32>
|
||||
%v3 = vector.transfer_read %3[%c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?xf32>, vector<6x6x6xf32>
|
||||
vector.print %v2 : vector<6x6x6xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 216
|
||||
// CHECK-NEXT: dim = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90,
|
||||
// CHECK-SAME: 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162,
|
||||
// CHECK-SAME: 168, 174, 180, 186, 192, 198, 204, 210, 216
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 108, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 124, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %DDC_ret : tensor<?x?x?xf32, #DDC>
|
||||
|
||||
// CHECK-NEXT:( ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 124, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ),
|
||||
// CHECK-SAME: ( ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ),
|
||||
// CHECK-SAME: ( 108, 108, 108, 108, 108, 108 ) ) )
|
||||
%4 = sparse_tensor.convert %DCC_ret
|
||||
: tensor<?x?x?xf32, #DCC> to tensor<?x?x?xf32>
|
||||
%v4 = vector.transfer_read %3[%c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?xf32>, vector<6x6x6xf32>
|
||||
vector.print %v2 : vector<6x6x6xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 216
|
||||
// CHECK-NEXT: dim = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: lvl = ( 6, 6, 6 )
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90,
|
||||
// CHECK-SAME: 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162,
|
||||
// CHECK-SAME: 168, 174, 180, 186, 192, 198, 204, 210, 216
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: values : ( 108, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 124, 108, 108, 108, 108, 108, 124, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %DCC_ret : tensor<?x?x?xf32, #DCC>
|
||||
|
||||
// Free the resources
|
||||
bufferization.dealloc_tensor %in3D : tensor<?x?x?xf32>
|
||||
@@ -349,10 +356,5 @@ func.func @entry() {
|
||||
bufferization.dealloc_tensor %DDC_ret : tensor<?x?x?xf32, #DDC>
|
||||
bufferization.dealloc_tensor %DCC_ret : tensor<?x?x?xf32, #DCC>
|
||||
|
||||
bufferization.dealloc_tensor %1 : tensor<?x?x?xf32>
|
||||
bufferization.dealloc_tensor %2 : tensor<?x?x?xf32>
|
||||
bufferization.dealloc_tensor %3 : tensor<?x?x?xf32>
|
||||
bufferization.dealloc_tensor %4 : tensor<?x?x?xf32>
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
|
||||
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
|
||||
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
|
||||
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
|
||||
// DEFINE: %{run_opts} = -e main -entry-point-result=void
|
||||
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
|
||||
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
|
||||
//
|
||||
@@ -83,7 +83,7 @@ func.func @conv_3d_ndhwc_dhwcf_CDCDC(%arg0: tensor<?x?x?x?x?xf32, #CDCDC>,
|
||||
return %ret : tensor<?x?x?x?x?xf32, #CDCDC>
|
||||
}
|
||||
|
||||
func.func @entry() {
|
||||
func.func @main() {
|
||||
%c0 = arith.constant 0 : index
|
||||
%c1 = arith.constant 1 : index
|
||||
%c3 = arith.constant 3 : index
|
||||
@@ -150,93 +150,134 @@ func.func @entry() {
|
||||
: (tensor<?x?x?x?x?xf32, #CCCCC>,
|
||||
tensor<?x?x?x?x?xf32>) -> (tensor<?x?x?x?x?xf32, #CCCCC>)
|
||||
|
||||
// CHECK-NEXT:( ( ( ( ( 108 ), ( 124 ), ( 124 ), ( 124 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ) ) )
|
||||
%1 = sparse_tensor.convert %CCCCC_ret
|
||||
: tensor<?x?x?x?x?xf32, #CCCCC> to tensor<?x?x?x?x?xf32>
|
||||
%v1 = vector.transfer_read %1[%c0, %c0, %c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?x?x?xf32>, vector<1x6x6x6x1xf32>
|
||||
vector.print %v1 : vector<1x6x6x6x1xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 216
|
||||
// CHECK-NEXT: dim = ( 1, 6, 6, 6, 1 )
|
||||
// CHECK-NEXT: lvl = ( 1, 6, 6, 6, 1 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 1
|
||||
// CHECK-NEXT: crd[0] : ( 0
|
||||
// CHECK-NEXT: pos[1] : ( 0, 6
|
||||
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[3] : ( 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96,
|
||||
// CHECK-SAME: 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174,
|
||||
// CHECK-SAME: 180, 186, 192, 198, 204, 210, 216
|
||||
// CHECK-NEXT: crd[3] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1,
|
||||
// CHECK-SAME: 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
|
||||
// CHECK-SAME: 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[4] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
|
||||
// CHECK-SAME: 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
// CHECK-SAME: 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
|
||||
// CHECK-SAME: 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
|
||||
// CHECK-SAME: 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
|
||||
// CHECK-SAME: 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
|
||||
// CHECK-SAME: 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
|
||||
// CHECK-SAME: 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
|
||||
// CHECK-SAME: 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
|
||||
// CHECK-SAME: 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
|
||||
// CHECK-SAME: 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
|
||||
// CHECK-SAME: 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
|
||||
// CHECK-SAME: 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
|
||||
// CHECK-SAME: 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
|
||||
// CHECK-SAME: 215, 216
|
||||
// CHECK-NEXT: crd[4] : ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
// CHECK-NEXT: values : ( 108, 124, 124, 124, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CCCCC_ret : tensor<?x?x?x?x?xf32, #CCCCC>
|
||||
|
||||
%CDCDC_ret = call @conv_3d_ndhwc_dhwcf_CDCDC(%in3D_ndhwc_CDCDC, %filter3D_ndhwc)
|
||||
: (tensor<?x?x?x?x?xf32, #CDCDC>,
|
||||
tensor<?x?x?x?x?xf32>) -> (tensor<?x?x?x?x?xf32, #CDCDC>)
|
||||
|
||||
// CHECK-NEXT:( ( ( ( ( 108 ), ( 124 ), ( 124 ), ( 124 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ),
|
||||
// CHECK-SAME: ( ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ),
|
||||
// CHECK-SAME: ( ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ), ( 108 ) ) ) ) )
|
||||
%2 = sparse_tensor.convert %CDCDC_ret
|
||||
: tensor<?x?x?x?x?xf32, #CDCDC> to tensor<?x?x?x?x?xf32>
|
||||
%v2 = vector.transfer_read %dense_ret[%c0, %c0, %c0, %c0, %c0], %zero
|
||||
: tensor<?x?x?x?x?xf32>, vector<1x6x6x6x1xf32>
|
||||
vector.print %v2 : vector<1x6x6x6x1xf32>
|
||||
//
|
||||
// CHECK: ---- Sparse Tensor ----
|
||||
// CHECK-NEXT: nse = 216
|
||||
// CHECK-NEXT: dim = ( 1, 6, 6, 6, 1 )
|
||||
// CHECK-NEXT: lvl = ( 1, 6, 6, 6, 1 )
|
||||
// CHECK-NEXT: pos[0] : ( 0, 1
|
||||
// CHECK-NEXT: crd[0] : ( 0
|
||||
// CHECK-NEXT: pos[2] : ( 0, 6, 12, 18, 24, 30, 36
|
||||
// CHECK-NEXT: crd[2] : ( 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
|
||||
// CHECK-SAME: 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5
|
||||
// CHECK-NEXT: pos[4] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
|
||||
// CHECK-SAME: 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
// CHECK-SAME: 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
|
||||
// CHECK-SAME: 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
|
||||
// CHECK-SAME: 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
|
||||
// CHECK-SAME: 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
|
||||
// CHECK-SAME: 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
|
||||
// CHECK-SAME: 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
|
||||
// CHECK-SAME: 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
|
||||
// CHECK-SAME: 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
|
||||
// CHECK-SAME: 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
|
||||
// CHECK-SAME: 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
|
||||
// CHECK-SAME: 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
|
||||
// CHECK-SAME: 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
|
||||
// CHECK-SAME: 215, 216
|
||||
// CHECK-NEXT: crd[4] : ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// CHECK-SAME: 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
// CHECK-NEXT: values : ( 108, 124, 124, 124, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
|
||||
// CHECK-SAME: 108, 108, 108, 108, 108, 108
|
||||
// CHECK-NEXT: ----
|
||||
//
|
||||
sparse_tensor.print %CDCDC_ret : tensor<?x?x?x?x?xf32, #CDCDC>
|
||||
|
||||
// Free the resources
|
||||
bufferization.dealloc_tensor %in3D_ndhwc : tensor<?x?x?x?x?xf32>
|
||||
@@ -249,8 +290,5 @@ func.func @entry() {
|
||||
bufferization.dealloc_tensor %CCCCC_ret : tensor<?x?x?x?x?xf32, #CCCCC>
|
||||
bufferization.dealloc_tensor %CDCDC_ret : tensor<?x?x?x?x?xf32, #CDCDC>
|
||||
|
||||
bufferization.dealloc_tensor %1 : tensor<?x?x?x?x?xf32>
|
||||
bufferization.dealloc_tensor %2 : tensor<?x?x?x?x?xf32>
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user