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
//
51
51
52
52
module {
53
53
func.func private @printMemrefF64 (%ptr : tensor <*xf64 >)
54
- func.func private @printMemref1dF64 (%ptr : memref <?xf64 >) attributes { llvm.emit_c_interface }
55
-
56
- //
57
- // Tests without permutation.
58
- //
59
54
60
55
// Concats all sparse matrices (with different encodings) to a sparse matrix.
61
56
func.func @concat_sparse_sparse (%arg0: tensor <2 x4 xf64 , #MAT_C_C >, %arg1: tensor <3 x4 xf64 , #MAT_C_D >, %arg2: tensor <4 x4 xf64 , #MAT_D_C >) -> tensor <9 x4 xf64 , #MAT_C_C > {
@@ -85,30 +80,15 @@ module {
85
80
return %0 : tensor <9 x4 xf64 >
86
81
}
87
82
88
- func.func @dump_mat_9x4 (%A: tensor <9 x4 xf64 , #MAT_C_C >) {
89
- %c = sparse_tensor.convert %A : tensor <9 x4 xf64 , #MAT_C_C > to tensor <9 x4 xf64 >
90
- %cu = tensor.cast %c : tensor <9 x4 xf64 > to tensor <*xf64 >
91
- call @printMemrefF64 (%cu ) : (tensor <*xf64 >) -> ()
92
-
93
- %n = sparse_tensor.number_of_entries %A : tensor <9 x4 xf64 , #MAT_C_C >
94
- vector.print %n : index
95
-
96
- %1 = sparse_tensor.values %A : tensor <9 x4 xf64 , #MAT_C_C > to memref <?xf64 >
97
- call @printMemref1dF64 (%1 ) : (memref <?xf64 >) -> ()
98
-
99
- bufferization.dealloc_tensor %c : tensor <9 x4 xf64 >
100
- return
101
- }
102
-
83
+ // Outputs dense matrix.
103
84
func.func @dump_mat_dense_9x4 (%A: tensor <9 x4 xf64 >) {
104
85
%u = tensor.cast %A : tensor <9 x4 xf64 > to tensor <*xf64 >
105
86
call @printMemrefF64 (%u ) : (tensor <*xf64 >) -> ()
106
-
107
87
return
108
88
}
109
89
110
90
// Driver method to call and verify kernels.
111
- func.func @entry () {
91
+ func.func @main () {
112
92
%m24 = arith.constant dense <
113
93
[ [ 1.0 , 0.0 , 3.0 , 0.0 ],
114
94
[ 0.0 , 2.0 , 0.0 , 0.0 ] ]> : tensor <2 x4 xf64 >
@@ -126,22 +106,24 @@ module {
126
106
%sm34cd = sparse_tensor.convert %m34 : tensor <3 x4 xf64 > to tensor <3 x4 xf64 , #MAT_C_D >
127
107
%sm44dc = sparse_tensor.convert %m44 : tensor <4 x4 xf64 > to tensor <4 x4 xf64 , #MAT_D_C >
128
108
129
- // CHECK: {{\[}}[1, 0, 3, 0],
130
- // CHECK-NEXT: [0, 2, 0, 0],
131
- // CHECK-NEXT: [1, 0, 1, 1],
132
- // CHECK-NEXT: [0, 0.5, 0, 0],
133
- // CHECK-NEXT: [1, 5, 2, 0],
134
- // CHECK-NEXT: [0, 0, 1.5, 1],
135
- // CHECK-NEXT: [0, 3.5, 0, 0],
136
- // CHECK-NEXT: [1, 5, 2, 0],
137
- // CHECK-NEXT: [1, 0.5, 0, 0]]
138
- // CHECK-NEXT: 18
139
- // CHECK: [1, 3, 2, 1, 1, 1, 0.5, 1, 5, 2, 1.5, 1, 3.5, 1, 5, 2, 1, 0.5
109
+ //
110
+ // CHECK: ---- Sparse Tensor ----
111
+ // CHECK-NEXT: nse = 18
112
+ // CHECK-NEXT: dim = ( 9, 4 )
113
+ // CHECK-NEXT: lvl = ( 9, 4 )
114
+ // CHECK-NEXT: pos[0] : ( 0, 9,
115
+ // CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8,
116
+ // CHECK-NEXT: pos[1] : ( 0, 2, 3, 6, 7, 10, 12, 13, 16, 18,
117
+ // CHECK-NEXT: crd[1] : ( 0, 2, 1, 0, 2, 3, 1, 0, 1, 2, 2, 3, 1, 0, 1, 2, 0, 1,
118
+ // 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,
119
+ // CHECK-NEXT: ----
120
+ //
140
121
%0 = call @concat_sparse_sparse (%sm24cc , %sm34cd , %sm44dc )
141
122
: (tensor <2 x4 xf64 , #MAT_C_C >, tensor <3 x4 xf64 , #MAT_C_D >, tensor <4 x4 xf64 , #MAT_D_C >) -> tensor <9 x4 xf64 , #MAT_C_C >
142
- call @dump_mat_9x4 ( %0 ) : ( tensor <9 x4 xf64 , #MAT_C_C >) -> ()
123
+ sparse_tensor.print %0 : tensor <9 x4 xf64 , #MAT_C_C >
143
124
144
- // CHECK: {{\[}}[1, 0, 3, 0],
125
+ //
126
+ // CHECK: {{\[}}[1, 0, 3, 0],
145
127
// CHECK-NEXT: [0, 2, 0, 0],
146
128
// CHECK-NEXT: [1, 0, 1, 1],
147
129
// CHECK-NEXT: [0, 0.5, 0, 0],
@@ -150,26 +132,29 @@ module {
150
132
// CHECK-NEXT: [0, 3.5, 0, 0],
151
133
// CHECK-NEXT: [1, 5, 2, 0],
152
134
// CHECK-NEXT: [1, 0.5, 0, 0]]
135
+ //
153
136
%1 = call @concat_sparse_dense (%sm24cc , %sm34cd , %sm44dc )
154
137
: (tensor <2 x4 xf64 , #MAT_C_C >, tensor <3 x4 xf64 , #MAT_C_D >, tensor <4 x4 xf64 , #MAT_D_C >) -> tensor <9 x4 xf64 >
155
138
call @dump_mat_dense_9x4 (%1 ) : (tensor <9 x4 xf64 >) -> ()
156
139
157
- // CHECK: {{\[}}[1, 0, 3, 0],
158
- // CHECK-NEXT: [0, 2, 0, 0],
159
- // CHECK-NEXT: [1, 0, 1, 1],
160
- // CHECK-NEXT: [0, 0.5, 0, 0],
161
- // CHECK-NEXT: [1, 5, 2, 0],
162
- // CHECK-NEXT: [0, 0, 1.5, 1],
163
- // CHECK-NEXT: [0, 3.5, 0, 0],
164
- // CHECK-NEXT: [1, 5, 2, 0],
165
- // CHECK-NEXT: [1, 0.5, 0, 0]]
166
- // CHECK-NEXT: 18
167
- // CHECK: [1, 3, 2, 1, 1, 1, 0.5, 1, 5, 2, 1.5, 1, 3.5, 1, 5, 2, 1, 0.5
140
+ //
141
+ // CHECK: ---- Sparse Tensor ----
142
+ // CHECK-NEXT: nse = 18
143
+ // CHECK-NEXT: dim = ( 9, 4 )
144
+ // CHECK-NEXT: lvl = ( 9, 4 )
145
+ // CHECK-NEXT: pos[0] : ( 0, 9,
146
+ // CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5, 6, 7, 8,
147
+ // CHECK-NEXT: pos[1] : ( 0, 2, 3, 6, 7, 10, 12, 13, 16, 18,
148
+ // CHECK-NEXT: crd[1] : ( 0, 2, 1, 0, 2, 3, 1, 0, 1, 2, 2, 3, 1, 0, 1, 2, 0, 1,
149
+ // 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,
150
+ // CHECK-NEXT: ----
151
+ //
168
152
%2 = call @concat_mix_sparse (%m24 , %sm34cd , %sm44dc )
169
153
: (tensor <2 x4 xf64 >, tensor <3 x4 xf64 , #MAT_C_D >, tensor <4 x4 xf64 , #MAT_D_C >) -> tensor <9 x4 xf64 , #MAT_C_C >
170
- call @dump_mat_9x4 ( %2 ) : ( tensor <9 x4 xf64 , #MAT_C_C >) -> ()
154
+ sparse_tensor.print %2 : tensor <9 x4 xf64 , #MAT_C_C >
171
155
172
- // CHECK: {{\[}}[1, 0, 3, 0],
156
+ //
157
+ // CHECK: {{\[}}[1, 0, 3, 0],
173
158
// CHECK-NEXT: [0, 2, 0, 0],
174
159
// CHECK-NEXT: [1, 0, 1, 1],
175
160
// CHECK-NEXT: [0, 0.5, 0, 0],
@@ -178,11 +163,11 @@ module {
178
163
// CHECK-NEXT: [0, 3.5, 0, 0],
179
164
// CHECK-NEXT: [1, 5, 2, 0],
180
165
// CHECK-NEXT: [1, 0.5, 0, 0]]
166
+ //
181
167
%3 = call @concat_mix_dense (%m24 , %sm34cd , %sm44dc )
182
168
: (tensor <2 x4 xf64 >, tensor <3 x4 xf64 , #MAT_C_D >, tensor <4 x4 xf64 , #MAT_D_C >) -> tensor <9 x4 xf64 >
183
169
call @dump_mat_dense_9x4 (%3 ) : (tensor <9 x4 xf64 >) -> ()
184
170
185
-
186
171
// Release resources.
187
172
bufferization.dealloc_tensor %sm24cc : tensor <2 x4 xf64 , #MAT_C_C >
188
173
bufferization.dealloc_tensor %sm34cd : tensor <3 x4 xf64 , #MAT_C_D >
0 commit comments