1// RUN: mlir-opt -allow-unregistered-dialect %s | FileCheck %s 2 3// Identity maps used in trivial compositions in MemRefs are optimized away. 4#map0 = affine_map<(i, j) -> (i, j)> 5#map1 = affine_map<(i, j)[s0] -> (i, j)> 6 7// CHECK: #map{{[0-9]*}} = affine_map<() -> (0)> 8// A map may have 0 inputs. 9// However, an affine.apply always takes at least one input. 10#map2 = affine_map<() -> (0)> 11 12// All the maps in the following block are equivalent and are unique'd as one 13// map. Therefore there should be only one output and we explicitly CHECK-NOT 14// for the others. 15// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0 + 1, d1 * 4 + 2)> 16#map3 = affine_map<(i, j) -> (i+1, 4*j + 2)> 17// CHECK-NOT: #map3{{[a-z]}} 18#map3a = affine_map<(i, j) -> (1+i, 4*j + 2)> 19#map3b = affine_map<(i, j) -> (2 + 3 - 2*2 + i, 4*j + 2)> 20#map3c = affine_map<(i, j) -> (i +1 + 0, 4*j + 2)> 21#map3d = affine_map<(i, j) -> (i + 3 + 2 - 4, 4*j + 2)> 22#map3e = affine_map<(i, j) -> (1*i+3*2-2*2-1, 4*j + 2)> 23#map3f = affine_map<(i, j) -> (i + 1, 4*j*1 + 2)> 24#map3g = affine_map<(i, j) -> (i + 1, 2*2*j + 2)> 25#map3h = affine_map<(i, j) -> (i + 1, 2*j*2 + 2)> 26#map3i = affine_map<(i, j) -> (i + 1, j*2*2 + 2)> 27#map3j = affine_map<(i, j) -> (i + 1, j*1*4 + 2)> 28#map3k = affine_map<(i, j) -> (i + 1, j*4*1 + 2)> 29 30// The following reduction should be unique'd out too but such expression 31// simplification is not performed for IR parsing, but only through analyses 32// and transforms. 33// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d1 - d0 + (d0 - d1 + 1) * 2 + d1 - 1, d1 * 4 + 2)> 34#map3l = affine_map<(i, j) -> ((j - i) + 2*(i - j + 1) + j - 1 + 0, j + j + 1 + j + j + 1)> 35 36// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0 + 2, d1)> 37#map4 = affine_map<(i, j) -> (3+3-2*2+i, j)> 38 39// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + s0, d1)> 40#map5 = affine_map<(i, j)[s0] -> (i + s0, j)> 41 42// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + s0, d1 + 5)> 43#map6 = affine_map<(i, j)[s0] -> (i + s0, j + 5)> 44 45// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + d1 + s0, d1)> 46#map7 = affine_map<(i, j)[s0] -> (i + j + s0, j)> 47 48// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + d1 + s0 + 5, d1)> 49#map8 = affine_map<(i, j)[s0] -> (5 + i + j + s0, j)> 50 51// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + d1 + 5, d1)> 52#map9 = affine_map<(i, j)[s0] -> ((i + j) + 5, j)> 53 54// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + d1 + 5, d1)> 55#map10 = affine_map<(i, j)[s0] -> (i + (j + 5), j)> 56 57// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 * 2, d1 * 3)> 58#map11 = affine_map<(i, j)[s0] -> (2*i, 3*j)> 59 60// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + (d1 + s0 * 3) * 5 + 12, d1)> 61#map12 = affine_map<(i, j)[s0] -> (i + 2*6 + 5*(j+s0*3), j)> 62 63// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 * 5 + d1, d1)> 64#map13 = affine_map<(i, j)[s0] -> (5*i + j, j)> 65 66// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + d1, d1)> 67#map14 = affine_map<(i, j)[s0] -> ((i + j), (j))> 68 69// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + d1 + 7, d1 + 3)> 70#map15 = affine_map<(i, j)[s0] -> ((i + j + 2) + 5, (j)+3)> 71 72// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0, 0)> 73#map16 = affine_map<(i, j)[s1] -> (i, 0)> 74 75// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0, d1 * s0)> 76#map17 = affine_map<(i, j)[s0] -> (i, s0*j)> 77 78// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0, d0 * 3 + d1)> 79#map19 = affine_map<(i, j) -> (i, 3*i + j)> 80 81// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0, d0 + d1 * 3)> 82#map20 = affine_map<(i, j) -> (i, i + 3*j)> 83 84// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0, d0 * ((s0 * s0) * 9) + 3)> 85#map18 = affine_map<(i, j)[N] -> (i, 2 + N*N*9*i + 1)> 86 87// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (1, d0 + d1 * 3 + 5)> 88#map21 = affine_map<(i, j) -> (1, i + 3*j + 5)> 89 90// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (s0 * 5, d0 + d1 * 3 + d0 * 5)> 91#map22 = affine_map<(i, j)[s0] -> (5*s0, i + 3*j + 5*i)> 92 93// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0 * (s0 * s1), d1)> 94#map23 = affine_map<(i, j)[s0, s1] -> (i*(s0*s1), j)> 95 96// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0, d1 mod 5)> 97#map24 = affine_map<(i, j)[s0, s1] -> (i, j mod 5)> 98 99// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0, d1 floordiv 5)> 100#map25 = affine_map<(i, j)[s0, s1] -> (i, j floordiv 5)> 101 102// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0, d1 ceildiv 5)> 103#map26 = affine_map<(i, j)[s0, s1] -> (i, j ceildiv 5)> 104 105// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0, d0 - d1 - 5)> 106#map29 = affine_map<(i, j)[s0, s1] -> (i, i - j - 5)> 107 108// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0, d0 - d1 * s1 + 2)> 109#map30 = affine_map<(i, j)[M, N] -> (i, i - N*j + 2)> 110 111// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0 * -5, d1 * -3, -2, -(d0 + d1), -s0)> 112#map32 = affine_map<(i, j)[s0, s1] -> (-5*i, -3*j, -2, -1*(i+j), -1*s0)> 113 114// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (-4, -d0)> 115#map33 = affine_map<(i, j) -> (-2+-5-(-3), -1*i)> 116 117// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0, d1 floordiv s0, d1 mod s0)> 118#map34 = affine_map<(i, j)[s0, s1] -> (i, j floordiv s0, j mod s0)> 119 120// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1, d2)[s0, s1, s2] -> ((d0 * s1) * s2 + d1 * s1 + d2)> 121#map35 = affine_map<(i, j, k)[s0, s1, s2] -> (i*s1*s2 + j*s1 + k)> 122 123// Constant folding. 124// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (8, 4, 1, 3, 2, 4)> 125#map36 = affine_map<(i, j) -> (5+3, 2*2, 8-7, 100 floordiv 32, 5 mod 3, 10 ceildiv 3)> 126// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (4, 11, 512, 15)> 127#map37 = affine_map<(i, j) -> (5 mod 3 + 2, 5*3 - 4, 128 * (500 ceildiv 128), 40 floordiv 7 * 3)> 128 129// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0 * 2 + 1, d1 + 2)> 130#map38 = affine_map<(i, j) -> (1 + i*2, 2 + j)> 131 132// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (d0 * s0, d0 + s0, d0 + 2, d1 * 2, s1 * 2, s0 + 2)> 133#map39 = affine_map<(i, j)[M, N] -> (i*M, M + i, 2+i, j*2, N*2, 2 + M)> 134 135// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> ((d0 * 5) floordiv 4, (d1 ceildiv 7) mod s0)> 136#map43 = affine_map<(i, j) [s0] -> ( i * 5 floordiv 4, j ceildiv 7 mod s0)> 137 138// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0 - d1 * 2, (d1 * 6) floordiv 4)> 139#map44 = affine_map<(i, j) -> (i - 2*j, j * 6 floordiv 4)> 140 141// Simplifications 142// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1, d2)[s0] -> (d0 + d1 + d2 + 1, d2 + d1, (d0 * s0) * 8)> 143#map45 = affine_map<(i, j, k) [N] -> (1 + i + 3 + j - 3 + k, k + 5 + j - 5, 2*i*4*N)> 144 145// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1, d2) -> (0, d1, d0 * 2, 0)> 146#map46 = affine_map<(i, j, k) -> (i*0, 1*j, i * 128 floordiv 64, j * 0 floordiv 64)> 147 148// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1, d2) -> (d0, d0 * 4, 0, 0, 0)> 149#map47 = affine_map<(i, j, k) -> (i * 64 ceildiv 64, i * 512 ceildiv 128, 4 * j mod 4, 4*j*4 mod 8, k mod 1)> 150 151// floordiv should resolve similarly to ceildiv and be unique'd out. 152// CHECK-NOT: #map48{{[a-z]}} 153#map48 = affine_map<(i, j, k) -> (i * 64 floordiv 64, i * 512 floordiv 128, 4 * j mod 4, 4*j*4 mod 8)> 154 155// Simplifications for mod using known GCD's of the LHS expr. 156// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (0, 0, 0, 1)> 157#map49 = affine_map<(i, j)[s0] -> ( (i * 4 + 8) mod 4, 32 * j * s0 * 8 mod 256, (4*i + (j * (s0 * 2))) mod 2, (4*i + 3) mod 2)> 158 159// Floordiv, ceildiv divide by one. 160// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 * 2 + 1, d1 + s0)> 161#map50 = affine_map<(i, j)[s0] -> ( (i * 2 + 1) ceildiv 1, (j + s0) floordiv 1)> 162 163// floordiv, ceildiv, and mod where LHS is negative. 164// CHECK: #map{{[0-9]*}} = affine_map<(d0) -> (-2, 1, -1)> 165#map51 = affine_map<(i) -> (-5 floordiv 3, -5 mod 3, -5 ceildiv 3)> 166 167// Parenthesis elision. 168// CHECK: #map{{[0-9]*}} = affine_map<(d0) -> (d0 * 16 - (d0 + 1) + 15)> 169#map52 = affine_map<(d0) -> (16*d0 + ((d0 + 1) * -1) + 15)> 170 171// CHECK: #map{{[0-9]*}} = affine_map<(d0) -> (d0 - (d0 + 1))> 172#map53 = affine_map<(d0) -> (d0 - (d0 + 1))> 173 174// CHECK: #map{{[0-9]*}} = affine_map<(d0)[s0] -> ((-s0) floordiv 4, d0 floordiv -1)> 175#map54 = affine_map<(d0)[s0] -> (-s0 floordiv 4, d0 floordiv -1)> 176 177// CHECK: #map{{[0-9]*}} = affine_map<() -> ()> 178#map55 = affine_map<() -> ()> 179 180// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0, d0 * 2 + d1 * 4 + 2, 1, 2, (d0 * 4) mod 8)> 181#map56 = affine_map<(d0, d1) -> ((4*d0 + 2) floordiv 4, (4*d0 + 8*d1 + 5) floordiv 2, (2*d0 + 4*d1 + 3) mod 2, (3*d0 - 4) mod 3, (4*d0 + 8*d1) mod 8)> 182 183// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d1, d0, 0)> 184#map57 = affine_map<(d0, d1) -> (d0 - d0 + d1, -d0 + d0 + d0, (1 + d0 + d1 floordiv 4) - (d0 + d1 floordiv 4 + 1))> 185 186// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0 * 3, (d0 + d1) * 2, d0 mod 2)> 187#map58 = affine_map<(d0, d1) -> (4*d0 - 2*d0 + d0, (d0 + d1) + (d0 + d1), 2 * (d0 mod 2) - d0 mod 2)> 188 189// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1) -> (d0 mod 5, (d1 mod 35) mod 4)> 190#map59 = affine_map<(d0, d1) -> ((d0 mod 35) mod 5, (d1 mod 35) mod 4)> 191 192// Check if parser can parse affine_map with identifiers that collide with 193// integer types. 194#map60 = affine_map<(i0, i1) -> (i0, i1)> 195 196// Check if parser can parse affine_map with identifiers that collide with 197// reserved keywords. 198// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (-d0 + s0, -d1 + s1)> 199#map61 = affine_map<(d0, d1)[step, loc] -> (step - d0, loc - d1)> 200 201// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (-d0 + s0 floordiv 2, -d1 + s1 mod 3)> 202#map62 = affine_map<(d0, d1)[mod, floordiv] -> (mod floordiv 2 - d0, floordiv mod 3 - d1)> 203 204// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0, s1] -> (-d0 + s1 floordiv 2, -d1 + s0 mod 3)> 205#map63 = affine_map<(d0, d1)[mod, floordiv] -> (floordiv floordiv 2 - d0, mod mod 3 - d1)> 206 207// CHECK: #map{{[0-9]*}} = affine_map<(d0, d1)[s0] -> (d0 + d1 + s0)> 208#map64 = affine_map<(i0, i1)[mod] -> (i0 + i1 + mod)> 209 210// Single identity maps are removed. 211// CHECK: @f0(memref<2x4xi8, 1>) 212func.func private @f0(memref<2x4xi8, #map0, 1>) 213 214// Single identity maps are removed. 215// CHECK: @f1(memref<2x4xi8, 1>) 216func.func private @f1(memref<2x4xi8, #map1, 1>) 217 218// CHECK: @f2(memref<i8, #map{{[0-9]*}}, 1>) 219func.func private @f2(memref<i8, #map2, 1>) 220 221// CHECK: @f3(memref<2x4xi8, #map{{[0-9]*}}, 1>) 222func.func private @f3(memref<2x4xi8, #map3, 1>) 223// CHECK: @f3a(memref<2x4xi8, #map{{[0-9]*}}, 1>) 224func.func private @f3a(memref<2x4xi8, #map3a, 1>) 225// CHECK: @f3b(memref<2x4xi8, #map{{[0-9]*}}, 1>) 226func.func private @f3b(memref<2x4xi8, #map3b, 1>) 227// CHECK: @f3c(memref<2x4xi8, #map{{[0-9]*}}, 1>) 228func.func private @f3c(memref<2x4xi8, #map3c, 1>) 229// CHECK: @f3d(memref<2x4xi8, #map{{[0-9]*}}, 1>) 230func.func private @f3d(memref<2x4xi8, #map3d, 1>) 231// CHECK: @f3e(memref<2x4xi8, #map{{[0-9]*}}, 1>) 232func.func private @f3e(memref<2x4xi8, #map3e, 1>) 233// CHECK: @f3f(memref<2x4xi8, #map{{[0-9]*}}, 1>) 234func.func private @f3f(memref<2x4xi8, #map3f, 1>) 235// CHECK: @f3g(memref<2x4xi8, #map{{[0-9]*}}, 1>) 236func.func private @f3g(memref<2x4xi8, #map3g, 1>) 237// CHECK: @f3h(memref<2x4xi8, #map{{[0-9]*}}, 1>) 238func.func private @f3h(memref<2x4xi8, #map3h, 1>) 239// CHECK: @f3i(memref<2x4xi8, #map{{[0-9]*}}, 1>) 240func.func private @f3i(memref<2x4xi8, #map3i, 1>) 241// CHECK: @f3j(memref<2x4xi8, #map{{[0-9]*}}, 1>) 242func.func private @f3j(memref<2x4xi8, #map3j, 1>) 243// CHECK: @f3k(memref<2x4xi8, #map{{[0-9]*}}, 1>) 244func.func private @f3k(memref<2x4xi8, #map3k, 1>) 245// CHECK: @f3l(memref<2x4xi8, #map{{[0-9]*}}, 1>) 246func.func private @f3l(memref<2x4xi8, #map3l, 1>) 247 248// CHECK: @f4(memref<2x4xi8, #map{{[0-9]*}}, 1>) 249func.func private @f4(memref<2x4xi8, #map4, 1>) 250 251// CHECK: @f5(memref<2x4xi8, #map{{[0-9]*}}, 1>) 252func.func private @f5(memref<2x4xi8, #map5, 1>) 253 254// CHECK: @f6(memref<2x4xi8, #map{{[0-9]*}}, 1>) 255func.func private @f6(memref<2x4xi8, #map6, 1>) 256 257// CHECK: @f7(memref<2x4xi8, #map{{[0-9]*}}, 1>) 258func.func private @f7(memref<2x4xi8, #map7, 1>) 259 260// CHECK: @f8(memref<2x4xi8, #map{{[0-9]*}}, 1>) 261func.func private @f8(memref<2x4xi8, #map8, 1>) 262 263// CHECK: @f9(memref<2x4xi8, #map{{[0-9]*}}, 1>) 264func.func private @f9(memref<2x4xi8, #map9, 1>) 265 266// CHECK: @f10(memref<2x4xi8, #map{{[0-9]*}}, 1>) 267func.func private @f10(memref<2x4xi8, #map10, 1>) 268 269// CHECK: @f11(memref<2x4xi8, #map{{[0-9]*}}, 1>) 270func.func private @f11(memref<2x4xi8, #map11, 1>) 271 272// CHECK: @f12(memref<2x4xi8, #map{{[0-9]*}}, 1>) 273func.func private @f12(memref<2x4xi8, #map12, 1>) 274 275// CHECK: @f13(memref<2x4xi8, #map{{[0-9]*}}, 1>) 276func.func private @f13(memref<2x4xi8, #map13, 1>) 277 278// CHECK: @f14(memref<2x4xi8, #map{{[0-9]*}}, 1>) 279func.func private @f14(memref<2x4xi8, #map14, 1>) 280 281// CHECK: @f15(memref<2x4xi8, #map{{[0-9]*}}, 1>) 282func.func private @f15(memref<2x4xi8, #map15, 1>) 283 284// CHECK: @f16(memref<2x4xi8, #map{{[0-9]*}}, 1>) 285func.func private @f16(memref<2x4xi8, #map16, 1>) 286 287// CHECK: @f17(memref<2x4xi8, #map{{[0-9]*}}, 1>) 288func.func private @f17(memref<2x4xi8, #map17, 1>) 289 290// CHECK: @f19(memref<2x4xi8, #map{{[0-9]*}}, 1>) 291func.func private @f19(memref<2x4xi8, #map19, 1>) 292 293// CHECK: @f20(memref<2x4xi8, #map{{[0-9]*}}, 1>) 294func.func private @f20(memref<2x4xi8, #map20, 1>) 295 296// CHECK: @f18(memref<2x4xi8, #map{{[0-9]*}}, 1>) 297func.func private @f18(memref<2x4xi8, #map18, 1>) 298 299// CHECK: @f21(memref<2x4xi8, #map{{[0-9]*}}, 1>) 300func.func private @f21(memref<2x4xi8, #map21, 1>) 301 302// CHECK: @f22(memref<2x4xi8, #map{{[0-9]*}}, 1>) 303func.func private @f22(memref<2x4xi8, #map22, 1>) 304 305// CHECK: @f23(memref<2x4xi8, #map{{[0-9]*}}, 1>) 306func.func private @f23(memref<2x4xi8, #map23, 1>) 307 308// CHECK: @f24(memref<2x4xi8, #map{{[0-9]*}}, 1>) 309func.func private @f24(memref<2x4xi8, #map24, 1>) 310 311// CHECK: @f25(memref<2x4xi8, #map{{[0-9]*}}, 1>) 312func.func private @f25(memref<2x4xi8, #map25, 1>) 313 314// CHECK: @f26(memref<2x4xi8, #map{{[0-9]*}}, 1>) 315func.func private @f26(memref<2x4xi8, #map26, 1>) 316 317// CHECK: @f29(memref<2x4xi8, #map{{[0-9]*}}, 1>) 318func.func private @f29(memref<2x4xi8, #map29, 1>) 319 320// CHECK: @f30(memref<2x4xi8, #map{{[0-9]*}}, 1>) 321func.func private @f30(memref<2x4xi8, #map30, 1>) 322 323// CHECK: @f32(memref<2x4xi8, #map{{[0-9]*}}, 1>) 324func.func private @f32(memref<2x4xi8, #map32, 1>) 325 326// CHECK: @f33(memref<2x4xi8, #map{{[0-9]*}}, 1>) 327func.func private @f33(memref<2x4xi8, #map33, 1>) 328 329// CHECK: @f34(memref<2x4xi8, #map{{[0-9]*}}, 1>) 330func.func private @f34(memref<2x4xi8, #map34, 1>) 331 332// CHECK: @f35(memref<2x4x4xi8, #map{{[0-9]*}}, 1>) 333func.func private @f35(memref<2x4x4xi8, #map35, 1>) 334 335// CHECK: @f36(memref<2x4xi8, #map{{[0-9]*}}, 1>) 336func.func private @f36(memref<2x4xi8, #map36, 1>) 337 338// CHECK: @f37(memref<2x4xi8, #map{{[0-9]*}}, 1>) 339func.func private @f37(memref<2x4xi8, #map37, 1>) 340 341// CHECK: @f38(memref<2x4xi8, #map{{[0-9]*}}, 1>) 342func.func private @f38(memref<2x4xi8, #map38, 1>) 343 344// CHECK: @f39(memref<2x4xi8, #map{{[0-9]*}}, 1>) 345func.func private @f39(memref<2x4xi8, #map39, 1>) 346 347// CHECK: @f43(memref<2x4xi8, #map{{[0-9]*}}>) 348func.func private @f43(memref<2x4xi8, #map43>) 349 350// CHECK: @f44(memref<2x4xi8, #map{{[0-9]*}}>) 351func.func private @f44(memref<2x4xi8, #map44>) 352 353// CHECK: @f45(memref<100x100x100xi8, #map{{[0-9]*}}>) 354func.func private @f45(memref<100x100x100xi8, #map45>) 355 356// CHECK: @f46(memref<100x100x100xi8, #map{{[0-9]*}}>) 357func.func private @f46(memref<100x100x100xi8, #map46>) 358 359// CHECK: @f47(memref<100x100x100xi8, #map{{[0-9]*}}>) 360func.func private @f47(memref<100x100x100xi8, #map47>) 361 362// CHECK: @f48(memref<100x100x100xi8, #map{{[0-9]*}}>) 363func.func private @f48(memref<100x100x100xi8, #map48>) 364 365// CHECK: @f49(memref<100x100xi8, #map{{[0-9]*}}>) 366func.func private @f49(memref<100x100xi8, #map49>) 367 368// CHECK: @f50(memref<100x100xi8, #map{{[0-9]*}}>) 369func.func private @f50(memref<100x100xi8, #map50>) 370 371// CHECK: @f51(memref<1xi8, #map{{[0-9]*}}>) 372func.func private @f51(memref<1xi8, #map51>) 373 374// CHECK: @f52(memref<1xi8, #map{{[0-9]*}}>) 375func.func private @f52(memref<1xi8, #map52>) 376 377// CHECK: @f53(memref<1xi8, #map{{[0-9]*}}>) 378func.func private @f53(memref<1xi8, #map53>) 379 380// CHECK: @f54(memref<10xi32, #map{{[0-9]*}}>) 381func.func private @f54(memref<10xi32, #map54>) 382 383// CHECK: "foo.op"() {map = #map{{[0-9]*}}} : () -> () 384"foo.op"() {map = #map55} : () -> () 385 386// CHECK: @f56(memref<1x1xi8, #map{{[0-9]*}}>) 387func.func private @f56(memref<1x1xi8, #map56>) 388 389// CHECK: "f57"() {map = #map{{[0-9]*}}} : () -> () 390"f57"() {map = #map57} : () -> () 391 392// CHECK: "f58"() {map = #map{{[0-9]*}}} : () -> () 393"f58"() {map = #map58} : () -> () 394 395// CHECK: "f59"() {map = #map{{[0-9]*}}} : () -> () 396"f59"() {map = #map59} : () -> () 397 398// CHECK: "f60"() {map = #map{{[0-9]*}}} : () -> () 399"f60"() {map = #map60} : () -> () 400 401// CHECK: "f61"() {map = #map{{[0-9]*}}} : () -> () 402"f61"() {map = #map61} : () -> () 403 404// CHECK: "f62"() {map = #map{{[0-9]*}}} : () -> () 405"f62"() {map = #map62} : () -> () 406 407// CHECK: "f63"() {map = #map{{[0-9]*}}} : () -> () 408"f63"() {map = #map63} : () -> () 409 410// CHECK: "f64"() {map = #map{{[0-9]*}}} : () -> () 411"f64"() {map = #map64} : () -> () 412