45
45
crdWidth = 8
46
46
}>
47
47
48
+ #NV_58 = #sparse_tensor.encoding <{
49
+ map = ( i , j ) -> ( i : dense ,
50
+ j floordiv 8 : dense ,
51
+ j mod 8 : structured[5 , 8 ]),
52
+ crdWidth = 8
53
+ }>
54
+
48
55
module {
49
56
50
57
func.func private @getTensorFilename (index ) -> (!Filename )
@@ -65,6 +72,7 @@ module {
65
72
%A1 = sparse_tensor.new %fileName : !Filename to tensor <?x?xf64 , #CSR >
66
73
%A2 = sparse_tensor.new %fileName : !Filename to tensor <?x?xf64 , #CSR_hi >
67
74
%A3 = sparse_tensor.new %fileName : !Filename to tensor <?x?xf64 , #NV_24 >
75
+ %A4 = sparse_tensor.new %fileName : !Filename to tensor <?x?xf64 , #NV_58 >
68
76
69
77
//
70
78
// CSR:
@@ -113,10 +121,24 @@ module {
113
121
%vecv3 = vector.transfer_read %val3 [%c0 ], %f0 : memref <?xf64 >, vector <12 xf64 >
114
122
vector.print %vecv3 : vector <12 xf64 >
115
123
124
+ //
125
+ // NV_58
126
+ //
127
+ // CHECK-NEXT: ( 2, 3, 5, 7, 1, 2, 4, 7, 0, 2, 4, 5 )
128
+ // CHECK-NEXT: ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 )
129
+ //
130
+ %crd4 = sparse_tensor.coordinates %A4 {level = 2 : index } : tensor <?x?xf64 , #NV_58 > to memref <?xi8 >
131
+ %vecc4 = vector.transfer_read %crd4 [%c0 ], %u0 : memref <?xi8 >, vector <12 xi8 >
132
+ vector.print %vecc4 : vector <12 xi8 >
133
+ %val4 = sparse_tensor.values %A4 : tensor <?x?xf64 , #NV_58 > to memref <?xf64 >
134
+ %vecv4 = vector.transfer_read %val4 [%c0 ], %f0 : memref <?xf64 >, vector <12 xf64 >
135
+ vector.print %vecv4 : vector <12 xf64 >
136
+
116
137
// Release the resources.
117
138
bufferization.dealloc_tensor %A1: tensor <?x?xf64 , #CSR >
118
139
bufferization.dealloc_tensor %A2: tensor <?x?xf64 , #CSR_hi >
119
140
bufferization.dealloc_tensor %A3: tensor <?x?xf64 , #NV_24 >
141
+ bufferization.dealloc_tensor %A4: tensor <?x?xf64 , #NV_58 >
120
142
121
143
return
122
144
}
0 commit comments