Lines Matching refs:memref

14 func @dot(%x: memref<?xf32, offset: ?, strides: [1]>,
15 %y: memref<?xf32, offset: ?, strides: [1]>,
16 %v: memref<f32>) {
18 ins(%x, %y: memref<?xf32, offset: ?, strides: [1]>,
19 memref<?xf32, offset: ?, strides: [1]>)
20 outs(%v: memref<f32>)
37 func @matvec(%A: memref<?x?xf32, offset: ?, strides: [?, 1]>,
38 %x: memref<?xf32, offset: ?, strides: [1]>,
39 %y: memref<?xf32, offset: ?, strides: [1]>) {
41 ins(%A, %x: memref<?x?xf32, offset: ?, strides: [?, 1]>,
42 memref<?xf32, offset: ?, strides: [1]>)
43 outs(%y: memref<?xf32, offset: ?, strides: [1]>)
53 // CHECK: ins({{.*}}, {{.*}}: memref<?x?xf32, #[[$STRIDED_2D]]>, memref<?xf32, #[[$ST…
54 // CHECK: outs({{.*}}: memref<?xf32, #[[$STRIDED_1D]]>)
56 func @matmul(%A: memref<?x?xf32, offset: ?, strides: [?, 1]>,
57 %B: memref<?x?xf32, offset: ?, strides: [?, 1]>,
58 %C: memref<?x?xf32, offset: ?, strides: [?, 1]>) {
60 ins(%A, %B: memref<?x?xf32, offset: ?, strides: [?, 1]>,
61 memref<?x?xf32, offset: ?, strides: [?, 1]>)
62 outs(%C: memref<?x?xf32, offset: ?, strides: [?, 1]>)
92 …: ins({{.*}}, {{.*}}: memref<?x?xf32, #[[$STRIDED_2D]]>, memref<…
93 // CHECK: outs({{.*}}: memref<?x?xf32, #[[$STRIDED_2D]]>)
106 func @vectorization_test(%A: memref<8x16xf32>, %B: memref<16x32xf32>,
107 %C: memref<8x32xf32>) {
109 ins(%A, %B : memref<8x16xf32>, memref<16x32xf32>)
110 outs(%C : memref<8x32xf32>) {
119 // CHECK: vector.transfer_read %{{.*}} : memref<8x16xf32>, vector<8x16xf32>
120 // CHECK: vector.transfer_read %{{.*}} : memref<16x32xf32>, vector<16x32xf32>
121 // CHECK: vector.transfer_read %{{.*}} : memref<8x32xf32>, vector<8x32xf32>
123 // CHECK: vector.transfer_write %{{.*}}, %{{.*}} : vector<8x32xf32>, memref<8x32xf32>
125 func @vectorization_test_integer(%A: memref<8x16xi32>, %B: memref<16x32xi32>,
126 %C: memref<8x32xi32>) {
128 ins(%A, %B : memref<8x16xi32>, memref<16x32xi32>)
129 outs(%C : memref<8x32xi32>) {
138 // CHECK: vector.transfer_read %{{.*}} : memref<8x16xi32>, vector<8x16xi32>
139 // CHECK: vector.transfer_read %{{.*}} : memref<16x32xi32>, vector<16x32xi32>
140 // CHECK: vector.transfer_read %{{.*}} : memref<8x32xi32>, vector<8x32xi32>
142 // CHECK: vector.transfer_write %{{.*}}, %{{.*}} : vector<8x32xi32>, memref<8x32xi32>
144 func @vectorization_test_2(%A: memref<8x16xf32>, %B: memref<16x32xf32>,
145 %C: memref<8x32xf32>) {
147 ins(%A, %B: memref<8x16xf32>, memref<16x32xf32>)
148 outs(%C: memref<8x32xf32>)
155 func @test_vectorize_fill(%A : memref<8x16xf32>, %arg0 : f32) {
156 linalg.fill(%A, %arg0) { __internal_linalg_transform__ = "VECTORIZE"} : memref<8x16xf32>, f32
161 // CHECK: vector.transfer_write %[[V]], {{.*}} : vector<8x16xf32>, memref<8x16xf32>
163 func @test_vectorize_fill_scalar(%A : memref<f32>, %arg0 : f32) {
164 linalg.fill(%A, %arg0) { __internal_linalg_transform__ = "VECTORIZE"} : memref<f32>, f32
168 // CHECK-SAME: (%[[M:.*]]: memref<f32>, %[[V:.*]]: f32)
169 // CHECK: store %[[V]], %[[M]][] : memref<f32>
171 func @test_vectorize_copy(%A : memref<8x16xf32>, %B : memref<8x16xf32>) {
172 …linalg.copy(%A, %B) { __internal_linalg_transform__ = "VECTORIZE"} : memref<8x16xf32>, memref<8x1…
176 // CHECK: %[[V:.*]] = vector.transfer_read {{.*}} : memref<8x16xf32>, vector<8x16xf32>
177 // CHECK: vector.transfer_write %[[V]], {{.*}} : vector<8x16xf32>, memref<8x16xf32>
179 func @test_vectorize_copy_scalar(%A : memref<f32>, %B : memref<f32>) {
180 linalg.copy(%A, %B) { __internal_linalg_transform__ = "VECTORIZE"} : memref<f32>, memref<f32>
184 // CHECK: %[[V:.*]] = load {{.*}} : memref<f32>
185 // CHECK: store %[[V]], {{.*}} : memref<f32>
200 func @permute_generic(%A: memref<?x?xf32, offset: ?, strides: [?, 1]>,
201 %B: memref<?x?xf32, offset: ?, strides: [?, 1]>,
202 %C: memref<?x?xf32, offset: ?, strides: [?, 1]>) {
204 ins(%A, %B : memref<?x?xf32, offset: ?, strides: [?, 1]>,
205 memref<?x?xf32, offset: ?, strides: [?, 1]>)
206 outs(%C : memref<?x?xf32, offset: ?, strides: [?, 1]>) {
219 // CHECK: memref<?x?xf32, #[[$STRIDED_2D_u_1]]>,
220 // CHECK-SAME: memref<?x?xf32, #[[$STRIDED_2D_u_1]]>
221 // CHECK-SAME: memref<?x?xf32, #[[$STRIDED_2D_u_1]]>
231 %A: memref<?x?xf32, offset: ?, strides: [?, 1]>,
232 %B: memref<?x?xf32, offset: ?, strides: [?, 1]>,
233 %C: memref<?x?xf32, offset: ?, strides: [?, 1]>) {
235 ins(%A, %B : memref<?x?xf32, offset: ?, strides: [?, 1]>,
236 memref<?x?xf32, offset: ?, strides: [?, 1]>)
237 outs(%C : memref<?x?xf32, offset: ?, strides: [?, 1]>) {
250 // CHECK: memref<?x?xf32, #[[$STRIDED_2D_u_1]]>,
251 // CHECK-SAME: memref<?x?xf32, #[[$STRIDED_2D_u_1]]>
252 // CHECK-SAME: memref<?x?xf32, #[[$STRIDED_2D_u_1]]>
254 func @matvec_perm(%A: memref<?x?xf32, offset: ?, strides: [?, 1]>,
255 %x: memref<?xf32, offset: ?, strides: [1]>,
256 %y: memref<?xf32, offset: ?, strides: [1]>) {
258 ins(%A, %x: memref<?x?xf32, offset: ?, strides: [?, 1]>,
259 memref<?xf32, offset: ?, strides: [1]>)
260 outs(%y: memref<?xf32, offset: ?, strides: [1]>)
270 // CHECK: ins({{.*}}, {{.*}}: memref<?x?xf32, #[[$STRIDED_2D]]>, memref<?xf32, #[[$ST…
271 // CHECK: outs({{.*}}: memref<?xf32, #[[$STRIDED_1D]]>)
273 func @matmul_perm(%A: memref<?x?xf32, offset: ?, strides: [?, 1]>,
274 %B: memref<?x?xf32, offset: ?, strides: [?, 1]>,
275 %C: memref<?x?xf32, offset: ?, strides: [?, 1]>) {
277 ins(%A, %B: memref<?x?xf32, offset: ?, strides: [?, 1]>,
278 memref<?x?xf32, offset: ?, strides: [?, 1]>)
279 outs(%C : memref<?x?xf32, offset: ?, strides: [?, 1]>)
303 …K: ins({{.*}}, {{.*}}: memref<?x?xf32, #[[$STRIDED_2D]]>, memref<…
304 // CHECK: outs({{.*}}: memref<?x?xf32, #[[$STRIDED_2D]]>)
306 func @promote_subview_matmul(%arg0: memref<?x?xf32, offset: ?, strides: [?, 1]>,
307 %arg1: memref<?x?xf32, offset: ?, strides: [?, 1]>,
308 %arg2: memref<?x?xf32, offset: ?, strides: [?, 1]>) {
314 %0 = dim %arg0, %c0 : memref<?x?xf32, offset: ?, strides: [?, 1]>
315 %1 = dim %arg0, %c1 : memref<?x?xf32, offset: ?, strides: [?, 1]>
316 %2 = dim %arg1, %c1 : memref<?x?xf32, offset: ?, strides: [?, 1]>
321memref<?x?xf32, offset: ?, strides: [?, 1]> to memref<?x?xf32, offset: ?, strides: [?, ?]>
323memref<?x?xf32, offset: ?, strides: [?, 1]> to memref<?x?xf32, offset: ?, strides: [?, ?]>
325memref<?x?xf32, offset: ?, strides: [?, 1]> to memref<?x?xf32, offset: ?, strides: [?, ?]>
327 ins(%3, %4: memref<?x?xf32, offset: ?, strides: [?, ?]>,
328 memref<?x?xf32, offset: ?, strides: [?, ?]>)
329 outs(%5: memref<?x?xf32, offset: ?, strides: [?, ?]>)
343 …{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32, #map{{.*}}> to memref<?x…
344 …{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32, #map{{.*}}> to memref<?x…
345 …{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32, #map{{.*}}> to memref<?x…
346 // CHECK: %[[a0:.*]] = alloc({{%.*}}) : memref<?xi8>
347 … %[[v0:.*]] = std.view %[[a0]][{{.*}}][{{%.*}}, {{%.*}}] : memref<?xi8> to memref<?x?xf32>
348 …0:.*]] = subview %[[v0]][{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32> to memref<?x?xf32,…
349 // CHECK: %[[a1:.*]] = alloc({{%.*}}) : memref<?xi8>
350 … %[[v1:.*]] = std.view %[[a1]][{{.*}}][{{%.*}}, {{%.*}}] : memref<?xi8> to memref<?x?xf32>
351 …1:.*]] = subview %[[v1]][{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32> to memref<?x?xf32,…
352 // CHECK: %[[a2:.*]] = alloc({{%.*}}) : memref<?xi8>
353 … %[[v2:.*]] = std.view %[[a2]][{{.*}}][{{%.*}}, {{%.*}}] : memref<?xi8> to memref<?x?xf32>
354 …2:.*]] = subview %[[v2]][{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32> to memref<?x?xf32,…
355 // CHECK: linalg.copy(%[[s0]], %[[l0]]) : memref<?x?xf32, #map{{.*}}>, memref<?x?xf32…
356 // CHECK: linalg.copy(%[[s1]], %[[l1]]) : memref<?x?xf32, #map{{.*}}>, memref<?x?xf32…
357 // CHECK: linalg.copy(%[[s2]], %[[l2]]) : memref<?x?xf32, #map{{.*}}>, memref<?x?xf32…
359 // CHECK-SAME: ins(%[[v0]], %[[v1]] : memref<?x?xf32>, memref<?x?xf32>)
360 // CHECK-SAME: outs(%[[v2]] : memref<?x?xf32>)
362 func @promote_first_subview_matmul(%arg0: memref<?x?xf32, offset: ?, strides: [?, 1]>,
363 %arg1: memref<?x?xf32, offset: ?, strides: [?, 1]>,
364 %arg2: memref<?x?xf32, offset: ?, strides: [?, 1]>) {
370 %0 = dim %arg0, %c0 : memref<?x?xf32, offset: ?, strides: [?, 1]>
371 %1 = dim %arg0, %c1 : memref<?x?xf32, offset: ?, strides: [?, 1]>
372 %2 = dim %arg1, %c1 : memref<?x?xf32, offset: ?, strides: [?, 1]>
377memref<?x?xf32, offset: ?, strides: [?, 1]> to memref<?x?xf32, offset: ?, strides: [?, ?]>
379memref<?x?xf32, offset: ?, strides: [?, 1]> to memref<?x?xf32, offset: ?, strides: [?, ?]>
381memref<?x?xf32, offset: ?, strides: [?, 1]> to memref<?x?xf32, offset: ?, strides: [?, ?]>
383 ins(%3, %4: memref<?x?xf32, offset: ?, strides: [?, ?]>,
384 memref<?x?xf32, offset: ?, strides: [?, ?]>)
385 outs(%5: memref<?x?xf32, offset: ?, strides: [?, ?]>)
399 …{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32, #map{{.*}}> to memref<?x…
400 …{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32, #map{{.*}}> to memref<?x…
401 …{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32, #map{{.*}}> to memref<?x…
402 // CHECK: %[[a0:.*]] = alloc({{%.*}}) : memref<?xi8>
403 // CHECK: %[[v0:.*]] = std.view %[[a0]][{{.*}}][{{%.*}}, {{%.*}}] : memref<?xi8> to memref<…
404 …[v0]][{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32> to memref<?x?xf32,…
405 // CHECK-NOT: %[[a1:.*]] = alloc({{%.*}}) : memref<?xi8>
406 // CHECK-NOT: %[[v1:.*]] = std.view %[[a1]][{{.*}}][{{%.*}}, {{%.*}}] : memref<?xi8> to memref<…
407 …[v1]][{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32> to memref<?x?xf32,…
408 // CHECK-NOT: %[[a2:.*]] = alloc({{%.*}}) : memref<?xi8>
409 // CHECK-NOT: %[[v2:.*]] = std.view %[[a2]][{{.*}}][{{%.*}}, {{%.*}}] : memref<?xi8> to memref<…
410 …[v2]][{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32> to memref<?x?xf32,…
411 // CHECK: linalg.copy(%[[s0]], %[[l0]]) : memref<?x?xf32, #map{{.*}}>, memref<?x?xf32, #map…
412 // CHECK-NOT: linalg.copy(%[[s1]], %[[l1]]) : memref<?x?xf32, #map{{.*}}>, memref<?x?xf32, #map…
413 // CHECK-NOT: linalg.copy(%[[s2]], %[[l2]]) : memref<?x?xf32, #map{{.*}}>, memref<?x?xf32, #map…
415 // CHECK-SAME: ins(%[[v0]], %[[s1]] : memref<?x?xf32>, memref<?x?xf32, #[[$STRIDED_2D]]>)
416 // CHECK-SAME: outs(%[[s2]] : memref<?x?xf32, #[[$STRIDED_2D]]>)
418 func @aligned_promote_fill(%arg0: memref<?x?xf32, offset: ?, strides: [?, 1]>) {
425 memref<?x?xf32, offset: ?, strides: [?, 1]> to memref<?x?xf32, offset: ?, strides: [?, ?]>
427 : memref<?x?xf32, offset: ?, strides: [?, ?]>, f32
432 …{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32, #map{{.*}}> to memref<?x…
433 // CHECK: %[[a0:.*]] = alloc({{%.*}}) {alignment = 32 : i64} : memref<?xi8>
434 // CHECK: %[[v0:.*]] = std.view %[[a0]][{{.*}}][{{%.*}}, {{%.*}}] : memref<?xi8> to memref<…
435 …0:.*]] = subview %[[v0]][{{%.*}}, {{%.*}}] [{{%.*}}, {{%.*}}] : memref<?x?xf32> to memref<?x?xf32,…
436 // CHECK: linalg.fill(%[[v0]], {{%.*}}) : memref<?x?xf32>, f32
437 // CHECK: linalg.copy(%[[s0]], %[[l0]]) : memref<?x?xf32, #map{{.*}}>, memref<?x?xf32, #map…
438 // CHECK: linalg.fill(%[[v0]], %[[cf]]) : memref<?x?xf32>, f32
440 func @tile_permute_parallel_loop(%arg0: memref<?x?xf32>,
441 %arg1: memref<?x?xf32>,
442 %arg2: memref<?x?xf32>) {
444 ins(%arg0, %arg1: memref<?x?xf32>, memref<?x?xf32>)
445 outs(%arg2: memref<?x?xf32>)
449 // CHECK-SAME: %[[ARG0:[a-zA-Z0-9_]+]]: memref<?x?xf32>
450 // CHECK-SAME: %[[ARG1:[a-zA-Z0-9_]+]]: memref<?x?xf32>
451 // CHECK-SAME: %[[ARG2:[a-zA-Z0-9_]+]]: memref<?x?xf32>