Skip to content

Commit 43a5e5d

Browse files
authored
Revert "[mlir][sparse] Migration to sparse_tensor.print (#83377)"
This reverts commit 1ca65dd.
1 parent 6137f48 commit 43a5e5d

File tree

4 files changed

+199
-259
lines changed

4 files changed

+199
-259
lines changed

mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_loose.mlir

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
1111
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
1212
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
13-
// DEFINE: %{run_opts} = -e main -entry-point-result=void
13+
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
1414
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
1515
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
1616
//
@@ -28,7 +28,7 @@
2828
}>
2929

3030
module {
31-
func.func @main() {
31+
func.func @entry() {
3232
%c0 = arith.constant 0 : index
3333
%f0 = arith.constant 0.0 : f64
3434
%d = arith.constant dense<[[ 1.0, 2.0, 3.0, 4.0 ],
@@ -39,14 +39,19 @@ module {
3939
%s = sparse_tensor.convert %d : tensor<5x4xf64> to tensor<5x4xf64, #CSR_hi>
4040

4141
//
42-
// CHECK: ---- Sparse Tensor ----
43-
// CHECK-NEXT: nse = 17
44-
// CHECK-NEXT: pos[1] : ( 0, 4, 4, 8, 8, 9, 9, 13
45-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 2, 0, 1, 2, 3, 0, 1, 2, 3
46-
// CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7, 8, 5.5, 9, 10, 11, 12, 13, 14, 15, 16
47-
// CHECK-NEXT: ----
42+
// CHECK: ( 0, 4, 4, 8, 8, 9, 9, 13 )
43+
// CHECK-NEXT: ( 0, 1, 2, 3, 0, 1, 2, 3, 2, 0, 1, 2, 3, 0, 1, 2, 3 )
44+
// CHECK-NEXT: ( 1, 2, 3, 4, 5, 6, 7, 8, 5.5, 9, 10, 11, 12, 13, 14, 15, 16 )
4845
//
49-
sparse_tensor.print %s : tensor<5x4xf64, #CSR_hi>
46+
%pos = sparse_tensor.positions %s {level = 1 : index } : tensor<5x4xf64, #CSR_hi> to memref<?xindex>
47+
%vecp = vector.transfer_read %pos[%c0], %c0 : memref<?xindex>, vector<8xindex>
48+
vector.print %vecp : vector<8xindex>
49+
%crd = sparse_tensor.coordinates %s {level = 1 : index } : tensor<5x4xf64, #CSR_hi> to memref<?xindex>
50+
%vecc = vector.transfer_read %crd[%c0], %c0 : memref<?xindex>, vector<17xindex>
51+
vector.print %vecc : vector<17xindex>
52+
%val = sparse_tensor.values %s : tensor<5x4xf64, #CSR_hi> to memref<?xf64>
53+
%vecv = vector.transfer_read %val[%c0], %f0 : memref<?xf64>, vector<17xf64>
54+
vector.print %vecv : vector<17xf64>
5055

5156
// Release the resources.
5257
bufferization.dealloc_tensor %s: tensor<5x4xf64, #CSR_hi>

mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_matmul.mlir

Lines changed: 99 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// DEFINE: %{compile} = mlir-opt %s --sparsifier="%{sparsifier_opts}"
1111
// DEFINE: %{compile_sve} = mlir-opt %s --sparsifier="%{sparsifier_opts_sve}"
1212
// DEFINE: %{run_libs} = -shared-libs=%mlir_c_runner_utils,%mlir_runner_utils
13-
// DEFINE: %{run_opts} = -e main -entry-point-result=void
13+
// DEFINE: %{run_opts} = -e entry -entry-point-result=void
1414
// DEFINE: %{run} = mlir-cpu-runner %{run_opts} %{run_libs}
1515
// DEFINE: %{run_sve} = %mcr_aarch64_cmd --march=aarch64 --mattr="+sve" %{run_opts} %{run_libs}
1616
//
@@ -90,7 +90,7 @@ module {
9090
//
9191
// Main driver.
9292
//
93-
func.func @main() {
93+
func.func @entry() {
9494
%c0 = arith.constant 0 : index
9595

9696
// Initialize various matrices, dense for stress testing,
@@ -140,94 +140,33 @@ module {
140140
%b4 = sparse_tensor.convert %sb : tensor<8x4xf64> to tensor<8x4xf64, #DCSR>
141141

142142
//
143-
// Sanity check before going into the computations.
144-
//
145-
// CHECK: ---- Sparse Tensor ----
146-
// CHECK-NEXT: nse = 32
147-
// CHECK-NEXT: pos[1] : ( 0, 8, 16, 24, 32
148-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7
149-
// CHECK-NEXT: values : ( 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2, 1.3, 2.3, 3.3, 4.3, 5.3, 6.3, 7.3, 8.3, 1.4, 2.4, 3.4, 4.4, 5.4, 6.4, 7.4, 8.4
150-
// CHECK-NEXT: ----
151-
//
152-
sparse_tensor.print %a1 : tensor<4x8xf64, #CSR>
153-
154-
//
155-
// CHECK: ---- Sparse Tensor ----
156-
// CHECK-NEXT: nse = 32
157-
// CHECK-NEXT: pos[0] : ( 0, 4
158-
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
159-
// CHECK-NEXT: pos[1] : ( 0, 8, 16, 24, 32
160-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7
161-
// CHECK-NEXT: values : ( 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2, 1.3, 2.3, 3.3, 4.3, 5.3, 6.3, 7.3, 8.3, 1.4, 2.4, 3.4, 4.4, 5.4, 6.4, 7.4, 8.4
162-
// CHECK-NEXT: ----
163-
//
164-
sparse_tensor.print %a2 : tensor<4x8xf64, #DCSR>
165-
166-
//
167-
// CHECK: ---- Sparse Tensor ----
168-
// CHECK-NEXT: nse = 4
169-
// CHECK-NEXT: pos[1] : ( 0, 2, 2, 3, 4
170-
// CHECK-NEXT: crd[1] : ( 1, 5, 1, 7
171-
// CHECK-NEXT: values : ( 2.1, 6.1, 2.3, 1
172-
// CHECK-NEXT: ----
173-
//
174-
sparse_tensor.print %a3 : tensor<4x8xf64, #CSR>
175-
176-
//
177-
// CHECK: ---- Sparse Tensor ----
178-
// CHECK-NEXT: nse = 4
179-
// CHECK-NEXT: pos[0] : ( 0, 3
180-
// CHECK-NEXT: crd[0] : ( 0, 2, 3
181-
// CHECK-NEXT: pos[1] : ( 0, 2, 3, 4
182-
// CHECK-NEXT: crd[1] : ( 1, 5, 1, 7
183-
// CHECK-NEXT: values : ( 2.1, 6.1, 2.3, 1
184-
// CHECK-NEXT: ----
185-
//
186-
sparse_tensor.print %a4 : tensor<4x8xf64, #DCSR>
187-
188-
//
189-
// CHECK: ---- Sparse Tensor ----
190-
// CHECK-NEXT: nse = 32
191-
// CHECK-NEXT: pos[1] : ( 0, 4, 8, 12, 16, 20, 24, 28, 32
192-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3
193-
// CHECK-NEXT: values : ( 10.1, 11.1, 12.1, 13.1, 10.2, 11.2, 12.2, 13.2, 10.3, 11.3, 12.3, 13.3, 10.4, 11.4, 12.4, 13.4, 10.5, 11.5, 12.5, 13.5, 10.6, 11.6, 12.6, 13.6, 10.7, 11.7, 12.7, 13.7, 10.8, 11.8, 12.8, 13.8
194-
// CHECK-NEXT: ----
195-
//
196-
sparse_tensor.print %b1 : tensor<8x4xf64, #CSR>
197-
198-
//
199-
// CHECK: ---- Sparse Tensor ----
200-
// CHECK-NEXT: nse = 32
201-
// CHECK-NEXT: pos[0] : ( 0, 8
202-
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 4, 5, 6, 7
203-
// CHECK-NEXT: pos[1] : ( 0, 4, 8, 12, 16, 20, 24, 28, 32
204-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3
205-
// CHECK-NEXT: values : ( 10.1, 11.1, 12.1, 13.1, 10.2, 11.2, 12.2, 13.2, 10.3, 11.3, 12.3, 13.3, 10.4, 11.4, 12.4, 13.4, 10.5, 11.5, 12.5, 13.5, 10.6, 11.6, 12.6, 13.6, 10.7, 11.7, 12.7, 13.7, 10.8, 11.8, 12.8, 13.8
206-
// CHECK-NEXT: ----
207-
//
208-
sparse_tensor.print %b2 : tensor<8x4xf64, #DCSR>
209-
210-
//
211-
// CHECK: ---- Sparse Tensor ----
212-
// CHECK-NEXT: nse = 8
213-
// CHECK-NEXT: pos[1] : ( 0, 1, 2, 3, 4, 4, 5, 6, 8
214-
// CHECK-NEXT: crd[1] : ( 3, 2, 1, 0, 1, 2, 2, 3
215-
// CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7, 8
216-
// CHECK-NEXT: ----
217-
//
218-
sparse_tensor.print %b3 : tensor<8x4xf64, #CSR>
219-
220-
//
221-
// CHECK: ---- Sparse Tensor ----
222-
// CHECK-NEXT: nse = 8
223-
// CHECK-NEXT: pos[0] : ( 0, 7
224-
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3, 5, 6, 7
225-
// CHECK-NEXT: pos[1] : ( 0, 1, 2, 3, 4, 5, 6, 8
226-
// CHECK-NEXT: crd[1] : ( 3, 2, 1, 0, 1, 2, 2, 3
227-
// CHECK-NEXT: values : ( 1, 2, 3, 4, 5, 6, 7, 8
228-
// CHECK-NEXT: ----
229-
//
230-
sparse_tensor.print %b4 : tensor<8x4xf64, #DCSR>
143+
// Sanity check on stored entries before going into the computations.
144+
//
145+
// CHECK: 32
146+
// CHECK-NEXT: 32
147+
// CHECK-NEXT: 4
148+
// CHECK-NEXT: 4
149+
// CHECK-NEXT: 32
150+
// CHECK-NEXT: 32
151+
// CHECK-NEXT: 8
152+
// CHECK-NEXT: 8
153+
//
154+
%noea1 = sparse_tensor.number_of_entries %a1 : tensor<4x8xf64, #CSR>
155+
%noea2 = sparse_tensor.number_of_entries %a2 : tensor<4x8xf64, #DCSR>
156+
%noea3 = sparse_tensor.number_of_entries %a3 : tensor<4x8xf64, #CSR>
157+
%noea4 = sparse_tensor.number_of_entries %a4 : tensor<4x8xf64, #DCSR>
158+
%noeb1 = sparse_tensor.number_of_entries %b1 : tensor<8x4xf64, #CSR>
159+
%noeb2 = sparse_tensor.number_of_entries %b2 : tensor<8x4xf64, #DCSR>
160+
%noeb3 = sparse_tensor.number_of_entries %b3 : tensor<8x4xf64, #CSR>
161+
%noeb4 = sparse_tensor.number_of_entries %b4 : tensor<8x4xf64, #DCSR>
162+
vector.print %noea1 : index
163+
vector.print %noea2 : index
164+
vector.print %noea3 : index
165+
vector.print %noea4 : index
166+
vector.print %noeb1 : index
167+
vector.print %noeb2 : index
168+
vector.print %noeb3 : index
169+
vector.print %noeb4 : index
231170

232171
// Call kernels with dense.
233172
%0 = call @matmul1(%da, %db, %zero)
@@ -269,26 +208,24 @@ module {
269208
call @printMemrefF64(%u0) : (tensor<*xf64>) -> ()
270209

271210
//
272-
// CHECK: ---- Sparse Tensor ----
273-
// CHECK-NEXT: nse = 16
274-
// CHECK-NEXT: pos[1] : ( 0, 4, 8, 12, 16
275-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3
276-
// CHECK-NEXT: values : ( 388.76, 425.56, 462.36, 499.16, 397.12, 434.72, 472.32, 509.92, 405.48, 443.88, 482.28, 520.68, 413.84, 453.04, 492.24, 531.44
277-
// CHECK-NEXT: ----
211+
// CHECK: {{\[}}[388.76, 425.56, 462.36, 499.16],
212+
// CHECK-NEXT: [397.12, 434.72, 472.32, 509.92],
213+
// CHECK-NEXT: [405.48, 443.88, 482.28, 520.68],
214+
// CHECK-NEXT: [413.84, 453.04, 492.24, 531.44]]
278215
//
279-
sparse_tensor.print %1 : tensor<4x4xf64, #CSR>
216+
%c1 = sparse_tensor.convert %1 : tensor<4x4xf64, #CSR> to tensor<4x4xf64>
217+
%c1u = tensor.cast %c1 : tensor<4x4xf64> to tensor<*xf64>
218+
call @printMemrefF64(%c1u) : (tensor<*xf64>) -> ()
280219

281220
//
282-
// CHECK: ---- Sparse Tensor ----
283-
// CHECK-NEXT: nse = 16
284-
// CHECK-NEXT: pos[0] : ( 0, 4
285-
// CHECK-NEXT: crd[0] : ( 0, 1, 2, 3
286-
// CHECK-NEXT: pos[1] : ( 0, 4, 8, 12, 16
287-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3
288-
// CHECK-NEXT: values : ( 388.76, 425.56, 462.36, 499.16, 397.12, 434.72, 472.32, 509.92, 405.48, 443.88, 482.28, 520.68, 413.84, 453.04, 492.24, 531.44
289-
// CHECK-NEXT: ----
221+
// CHECK: {{\[}}[388.76, 425.56, 462.36, 499.16],
222+
// CHECK-NEXT: [397.12, 434.72, 472.32, 509.92],
223+
// CHECK-NEXT: [405.48, 443.88, 482.28, 520.68],
224+
// CHECK-NEXT: [413.84, 453.04, 492.24, 531.44]]
290225
//
291-
sparse_tensor.print %2 : tensor<4x4xf64, #DCSR>
226+
%c2 = sparse_tensor.convert %2 : tensor<4x4xf64, #DCSR> to tensor<4x4xf64>
227+
%c2u = tensor.cast %c2 : tensor<4x4xf64> to tensor<*xf64>
228+
call @printMemrefF64(%c2u) : (tensor<*xf64>) -> ()
292229

293230
//
294231
// CHECK: {{\[}}[86.08, 94.28, 102.48, 110.68],
@@ -300,26 +237,24 @@ module {
300237
call @printMemrefF64(%u3) : (tensor<*xf64>) -> ()
301238

302239
//
303-
// CHECK: ---- Sparse Tensor ----
304-
// CHECK-NEXT: nse = 12
305-
// CHECK-NEXT: pos[1] : ( 0, 4, 4, 8, 12
306-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3
307-
// CHECK-NEXT: values : ( 86.08, 94.28, 102.48, 110.68, 23.46, 25.76, 28.06, 30.36, 10.8, 11.8, 12.8, 13.8
308-
// CHECK-NEXT: ----
240+
// CHECK: {{\[}}[86.08, 94.28, 102.48, 110.68],
241+
// CHECK-NEXT: [0, 0, 0, 0],
242+
// CHECK-NEXT: [23.46, 25.76, 28.06, 30.36],
243+
// CHECK-NEXT: [10.8, 11.8, 12.8, 13.8]]
309244
//
310-
sparse_tensor.print %4 : tensor<4x4xf64, #CSR>
245+
%c4 = sparse_tensor.convert %4 : tensor<4x4xf64, #CSR> to tensor<4x4xf64>
246+
%c4u = tensor.cast %c4 : tensor<4x4xf64> to tensor<*xf64>
247+
call @printMemrefF64(%c4u) : (tensor<*xf64>) -> ()
311248

312249
//
313-
// CHECK: ---- Sparse Tensor ----
314-
// CHECK-NEXT: nse = 12
315-
// CHECK-NEXT: pos[0] : ( 0, 3
316-
// CHECK-NEXT: crd[0] : ( 0, 2, 3
317-
// CHECK-NEXT: pos[1] : ( 0, 4, 8, 12
318-
// CHECK-NEXT: crd[1] : ( 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3
319-
// CHECK-NEXT: values : ( 86.08, 94.28, 102.48, 110.68, 23.46, 25.76, 28.06, 30.36, 10.8, 11.8, 12.8, 13.8
320-
// CHECK-NEXT: ----
250+
// CHECK: {{\[}}[86.08, 94.28, 102.48, 110.68],
251+
// CHECK-NEXT: [0, 0, 0, 0],
252+
// CHECK-NEXT: [23.46, 25.76, 28.06, 30.36],
253+
// CHECK-NEXT: [10.8, 11.8, 12.8, 13.8]]
321254
//
322-
sparse_tensor.print %5 : tensor<4x4xf64, #DCSR>
255+
%c5 = sparse_tensor.convert %5 : tensor<4x4xf64, #DCSR> to tensor<4x4xf64>
256+
%c5u = tensor.cast %c5 : tensor<4x4xf64> to tensor<*xf64>
257+
call @printMemrefF64(%c5u) : (tensor<*xf64>) -> ()
323258

324259
//
325260
// CHECK: {{\[}}[0, 30.5, 4.2, 0],
@@ -331,26 +266,46 @@ module {
331266
call @printMemrefF64(%u6) : (tensor<*xf64>) -> ()
332267

333268
//
334-
// CHECK: ---- Sparse Tensor ----
335-
// CHECK-NEXT: nse = 5
336-
// CHECK-NEXT: pos[1] : ( 0, 2, 2, 3, 5
337-
// CHECK-NEXT: crd[1] : ( 1, 2, 2, 2, 3
338-
// CHECK-NEXT: values : ( 30.5, 4.2, 4.6, 7, 8
339-
// CHECK-NEXT: ----
269+
// CHECK: {{\[}}[0, 30.5, 4.2, 0],
270+
// CHECK-NEXT: [0, 0, 0, 0],
271+
// CHECK-NEXT: [0, 0, 4.6, 0],
272+
// CHECK-NEXT: [0, 0, 7, 8]]
340273
//
341-
sparse_tensor.print %7 : tensor<4x4xf64, #CSR>
274+
%c7 = sparse_tensor.convert %7 : tensor<4x4xf64, #CSR> to tensor<4x4xf64>
275+
%c7u = tensor.cast %c7 : tensor<4x4xf64> to tensor<*xf64>
276+
call @printMemrefF64(%c7u) : (tensor<*xf64>) -> ()
342277

343278
//
344-
// CHECK: ---- Sparse Tensor ----
345-
// CHECK-NEXT: nse = 5
346-
// CHECK-NEXT: pos[0] : ( 0, 3
347-
// CHECK-NEXT: crd[0] : ( 0, 2, 3
348-
// CHECK-NEXT: pos[1] : ( 0, 2, 3, 5
349-
// CHECK-NEXT: crd[1] : ( 1, 2, 2, 2, 3
350-
// CHECK-NEXT: values : ( 30.5, 4.2, 4.6, 7, 8
351-
// CHECK-NEXT: ----
279+
// CHECK: {{\[}}[0, 30.5, 4.2, 0],
280+
// CHECK-NEXT: [0, 0, 0, 0],
281+
// CHECK-NEXT: [0, 0, 4.6, 0],
282+
// CHECK-NEXT: [0, 0, 7, 8]]
283+
//
284+
%c8 = sparse_tensor.convert %8 : tensor<4x4xf64, #DCSR> to tensor<4x4xf64>
285+
%c8u = tensor.cast %c8 : tensor<4x4xf64> to tensor<*xf64>
286+
call @printMemrefF64(%c8u) : (tensor<*xf64>) -> ()
287+
288+
//
289+
// Sanity check on nonzeros.
290+
//
291+
// CHECK: [30.5, 4.2, 4.6, 7, 8{{.*}}]
292+
// CHECK: [30.5, 4.2, 4.6, 7, 8{{.*}}]
293+
//
294+
%val7 = sparse_tensor.values %7 : tensor<4x4xf64, #CSR> to memref<?xf64>
295+
%val8 = sparse_tensor.values %8 : tensor<4x4xf64, #DCSR> to memref<?xf64>
296+
call @printMemref1dF64(%val7) : (memref<?xf64>) -> ()
297+
call @printMemref1dF64(%val8) : (memref<?xf64>) -> ()
298+
299+
//
300+
// Sanity check on stored entries after the computations.
301+
//
302+
// CHECK-NEXT: 5
303+
// CHECK-NEXT: 5
352304
//
353-
sparse_tensor.print %8 : tensor<4x4xf64, #DCSR>
305+
%noe7 = sparse_tensor.number_of_entries %7 : tensor<4x4xf64, #CSR>
306+
%noe8 = sparse_tensor.number_of_entries %8 : tensor<4x4xf64, #DCSR>
307+
vector.print %noe7 : index
308+
vector.print %noe8 : index
354309

355310
// Release the resources.
356311
bufferization.dealloc_tensor %a1 : tensor<4x8xf64, #CSR>
@@ -361,6 +316,12 @@ module {
361316
bufferization.dealloc_tensor %b2 : tensor<8x4xf64, #DCSR>
362317
bufferization.dealloc_tensor %b3 : tensor<8x4xf64, #CSR>
363318
bufferization.dealloc_tensor %b4 : tensor<8x4xf64, #DCSR>
319+
bufferization.dealloc_tensor %c1 : tensor<4x4xf64>
320+
bufferization.dealloc_tensor %c2 : tensor<4x4xf64>
321+
bufferization.dealloc_tensor %c4 : tensor<4x4xf64>
322+
bufferization.dealloc_tensor %c5 : tensor<4x4xf64>
323+
bufferization.dealloc_tensor %c7 : tensor<4x4xf64>
324+
bufferization.dealloc_tensor %c8 : tensor<4x4xf64>
364325
bufferization.dealloc_tensor %0 : tensor<4x4xf64>
365326
bufferization.dealloc_tensor %1 : tensor<4x4xf64, #CSR>
366327
bufferization.dealloc_tensor %2 : tensor<4x4xf64, #DCSR>

0 commit comments

Comments
 (0)