1 ================================================================================
2 affine_map with indexing and sum
3 ================================================================================
4 #inline_map_minmax_loop2 = affine_map<()[s0] -> (100, s0 + 1)>
5 #map0 = affine_map<(i) -> ()>
6 #bound_map1 = affine_map<(i, j)[s] -> (i + j + s)>
7 --------------------------------------------------------------------------------
34 ================================================================================
36 ================================================================================
37 #set0 = affine_set<(i)[N, M] : (i >= 0, -i + N >= 0, N - 5 == 0, -i + M + 1 >= 0)>
38 --------------------------------------------------------------------------------
59 (integer_literal))))))
61 ================================================================================
62 affine.min and affine.max with non-trivial affine maps
63 ================================================================================
64 func.func @affine_min(%arg0 : index, %arg1 : index, %arg2 : index) {
65 %0 = affine.min affine_map<(d0)[s0] -> (1000, d0 + 512, s0)> (%arg0)[%arg1]
66 %1 = affine.min affine_map<(d0, d1)[s0] -> (d0 - d1, s0 + 512)> (%arg0, %arg1)[%arg2]
67 %2 = affine.min affine_map<()[s0, s1] -> (s0 - s1, 11)> ()[%arg1, %arg2]
68 %3 = affine.min affine_map<()[] -> (77, 78, 79)> ()[]
72 func.func @affine_max(%arg0 : index, %arg1 : index, %arg2 : index) {
73 %0 = affine.max affine_map<(d0)[s0] -> (1000, d0 + 512, s0)> (%arg0)[%arg1]
74 %1 = affine.max affine_map<(d0, d1)[s0] -> (d0 - d1, s0 + 512)> (%arg0, %arg1)[%arg2]
75 %2 = affine.max affine_map<()[s0, s1] -> (s0 - s1, 11)> ()[%arg1, %arg2]
76 %3 = affine.max affine_map<()[] -> (77, 78, 79)> ()[]
79 --------------------------------------------------------------------------------
160 (integer_literal)))))))
163 (func_dialect))))))))
242 (integer_literal)))))))
245 (func_dialect)))))))))
247 ================================================================================
248 affine.dma_start and affine.dma_wait with complicated affine expressions
249 ================================================================================
250 func.func @test4(%arg0 : index, %arg1 : index) {
251 %0 = memref.alloc() : memref<100x100xf32>
252 %1 = memref.alloc() : memref<100x100xf32, 2>
253 %2 = memref.alloc() : memref<1xi32>
254 %c64 = arith.constant 64 : index
255 affine.for %i0 = 0 to 10 {
256 affine.for %i1 = 0 to 10 {
257 affine.dma_start %0[(%i0 + symbol(%arg0)) floordiv 3, %i1],
258 %1[%i0, (%i1 + symbol(%arg1)) mod 9 + 7],
259 %2[%i0 + %i1 + 11], %c64
260 : memref<100x100xf32>, memref<100x100xf32, 2>, memref<1xi32>
261 affine.dma_wait %2[%i0 + %i1 + 11], %c64 : memref<1xi32>
266 --------------------------------------------------------------------------------
305 (integer_literal))))))))
315 (integer_type))))))))
371 (integer_literal)))))
376 (integer_type))))))))
389 (integer_type))))))))))))))))))
392 (func_dialect)))))))))
394 ================================================================================
395 affine_map with complex affine expression
396 ================================================================================
397 func.func @semiaffine_mod(%arg0: index, %arg1: index) -> index {
398 %a = affine.apply affine_map<(d0)[s0] ->((-((d0 floordiv s0) * s0) + s0 * s0) mod s0)> (%arg0)[%arg1]
402 func.func @semiaffine_floordiv(%arg0: index, %arg1: index) -> index {
403 %a = affine.apply affine_map<(d0)[s0] ->((-((d0 floordiv s0) * s0) + ((2 * s0) mod (3 * s0))) floordiv s0)> (%arg0)[%arg1]
406 --------------------------------------------------------------------------------
423 (type_list_attr_parens
453 (index_type)))))))))))
468 (type_list_attr_parens
500 (index_type))))))))))))