102
102
)
103
103
}>
104
104
105
+ #BSR0 = #sparse_tensor.encoding <{
106
+ map = (i , j) -> (
107
+ i floordiv 2 : dense ,
108
+ j floordiv 4 : compressed ,
109
+ i mod 2 : dense ,
110
+ j mod 4 : dense
111
+ )
112
+ }>
113
+
114
+ #BSC0 = #sparse_tensor.encoding <{
115
+ map = (i , j) -> (
116
+ j floordiv 4 : dense ,
117
+ i floordiv 2 : compressed ,
118
+ i mod 2 : dense ,
119
+ j mod 4 : dense
120
+ )
121
+ }>
122
+
105
123
module {
106
124
107
125
//
@@ -114,6 +132,21 @@ module {
114
132
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
115
133
[ 0 , 0 , 3 , 4 , 0 , 5 , 0 , 0 ] ]> : tensor <4 x8 xi32 >
116
134
135
+ %XO = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #AllDense >
136
+ %XT = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #AllDenseT >
137
+
138
+ // CHECK: ---- Sparse Tensor ----
139
+ // CHECK-NEXT: nse = 32
140
+ // CHECK-NEXT: values : ( 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 5, 0, 0,
141
+ // CHECK-NEXT: ----
142
+ sparse_tensor.print %XO : tensor <4 x8 xi32 , #AllDense >
143
+
144
+ // CHECK-NEXT: ---- Sparse Tensor ----
145
+ // CHECK-NEXT: nse = 32
146
+ // CHECK-NEXT: values : ( 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
147
+ // CHECK-NEXT: ----
148
+ sparse_tensor.print %XT : tensor <4 x8 xi32 , #AllDenseT >
149
+
117
150
%a = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #CSR >
118
151
%b = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #DCSR >
119
152
%c = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #CSC >
@@ -122,9 +155,10 @@ module {
122
155
%f = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #BSRC >
123
156
%g = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #BSC >
124
157
%h = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #BSCC >
158
+ %i = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #BSR0 >
159
+ %j = sparse_tensor.convert %x : tensor <4 x8 xi32 > to tensor <4 x8 xi32 , #BSC0 >
125
160
126
- //
127
- // CHECK: ---- Sparse Tensor ----
161
+ // CHECK-NEXT: ---- Sparse Tensor ----
128
162
// CHECK-NEXT: nse = 5
129
163
// CHECK-NEXT: pos[1] : ( 0, 2, 2, 2, 5,
130
164
// CHECK-NEXT: crd[1] : ( 0, 2, 2, 3, 5,
@@ -200,7 +234,25 @@ module {
200
234
// CHECK-NEXT: ----
201
235
sparse_tensor.print %h : tensor <4 x8 xi32 , #BSCC >
202
236
237
+ // CHECK-NEXT: ---- Sparse Tensor ----
238
+ // CHECK-NEXT: nse = 24
239
+ // CHECK-NEXT: pos[1] : ( 0, 1, 3,
240
+ // CHECK-NEXT: crd[1] : ( 0, 0, 1,
241
+ // CHECK-NEXT: values : ( 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 5, 0, 0,
242
+ // CHECK-NEXT: ----
243
+ sparse_tensor.print %i : tensor <4 x8 xi32 , #BSR0 >
244
+
245
+ // CHECK-NEXT: ---- Sparse Tensor ----
246
+ // CHECK-NEXT: nse = 24
247
+ // CHECK-NEXT: pos[1] : ( 0, 2, 3,
248
+ // CHECK-NEXT: crd[1] : ( 0, 1, 1,
249
+ // CHECK-NEXT: values : ( 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 5, 0, 0,
250
+ // CHECK-NEXT: ----
251
+ sparse_tensor.print %j : tensor <4 x8 xi32 , #BSC0 >
252
+
203
253
// Release the resources.
254
+ bufferization.dealloc_tensor %XO : tensor <4 x8 xi32 , #AllDense >
255
+ bufferization.dealloc_tensor %XT : tensor <4 x8 xi32 , #AllDenseT >
204
256
bufferization.dealloc_tensor %a : tensor <4 x8 xi32 , #CSR >
205
257
bufferization.dealloc_tensor %b : tensor <4 x8 xi32 , #DCSR >
206
258
bufferization.dealloc_tensor %c : tensor <4 x8 xi32 , #CSC >
@@ -209,6 +261,8 @@ module {
209
261
bufferization.dealloc_tensor %f : tensor <4 x8 xi32 , #BSRC >
210
262
bufferization.dealloc_tensor %g : tensor <4 x8 xi32 , #BSC >
211
263
bufferization.dealloc_tensor %h : tensor <4 x8 xi32 , #BSCC >
264
+ bufferization.dealloc_tensor %i : tensor <4 x8 xi32 , #BSR0 >
265
+ bufferization.dealloc_tensor %j : tensor <4 x8 xi32 , #BSC0 >
212
266
213
267
return
214
268
}
0 commit comments