Lines Matching full:affine

1 // RUN: mlir-opt %s -allow-unregistered-dialect -affine-parallelize | FileCheck %s
2 // RUN: mlir-opt %s -allow-unregistered-dialect -affine-parallelize='max-nested=1' | FileCheck --ch…
3 // RUN: mlir-opt %s -allow-unregistered-dialect -affine-parallelize='parallel-reductions=1' | FileC…
10 affine.for %arg0 = 0 to 1 {
11 affine.for %arg1 = 0 to 8 {
12 affine.for %arg2 = 0 to 8 {
13 affine.for %arg3 = 0 to 64 {
14 affine.store %cst, %0[%arg0, %arg1, %arg2, %arg3] : memref<1x8x8x64xf32>
19 affine.for %arg0 = 0 to 1 {
20 affine.for %arg1 = 0 to 8 {
21 affine.for %arg2 = 0 to 8 {
22 affine.for %arg3 = 0 to 64 {
23 affine.for %arg4 = 0 to 1 {
24 affine.for %arg5 = 0 to 3 {
25 affine.for %arg6 = 0 to 3 {
26 affine.for %arg7 = 0 to 1 {
27 %2 = affine.load %0[%arg0, %arg1, %arg2, %arg3] : memref<1x8x8x64xf32>
28 …%3 = affine.load %1[%arg0 + %arg4, %arg1 * 2 + %arg5, %arg2 * 2 + %arg6, %arg3 + %arg7] : memref<1…
31 affine.store %5, %0[%arg0, %arg1, %arg2, %arg3] : memref<1x8x8x64xf32>
46 // CHECK: affine.parallel (%[[arg0:.*]]) = (0) to (1) {
47 // CHECK: affine.parallel (%[[arg1:.*]]) = (0) to (8) {
48 // CHECK: affine.parallel (%[[arg2:.*]]) = (0) to (8) {
49 // CHECK: affine.parallel (%[[arg3:.*]]) = (0) to (64) {
50 // CHECK: affine.store %[[cst]], %[[v0]][%[[arg0]], %[[arg1]], %[[arg2]], %[[arg3]]]…
55 // CHECK: affine.parallel (%[[a0:.*]]) = (0) to (1) {
56 // CHECK: affine.parallel (%[[a1:.*]]) = (0) to (8) {
57 // CHECK: affine.parallel (%[[a2:.*]]) = (0) to (8) {
58 // CHECK: affine.parallel (%[[a3:.*]]) = (0) to (64) {
59 // CHECK: affine.parallel (%[[a4:.*]]) = (0) to (1) {
60 // CHECK: affine.for %[[a5:.*]] = 0 to 3 {
61 // CHECK: affine.for %[[a6:.*]] = 0 to 3 {
62 // CHECK: affine.parallel (%[[a7:.*]]) = (0) to (1) {
63 // CHECK: %[[lhs:.*]] = affine.load %[[v0]][%[[a0]], %[[a1]], %[[a2]], %[[a3…
64 // CHECK: %[[rhs:.*]] = affine.load %[[v1]][%[[a0]] + %[[a4]], %[[a1]] * 2 +…
67 // CHECK: affine.store %[[sel]], %[[v0]][%[[a0]], %[[a1]], %[[a2]], %[[a3]]]…
82 affine.for %i = 0 to %N {
83 affine.for %j = 0 to %N {
84 %7 = affine.load %2[%i, %j] : memref<1024x1024xvector<64xf32>>
85 affine.for %k = 0 to %N {
86 %5 = affine.load %0[%i, %k] : memref<1024x1024xvector<64xf32>>
87 %6 = affine.load %1[%k, %j] : memref<1024x1024xvector<64xf32>>
90 affine.store %9, %2[%i, %j] : memref<1024x1024xvector<64xf32>>
97 // CHECK: affine.parallel (%[[arg1:.*]]) = (0) to (symbol(%arg0)) {
98 // CHECK-NEXT: affine.parallel (%[[arg2:.*]]) = (0) to (symbol(%arg0)) {
99 // CHECK: affine.for %[[arg3:.*]] = 0 to %arg0 {
103 affine.for %i = 0 to 10 {
104 // CHECK: affine.for %[[arg1:.*]] = 0 to 10 {
113 affine.for %i = 0 to 100 {
114 // CHECK: affine.for %{{.*}} = 0 to 100 {
123 // CHECK: affine.parallel (%{{.*}}) = (max(%{{.*}}, %{{.*}})) to (min(%{{.*}}, %{{.*}}))
124 affine.for %i = max affine_map<(d0, d1) -> (d0, d1)>(%lb0, %lb1)
126 affine.load %m[%i] : memref<?xf32>
134 // CHECK: affine.parallel (%[[I:.*]]) =
135 affine.for %j = 0 to 10 {
136 // CHECK: affine.parallel (%{{.*}}) = (max(%{{.*}}, %[[I]])) to (min(%{{.*}}, %{{.*}}))
137 affine.for %i = max affine_map<(d0, d1) -> (d0, d1)>(%lb0, %j)
139 affine.load %m[%i] : memref<?xf32>
148 // MAX-NESTED: affine.parallel
149 affine.for %i = affine_map<(d0) -> (d0)>(%lb0) to affine_map<(d0) -> (d0)>(%ub0) {
150 // MAX-NESTED: affine.for
151 affine.for %j = affine_map<(d0) -> (d0)>(%lb1) to affine_map<(d0) -> (d0)>(%ub1) {
152 affine.load %m[%i, %j] : memref<?x?xf32>
161 // MAX-NESTED: affine.parallel
162 affine.for %arg3 = 0 to 4096 {
163 // MAX-NESTED-NEXT: affine.for
164 affine.for %arg4 = 0 to 4096 {
165 // MAX-NESTED-NEXT: affine.for
166 affine.for %arg5 = 0 to 4096 {
167 %1 = affine.load %arg0[%arg3, %arg5] : memref<4096x4096xf32>
168 %2 = affine.load %arg1[%arg5, %arg4] : memref<4096x4096xf32>
169 %3 = affine.load %0[%arg3, %arg4] : memref<4096x4096xf32>
172 affine.store %5, %0[%arg3, %arg4] : memref<4096x4096xf32>
184 // CHECK-NOT: affine.parallel
185 // REDUCE: %[[reduced:.*]] = affine.parallel (%{{.*}}) = (0) to (10) reduce ("addf")
186 %final_red = affine.for %i = 0 to 10 iter_args(%red_iter = %cst) -> (f32) {
187 // REDUCE: %[[red_value:.*]] = affine.load
188 %ld = affine.load %in[%i] : memref<10xf32>
191 // REDUCE: affine.yield %[[red_value]]
192 affine.yield %add : f32
202 // CHECK: affine.parallel
203 affine.for %i = 0 to 20 {
204 // CHECK-NOT: affine.parallel
205 // REDUCE: affine.parallel
207 %final_red = affine.for %j = 0 to 10 iter_args(%red_iter = %cst) -> (f32) {
208 %ld = affine.load %in[%i, %j] : memref<20x10xf32>
210 affine.yield %add : f32
220 // REDUCE-NOT: affine.parallel
221 affine.for %i = 0 to 10 iter_args(%it1 = %cst1, %it2 = %cst2) -> (f32, f32) {
223 affine.yield %0, %0 : f32, f32
233 // REDUCE-NOT: affine.parallel
234 affine.for %i = 0 to 10 iter_args(%it1 = %cst1) -> (f32) {
236 affine.yield %0 : f32
247 // REDUCE-NOT: affine.parallel
248 affine.for %i = 0 to 10 iter_args(%it1 = %cst1, %it2 = %cst2) -> (f32, f32) {
251 affine.yield %1, %1 : f32, f32
261 // CHECK: affine.parallel (%[[J:.*]]) =
262 affine.for %j = 0 to 10 {
263 // CHECK: affine.parallel (%{{.*}}) = (max(%[[LB0]], %[[J]]))
265 affine.for %i = max affine_map<(d0, d1) -> (d0, d1)>(%lb0, %j)
267 affine.load %m[%i] : memref<?xf32>
278 affine.for %i = 0 to 100 {
281 affine.store %cst, %m[0] : memref<1xf32>
283 // CHECK: affine.parallel
290 affine.for %i = 0 to 100 {
292 affine.for %j = 0 to 128 {
293 affine.store %cst, %m[%j] : memref<128xf32>
295 affine.for %j = 0 to 128 {
296 affine.store %cst, %m[0] : memref<128xf32>
300 affine.for %j = 0 to 8 {
301 affine.store %cst, %r[%j, %j] : memref<8x16xf32>
304 // CHECK: affine.parallel
305 // CHECK: affine.parallel
307 // CHECK: affine.for
309 // CHECK: affine.parallel
320 // CHECK: affine.for
321 %mo = affine.for %i = 0 to 10 iter_args(%m_arg = %mi) -> (memref<f32>) {
322 affine.yield %m_arg : memref<f32>