annotate mlir/test/AffineOps/memref-stride-calculation.mlir @ 164:fdfabb438fbf

...
author anatofuz
date Thu, 19 Mar 2020 17:02:53 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: mlir-opt %s -test-memref-stride-calculation -o /dev/null | FileCheck %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 func @f(%0: index) {
anatofuz
parents:
diff changeset
4 // CHECK-LABEL: Testing: f
anatofuz
parents:
diff changeset
5 %1 = alloc() : memref<3x4x5xf32>
anatofuz
parents:
diff changeset
6 // CHECK: MemRefType offset: 0 strides: 20, 5, 1
anatofuz
parents:
diff changeset
7 %2 = alloc(%0) : memref<3x4x?xf32>
anatofuz
parents:
diff changeset
8 // CHECK: MemRefType offset: 0 strides: ?, ?, 1
anatofuz
parents:
diff changeset
9 %3 = alloc(%0) : memref<3x?x5xf32>
anatofuz
parents:
diff changeset
10 // CHECK: MemRefType offset: 0 strides: ?, 5, 1
anatofuz
parents:
diff changeset
11 %4 = alloc(%0) : memref<?x4x5xf32>
anatofuz
parents:
diff changeset
12 // CHECK: MemRefType offset: 0 strides: 20, 5, 1
anatofuz
parents:
diff changeset
13 %5 = alloc(%0, %0) : memref<?x4x?xf32>
anatofuz
parents:
diff changeset
14 // CHECK: MemRefType offset: 0 strides: ?, ?, 1
anatofuz
parents:
diff changeset
15 %6 = alloc(%0, %0, %0) : memref<?x?x?xf32>
anatofuz
parents:
diff changeset
16 // CHECK: MemRefType offset: 0 strides: ?, ?, 1
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 %11 = alloc() : memref<3x4x5xf32, affine_map<(i, j, k)->(i, j, k)>>
anatofuz
parents:
diff changeset
19 // CHECK: MemRefType offset: 0 strides: 20, 5, 1
anatofuz
parents:
diff changeset
20 %b11 = alloc() : memref<3x4x5xf32, offset: 0, strides: [20, 5, 1]>
anatofuz
parents:
diff changeset
21 // CHECK: MemRefType offset: 0 strides: 20, 5, 1
anatofuz
parents:
diff changeset
22 %12 = alloc(%0) : memref<3x4x?xf32, affine_map<(i, j, k)->(i, j, k)>>
anatofuz
parents:
diff changeset
23 // CHECK: MemRefType offset: 0 strides: ?, ?, 1
anatofuz
parents:
diff changeset
24 %13 = alloc(%0) : memref<3x?x5xf32, affine_map<(i, j, k)->(i, j, k)>>
anatofuz
parents:
diff changeset
25 // CHECK: MemRefType offset: 0 strides: ?, 5, 1
anatofuz
parents:
diff changeset
26 %14 = alloc(%0) : memref<?x4x5xf32, affine_map<(i, j, k)->(i, j, k)>>
anatofuz
parents:
diff changeset
27 // CHECK: MemRefType offset: 0 strides: 20, 5, 1
anatofuz
parents:
diff changeset
28 %15 = alloc(%0, %0) : memref<?x4x?xf32, affine_map<(i, j, k)->(i, j, k)>>
anatofuz
parents:
diff changeset
29 // CHECK: MemRefType offset: 0 strides: ?, ?, 1
anatofuz
parents:
diff changeset
30 %16 = alloc(%0, %0, %0) : memref<?x?x?xf32, affine_map<(i, j, k)->(i, j, k)>>
anatofuz
parents:
diff changeset
31 // CHECK: MemRefType offset: 0 strides: ?, ?, 1
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 %21 = alloc()[%0] : memref<3x4x5xf32, affine_map<(i, j, k)[M]->(32 * i + 16 * j + M * k + 1)>>
anatofuz
parents:
diff changeset
34 // CHECK: MemRefType offset: 1 strides: 32, 16, ?
anatofuz
parents:
diff changeset
35 %22 = alloc()[%0] : memref<3x4x5xf32, affine_map<(i, j, k)[M]->(32 * i + M * j + 16 * k + 3)>>
anatofuz
parents:
diff changeset
36 // CHECK: MemRefType offset: 3 strides: 32, ?, 16
anatofuz
parents:
diff changeset
37 %b22 = alloc(%0)[%0, %0] : memref<3x4x?xf32, offset: 0, strides: [?, ?, 1]>
anatofuz
parents:
diff changeset
38 // CHECK: MemRefType offset: 0 strides: ?, ?, 1
anatofuz
parents:
diff changeset
39 %23 = alloc(%0)[%0] : memref<3x?x5xf32, affine_map<(i, j, k)[M]->(M * i + 32 * j + 16 * k + 7)>>
anatofuz
parents:
diff changeset
40 // CHECK: MemRefType offset: 7 strides: ?, 32, 16
anatofuz
parents:
diff changeset
41 %b23 = alloc(%0)[%0] : memref<3x?x5xf32, offset: 0, strides: [?, 5, 1]>
anatofuz
parents:
diff changeset
42 // CHECK: MemRefType offset: 0 strides: ?, 5, 1
anatofuz
parents:
diff changeset
43 %24 = alloc(%0)[%0] : memref<3x?x5xf32, affine_map<(i, j, k)[M]->(M * i + 32 * j + 16 * k + M)>>
anatofuz
parents:
diff changeset
44 // CHECK: MemRefType offset: ? strides: ?, 32, 16
anatofuz
parents:
diff changeset
45 %b24 = alloc(%0)[%0, %0] : memref<3x?x5xf32, offset: ?, strides: [?, 32, 16]>
anatofuz
parents:
diff changeset
46 // CHECK: MemRefType offset: ? strides: ?, 32, 16
anatofuz
parents:
diff changeset
47 %25 = alloc(%0, %0)[%0, %0] : memref<?x?x16xf32, affine_map<(i, j, k)[M, N]->(M * i + N * j + k + 1)>>
anatofuz
parents:
diff changeset
48 // CHECK: MemRefType offset: 1 strides: ?, ?, 1
anatofuz
parents:
diff changeset
49 %b25 = alloc(%0, %0)[%0, %0] : memref<?x?x16xf32, offset: 1, strides: [?, ?, 1]>
anatofuz
parents:
diff changeset
50 // CHECK: MemRefType offset: 1 strides: ?, ?, 1
anatofuz
parents:
diff changeset
51 %26 = alloc(%0)[] : memref<?xf32, affine_map<(i)[M]->(i)>>
anatofuz
parents:
diff changeset
52 // CHECK: MemRefType offset: 0 strides: 1
anatofuz
parents:
diff changeset
53 %27 = alloc()[%0] : memref<5xf32, affine_map<(i)[M]->(M)>>
anatofuz
parents:
diff changeset
54 // CHECK: MemRefType memref<5xf32, affine_map<(d0)[s0] -> (s0)>> cannot be converted to strided form
anatofuz
parents:
diff changeset
55 %28 = alloc()[%0] : memref<5xf32, affine_map<(i)[M]->(123)>>
anatofuz
parents:
diff changeset
56 // CHECK: MemRefType memref<5xf32, affine_map<(d0)[s0] -> (123)>> cannot be converted to strided form
anatofuz
parents:
diff changeset
57 %29 = alloc()[%0] : memref<f32, affine_map<()[M]->(M)>>
anatofuz
parents:
diff changeset
58 // CHECK: MemRefType offset: ? strides:
anatofuz
parents:
diff changeset
59 %30 = alloc()[%0] : memref<f32, affine_map<()[M]->(123)>>
anatofuz
parents:
diff changeset
60 // CHECK: MemRefType offset: 123 strides:
anatofuz
parents:
diff changeset
61
anatofuz
parents:
diff changeset
62 %100 = alloc(%0, %0)[%0, %0] : memref<?x?x16xf32, affine_map<(i, j, k)[M, N]->(i + j, j, k)>, affine_map<(i, j, k)[M, N]->(M * i + N * j + k + 1)>>
anatofuz
parents:
diff changeset
63 // CHECK: MemRefType memref<?x?x16xf32, affine_map<(d0, d1, d2)[s0, s1] -> (d0 + d1, d1, d2)>, affine_map<(d0, d1, d2)[s0, s1] -> (d0 * s0 + d1 * s1 + d2 + 1)>> cannot be converted to strided form
anatofuz
parents:
diff changeset
64 %101 = alloc() : memref<3x4x5xf32, affine_map<(i, j, k)->(i floordiv 4 + j + k)>>
anatofuz
parents:
diff changeset
65 // CHECK: MemRefType memref<3x4x5xf32, affine_map<(d0, d1, d2) -> (d0 floordiv 4 + d1 + d2)>> cannot be converted to strided form
anatofuz
parents:
diff changeset
66 %102 = alloc() : memref<3x4x5xf32, affine_map<(i, j, k)->(i ceildiv 4 + j + k)>>
anatofuz
parents:
diff changeset
67 // CHECK: MemRefType memref<3x4x5xf32, affine_map<(d0, d1, d2) -> (d0 ceildiv 4 + d1 + d2)>> cannot be converted to strided form
anatofuz
parents:
diff changeset
68 %103 = alloc() : memref<3x4x5xf32, affine_map<(i, j, k)->(i mod 4 + j + k)>>
anatofuz
parents:
diff changeset
69 // CHECK: MemRefType memref<3x4x5xf32, affine_map<(d0, d1, d2) -> (d0 mod 4 + d1 + d2)>> cannot be converted to strided form
anatofuz
parents:
diff changeset
70
anatofuz
parents:
diff changeset
71 %200 = alloc()[%0, %0, %0] : memref<3x4x5xf32, affine_map<(i, j, k)[M, N, K]->(M * i + N * i + N * j + K * k - (M + N - 20)* i)>>
anatofuz
parents:
diff changeset
72 // CHECK: MemRefType offset: 0 strides: 20, ?, ?
anatofuz
parents:
diff changeset
73 %201 = alloc()[%0, %0, %0] : memref<3x4x5xf32, affine_map<(i, j, k)[M, N, K]->(M * i + N * i + N * K * j + K * K * k - (M + N - 20) * (i + 1))>>
anatofuz
parents:
diff changeset
74 // CHECK: MemRefType offset: ? strides: 20, ?, ?
anatofuz
parents:
diff changeset
75 %202 = alloc()[%0, %0, %0] : memref<3x4x5xf32, affine_map<(i, j, k)[M, N, K]->(M * (i + 1) + j + k - M)>>
anatofuz
parents:
diff changeset
76 // CHECK: MemRefType offset: 0 strides: ?, 1, 1
anatofuz
parents:
diff changeset
77 %203 = alloc()[%0, %0, %0] : memref<3x4x5xf32, affine_map<(i, j, k)[M, N, K]->(M + M * (i + N * (j + K * k)))>>
anatofuz
parents:
diff changeset
78 // CHECK: MemRefType offset: ? strides: ?, ?, ?
anatofuz
parents:
diff changeset
79
anatofuz
parents:
diff changeset
80 return
anatofuz
parents:
diff changeset
81 }