10
10
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
11
11
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
12
12
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
13
- // DEFINE: %{run_opts} = -e entry -entry-point-result=void
13
+ // DEFINE: %{run_opts} = -e main -entry-point-result=void
14
14
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
15
15
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
16
16
//
44
44
// may change (the actual underlying sizes obviously never change).
45
45
//
46
46
module {
47
-
48
- func.func private @printMemref1dF64 (%ptr : memref <?xf64 >) attributes { llvm.emit_c_interface }
49
-
50
- //
51
- // Helper method to print values array. The transfer actually
52
- // reads more than required to verify size of buffer as well.
53
- //
54
- func.func @dump (%arg0: memref <?xf64 >) {
55
- call @printMemref1dF64 (%arg0 ) : (memref <?xf64 >) -> ()
56
- return
57
- }
58
-
59
- func.func @entry () {
47
+ func.func @main () {
60
48
%t1 = arith.constant sparse <
61
49
[ [0 ,0 ], [0 ,1 ], [0 ,63 ], [1 ,0 ], [1 ,1 ], [31 ,0 ], [31 ,63 ] ],
62
50
[ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 , 7.0 ]> : tensor <32 x64 xf64 >
@@ -72,45 +60,81 @@ module {
72
60
%5 = sparse_tensor.convert %3 : tensor <?x?xf64 , #DCSR > to tensor <?x?xf64 , #DCSC >
73
61
%6 = sparse_tensor.convert %4 : tensor <?x?xf64 , #DCSC > to tensor <?x?xf64 , #DCSR >
74
62
75
- //
76
- // Check number_of_entries.
77
63
//
78
- // CHECK-COUNT-6: 7
79
- %n1 = sparse_tensor.number_of_entries %1 : tensor <?x?xf64 , #DCSR >
80
- %n2 = sparse_tensor.number_of_entries %2 : tensor <?x?xf64 , #DCSC >
81
- %n3 = sparse_tensor.number_of_entries %3 : tensor <?x?xf64 , #DCSR >
82
- %n4 = sparse_tensor.number_of_entries %4 : tensor <?x?xf64 , #DCSC >
83
- %n5 = sparse_tensor.number_of_entries %5 : tensor <?x?xf64 , #DCSC >
84
- %n6 = sparse_tensor.number_of_entries %6 : tensor <?x?xf64 , #DCSR >
85
- vector.print %n1 : index
86
- vector.print %n2 : index
87
- vector.print %n3 : index
88
- vector.print %n4 : index
89
- vector.print %n5 : index
90
- vector.print %n6 : index
91
-
64
+ // Verify the outputs.
65
+ //
66
+ // CHECK: ---- Sparse Tensor ----
67
+ // CHECK-NEXT: nse = 7
68
+ // CHECK-NEXT: dim = ( 32, 64 )
69
+ // CHECK-NEXT: lvl = ( 32, 64 )
70
+ // CHECK-NEXT: pos[0] : ( 0, 3
71
+ // CHECK-NEXT: crd[0] : ( 0, 1, 31
72
+ // CHECK-NEXT: pos[1] : ( 0, 3, 5, 7
73
+ // CHECK-NEXT: crd[1] : ( 0, 1, 63, 0, 1, 0, 63
74
+ // CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7
75
+ // CHECK-NEXT: ----
76
+ //
77
+ // CHECK: ---- Sparse Tensor ----
78
+ // CHECK-NEXT: nse = 7
79
+ // CHECK-NEXT: dim = ( 32, 64 )
80
+ // CHECK-NEXT: lvl = ( 64, 32 )
81
+ // CHECK-NEXT: pos[0] : ( 0, 3
82
+ // CHECK-NEXT: crd[0] : ( 0, 1, 63
83
+ // CHECK-NEXT: pos[1] : ( 0, 3, 5, 7
84
+ // CHECK-NEXT: crd[1] : ( 0, 1, 31, 0, 1, 0, 31
85
+ // CHECK-NEXT: values : ( 1, 4, 6, 2, 5, 3, 7
86
+ // CHECK-NEXT: ----
87
+ //
88
+ // CHECK: ---- Sparse Tensor ----
89
+ // CHECK-NEXT: nse = 7
90
+ // CHECK-NEXT: dim = ( 32, 64 )
91
+ // CHECK-NEXT: lvl = ( 32, 64 )
92
+ // CHECK-NEXT: pos[0] : ( 0, 3
93
+ // CHECK-NEXT: crd[0] : ( 0, 1, 31
94
+ // CHECK-NEXT: pos[1] : ( 0, 3, 5, 7
95
+ // CHECK-NEXT: crd[1] : ( 0, 1, 63, 0, 1, 0, 63
96
+ // CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7
97
+ // CHECK-NEXT: ----
98
+ //
99
+ // CHECK: ---- Sparse Tensor ----
100
+ // CHECK-NEXT: nse = 7
101
+ // CHECK-NEXT: dim = ( 32, 64 )
102
+ // CHECK-NEXT: lvl = ( 64, 32 )
103
+ // CHECK-NEXT: pos[0] : ( 0, 3
104
+ // CHECK-NEXT: crd[0] : ( 0, 1, 63
105
+ // CHECK-NEXT: pos[1] : ( 0, 3, 5, 7
106
+ // CHECK-NEXT: crd[1] : ( 0, 1, 31, 0, 1, 0, 31
107
+ // CHECK-NEXT: values : ( 1, 4, 6, 2, 5, 3, 7
108
+ // CHECK-NEXT: ----
92
109
//
93
- // All proper row-/column-wise?
110
+ // CHECK: ---- Sparse Tensor ----
111
+ // CHECK-NEXT: nse = 7
112
+ // CHECK-NEXT: dim = ( 32, 64 )
113
+ // CHECK-NEXT: lvl = ( 64, 32 )
114
+ // CHECK-NEXT: pos[0] : ( 0, 3
115
+ // CHECK-NEXT: crd[0] : ( 0, 1, 63
116
+ // CHECK-NEXT: pos[1] : ( 0, 3, 5, 7
117
+ // CHECK-NEXT: crd[1] : ( 0, 1, 31, 0, 1, 0, 31
118
+ // CHECK-NEXT: values : ( 1, 4, 6, 2, 5, 3, 7
119
+ // CHECK-NEXT: ----
94
120
//
95
- // CHECK: [1, 2, 3, 4, 5, 6, 7
96
- // CHECK: [1, 4, 6, 2, 5, 3, 7
97
- // CHECK: [1, 2, 3, 4, 5, 6, 7
98
- // CHECK: [1, 4, 6, 2, 5, 3, 7
99
- // CHECK: [1, 4, 6, 2, 5, 3, 7
100
- // CHECK: [1, 2, 3, 4, 5, 6, 7
121
+ // CHECK: ---- Sparse Tensor ----
122
+ // CHECK-NEXT: nse = 7
123
+ // CHECK-NEXT: dim = ( 32, 64 )
124
+ // CHECK-NEXT: lvl = ( 32, 64 )
125
+ // CHECK-NEXT: pos[0] : ( 0, 3
126
+ // CHECK-NEXT: crd[0] : ( 0, 1, 31
127
+ // CHECK-NEXT: pos[1] : ( 0, 3, 5, 7
128
+ // CHECK-NEXT: crd[1] : ( 0, 1, 63, 0, 1, 0, 63
129
+ // CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7
130
+ // CHECK-NEXT: ----
101
131
//
102
- %m1 = sparse_tensor.values %1 : tensor <?x?xf64 , #DCSR > to memref <?xf64 >
103
- %m2 = sparse_tensor.values %2 : tensor <?x?xf64 , #DCSC > to memref <?xf64 >
104
- %m3 = sparse_tensor.values %3 : tensor <?x?xf64 , #DCSR > to memref <?xf64 >
105
- %m4 = sparse_tensor.values %4 : tensor <?x?xf64 , #DCSC > to memref <?xf64 >
106
- %m5 = sparse_tensor.values %5 : tensor <?x?xf64 , #DCSC > to memref <?xf64 >
107
- %m6 = sparse_tensor.values %6 : tensor <?x?xf64 , #DCSR > to memref <?xf64 >
108
- call @dump (%m1 ) : (memref <?xf64 >) -> ()
109
- call @dump (%m2 ) : (memref <?xf64 >) -> ()
110
- call @dump (%m3 ) : (memref <?xf64 >) -> ()
111
- call @dump (%m4 ) : (memref <?xf64 >) -> ()
112
- call @dump (%m5 ) : (memref <?xf64 >) -> ()
113
- call @dump (%m6 ) : (memref <?xf64 >) -> ()
132
+ sparse_tensor.print %1 : tensor <?x?xf64 , #DCSR >
133
+ sparse_tensor.print %2 : tensor <?x?xf64 , #DCSC >
134
+ sparse_tensor.print %3 : tensor <?x?xf64 , #DCSR >
135
+ sparse_tensor.print %4 : tensor <?x?xf64 , #DCSC >
136
+ sparse_tensor.print %5 : tensor <?x?xf64 , #DCSC >
137
+ sparse_tensor.print %6 : tensor <?x?xf64 , #DCSR >
114
138
115
139
// Release the resources.
116
140
bufferization.dealloc_tensor %1 : tensor <?x?xf64 , #DCSR >
0 commit comments