module { memref.global "private" constant @__constant_1x4x5xi32_0 : memref<1x4x5xi32> = dense<-2522> {alignment = 64 : i64} memref.global "private" constant @__constant_1x4x5xi32 : memref<1x4x5xi32> = dense<7> {alignment = 64 : i64} func.func private @printMemrefI32(memref<*xi32>) func.func private @printMemrefF32(memref<*xf32>) func.func @entry(%arg0: index) { %0 = llvm.mlir.constant(3 : index) : i64 %1 = llvm.mlir.constant(2 : index) : i64 %2 = llvm.mlir.constant(1 : index) : i64 %3 = llvm.mlir.constant(0 : i32) : i32 %4 = llvm.mlir.constant(2 : i32) : i32 %5 = llvm.mlir.constant(1 : i32) : i32 %6 = llvm.mlir.constant(4 : index) : i64 %7 = llvm.mlir.constant(0 : index) : i64 %8 = builtin.unrealized_conversion_cast %7 : i64 to index %9 = builtin.unrealized_conversion_cast %6 : i64 to index %10 = builtin.unrealized_conversion_cast %2 : i64 to index %11 = builtin.unrealized_conversion_cast %1 : i64 to index %12 = builtin.unrealized_conversion_cast %0 : i64 to index %13 = memref.get_global @__constant_1x4x5xi32 : memref<1x4x5xi32> %14 = memref.get_global @__constant_1x4x5xi32_0 : memref<1x4x5xi32> %alloc = memref.alloc() {alignment = 64 : i64} : memref<1x4x5xi32> %reinterpret_cast = memref.reinterpret_cast %14 to offset: [0], sizes: [4, 5], strides: [5, 1] : memref<1x4x5xi32> to memref<4x5xi32> %reinterpret_cast_0 = memref.reinterpret_cast %alloc to offset: [0], sizes: [4, 5], strides: [5, 1] : memref<1x4x5xi32> to memref<4x5xi32> %15 = affine.load %reinterpret_cast[%8, %8] : memref<4x5xi32> %16 = llvm.intr.smax(%15, %3) : (i32, i32) -> i32 %17 = llvm.intr.smin(%16, %4) : (i32, i32) -> i32 affine.store %17, %reinterpret_cast_0[%8, %8] : memref<4x5xi32> %18 = affine.load %reinterpret_cast[%8, %10] : memref<4x5xi32> %19 = llvm.intr.smax(%18, %3) : (i32, i32) -> i32 %20 = llvm.intr.smin(%19, %4) : (i32, i32) -> i32 affine.store %20, %reinterpret_cast_0[%8, %10] : memref<4x5xi32> %21 = affine.load %reinterpret_cast[%8, %11] : memref<4x5xi32> %22 = llvm.intr.smax(%21, %3) : (i32, i32) -> i32 %23 = llvm.intr.smin(%22, %4) : (i32, i32) -> i32 affine.store %23, %reinterpret_cast_0[%8, %11] : memref<4x5xi32> %24 = affine.load %reinterpret_cast[%8, %12] : memref<4x5xi32> %25 = llvm.intr.smax(%24, %3) : (i32, i32) -> i32 %26 = llvm.intr.smin(%25, %4) : (i32, i32) -> i32 affine.store %26, %reinterpret_cast_0[%8, %12] : memref<4x5xi32> %27 = affine.load %reinterpret_cast[%8, %9] : memref<4x5xi32> %28 = llvm.intr.smax(%27, %3) : (i32, i32) -> i32 %29 = llvm.intr.smin(%28, %4) : (i32, i32) -> i32 affine.store %29, %reinterpret_cast_0[%8, %9] : memref<4x5xi32> %30 = affine.load %reinterpret_cast[%10, %8] : memref<4x5xi32> %31 = llvm.intr.smax(%30, %3) : (i32, i32) -> i32 %32 = llvm.intr.smin(%31, %4) : (i32, i32) -> i32 affine.store %32, %reinterpret_cast_0[%10, %8] : memref<4x5xi32> %33 = affine.load %reinterpret_cast[%10, %10] : memref<4x5xi32> %34 = llvm.intr.smax(%33, %3) : (i32, i32) -> i32 %35 = llvm.intr.smin(%34, %4) : (i32, i32) -> i32 affine.store %35, %reinterpret_cast_0[%10, %10] : memref<4x5xi32> %36 = affine.load %reinterpret_cast[%10, %11] : memref<4x5xi32> %37 = llvm.intr.smax(%36, %3) : (i32, i32) -> i32 %38 = llvm.intr.smin(%37, %4) : (i32, i32) -> i32 affine.store %38, %reinterpret_cast_0[%10, %11] : memref<4x5xi32> %39 = affine.load %reinterpret_cast[%10, %12] : memref<4x5xi32> %40 = llvm.intr.smax(%39, %3) : (i32, i32) -> i32 %41 = llvm.intr.smin(%40, %4) : (i32, i32) -> i32 affine.store %41, %reinterpret_cast_0[%10, %12] : memref<4x5xi32> %42 = affine.load %reinterpret_cast[%10, %9] : memref<4x5xi32> %43 = llvm.intr.smax(%42, %3) : (i32, i32) -> i32 %44 = llvm.intr.smin(%43, %4) : (i32, i32) -> i32 affine.store %44, %reinterpret_cast_0[%10, %9] : memref<4x5xi32> %45 = affine.load %reinterpret_cast[%11, %8] : memref<4x5xi32> %46 = llvm.intr.smax(%45, %3) : (i32, i32) -> i32 %47 = llvm.intr.smin(%46, %4) : (i32, i32) -> i32 affine.store %47, %reinterpret_cast_0[%11, %8] : memref<4x5xi32> %48 = affine.load %reinterpret_cast[%11, %10] : memref<4x5xi32> %49 = llvm.intr.smax(%48, %3) : (i32, i32) -> i32 %50 = llvm.intr.smin(%49, %4) : (i32, i32) -> i32 affine.store %50, %reinterpret_cast_0[%11, %10] : memref<4x5xi32> %51 = affine.load %reinterpret_cast[%11, %11] : memref<4x5xi32> %52 = llvm.intr.smax(%51, %3) : (i32, i32) -> i32 %53 = llvm.intr.smin(%52, %4) : (i32, i32) -> i32 affine.store %53, %reinterpret_cast_0[%11, %11] : memref<4x5xi32> %54 = affine.load %reinterpret_cast[%11, %12] : memref<4x5xi32> %55 = llvm.intr.smax(%54, %3) : (i32, i32) -> i32 %56 = llvm.intr.smin(%55, %4) : (i32, i32) -> i32 affine.store %56, %reinterpret_cast_0[%11, %12] : memref<4x5xi32> %57 = affine.load %reinterpret_cast[%11, %9] : memref<4x5xi32> %58 = llvm.intr.smax(%57, %3) : (i32, i32) -> i32 %59 = llvm.intr.smin(%58, %4) : (i32, i32) -> i32 affine.store %59, %reinterpret_cast_0[%11, %9] : memref<4x5xi32> %60 = affine.load %reinterpret_cast[%12, %8] : memref<4x5xi32> %61 = llvm.intr.smax(%60, %3) : (i32, i32) -> i32 %62 = llvm.intr.smin(%61, %4) : (i32, i32) -> i32 affine.store %62, %reinterpret_cast_0[%12, %8] : memref<4x5xi32> %63 = affine.load %reinterpret_cast[%12, %10] : memref<4x5xi32> %64 = llvm.intr.smax(%63, %3) : (i32, i32) -> i32 %65 = llvm.intr.smin(%64, %4) : (i32, i32) -> i32 affine.store %65, %reinterpret_cast_0[%12, %10] : memref<4x5xi32> %66 = affine.load %reinterpret_cast[%12, %11] : memref<4x5xi32> %67 = llvm.intr.smax(%66, %3) : (i32, i32) -> i32 %68 = llvm.intr.smin(%67, %4) : (i32, i32) -> i32 affine.store %68, %reinterpret_cast_0[%12, %11] : memref<4x5xi32> %69 = affine.load %reinterpret_cast[%12, %12] : memref<4x5xi32> %70 = llvm.intr.smax(%69, %3) : (i32, i32) -> i32 %71 = llvm.intr.smin(%70, %4) : (i32, i32) -> i32 affine.store %71, %reinterpret_cast_0[%12, %12] : memref<4x5xi32> %72 = affine.load %reinterpret_cast[%12, %9] : memref<4x5xi32> %73 = llvm.intr.smax(%72, %3) : (i32, i32) -> i32 %74 = llvm.intr.smin(%73, %4) : (i32, i32) -> i32 affine.store %74, %reinterpret_cast_0[%12, %9] : memref<4x5xi32> %alloc_1 = memref.alloc() {alignment = 64 : i64} : memref<1x4x5xi32> %reinterpret_cast_2 = memref.reinterpret_cast %13 to offset: [0], sizes: [4, 5], strides: [5, 1] : memref<1x4x5xi32> to memref<4x5xi32> %reinterpret_cast_3 = memref.reinterpret_cast %alloc to offset: [0], sizes: [4, 5], strides: [5, 1] : memref<1x4x5xi32> to memref<4x5xi32> %reinterpret_cast_4 = memref.reinterpret_cast %alloc_1 to offset: [0], sizes: [4, 5], strides: [5, 1] : memref<1x4x5xi32> to memref<4x5xi32> %75 = affine.load %reinterpret_cast_2[%8, %8] : memref<4x5xi32> %76 = affine.load %reinterpret_cast_3[%8, %8] : memref<4x5xi32> %77 = llvm.lshr %75, %76 : i32 affine.store %77, %reinterpret_cast_4[%8, %8] : memref<4x5xi32> %78 = affine.load %reinterpret_cast_2[%8, %10] : memref<4x5xi32> %79 = affine.load %reinterpret_cast_3[%8, %10] : memref<4x5xi32> %80 = llvm.lshr %78, %79 : i32 affine.store %80, %reinterpret_cast_4[%8, %10] : memref<4x5xi32> %81 = affine.load %reinterpret_cast_2[%8, %11] : memref<4x5xi32> %82 = affine.load %reinterpret_cast_3[%8, %11] : memref<4x5xi32> %83 = llvm.lshr %81, %82 : i32 affine.store %83, %reinterpret_cast_4[%8, %11] : memref<4x5xi32> %84 = affine.load %reinterpret_cast_2[%8, %12] : memref<4x5xi32> %85 = affine.load %reinterpret_cast_3[%8, %12] : memref<4x5xi32> %86 = llvm.lshr %84, %85 : i32 affine.store %86, %reinterpret_cast_4[%8, %12] : memref<4x5xi32> %87 = affine.load %reinterpret_cast_2[%8, %9] : memref<4x5xi32> %88 = affine.load %reinterpret_cast_3[%8, %9] : memref<4x5xi32> %89 = llvm.lshr %87, %88 : i32 affine.store %89, %reinterpret_cast_4[%8, %9] : memref<4x5xi32> %90 = affine.load %reinterpret_cast_2[%10, %8] : memref<4x5xi32> %91 = affine.load %reinterpret_cast_3[%10, %8] : memref<4x5xi32> %92 = llvm.lshr %90, %91 : i32 affine.store %92, %reinterpret_cast_4[%10, %8] : memref<4x5xi32> %93 = affine.load %reinterpret_cast_2[%10, %10] : memref<4x5xi32> %94 = affine.load %reinterpret_cast_3[%10, %10] : memref<4x5xi32> %95 = llvm.lshr %93, %94 : i32 affine.store %95, %reinterpret_cast_4[%10, %10] : memref<4x5xi32> %96 = affine.load %reinterpret_cast_2[%10, %11] : memref<4x5xi32> %97 = affine.load %reinterpret_cast_3[%10, %11] : memref<4x5xi32> %98 = llvm.lshr %96, %97 : i32 affine.store %98, %reinterpret_cast_4[%10, %11] : memref<4x5xi32> %99 = affine.load %reinterpret_cast_2[%10, %12] : memref<4x5xi32> %100 = affine.load %reinterpret_cast_3[%10, %12] : memref<4x5xi32> %101 = llvm.lshr %99, %100 : i32 affine.store %101, %reinterpret_cast_4[%10, %12] : memref<4x5xi32> %102 = affine.load %reinterpret_cast_2[%10, %9] : memref<4x5xi32> %103 = affine.load %reinterpret_cast_3[%10, %9] : memref<4x5xi32> %104 = llvm.lshr %102, %103 : i32 affine.store %104, %reinterpret_cast_4[%10, %9] : memref<4x5xi32> %105 = affine.load %reinterpret_cast_2[%11, %8] : memref<4x5xi32> %106 = affine.load %reinterpret_cast_3[%11, %8] : memref<4x5xi32> %107 = llvm.lshr %105, %106 : i32 affine.store %107, %reinterpret_cast_4[%11, %8] : memref<4x5xi32> %108 = affine.load %reinterpret_cast_2[%11, %10] : memref<4x5xi32> %109 = affine.load %reinterpret_cast_3[%11, %10] : memref<4x5xi32> %110 = llvm.lshr %108, %109 : i32 affine.store %110, %reinterpret_cast_4[%11, %10] : memref<4x5xi32> %111 = affine.load %reinterpret_cast_2[%11, %11] : memref<4x5xi32> %112 = affine.load %reinterpret_cast_3[%11, %11] : memref<4x5xi32> %113 = llvm.lshr %111, %112 : i32 affine.store %113, %reinterpret_cast_4[%11, %11] : memref<4x5xi32> %114 = affine.load %reinterpret_cast_2[%11, %12] : memref<4x5xi32> %115 = affine.load %reinterpret_cast_3[%11, %12] : memref<4x5xi32> %116 = llvm.lshr %114, %115 : i32 affine.store %116, %reinterpret_cast_4[%11, %12] : memref<4x5xi32> %117 = affine.load %reinterpret_cast_2[%11, %9] : memref<4x5xi32> %118 = affine.load %reinterpret_cast_3[%11, %9] : memref<4x5xi32> %119 = llvm.lshr %117, %118 : i32 affine.store %119, %reinterpret_cast_4[%11, %9] : memref<4x5xi32> %120 = affine.load %reinterpret_cast_2[%12, %8] : memref<4x5xi32> %121 = affine.load %reinterpret_cast_3[%12, %8] : memref<4x5xi32> %122 = llvm.lshr %120, %121 : i32 affine.store %122, %reinterpret_cast_4[%12, %8] : memref<4x5xi32> %123 = affine.load %reinterpret_cast_2[%12, %10] : memref<4x5xi32> %124 = affine.load %reinterpret_cast_3[%12, %10] : memref<4x5xi32> %125 = llvm.lshr %123, %124 : i32 affine.store %125, %reinterpret_cast_4[%12, %10] : memref<4x5xi32> %126 = affine.load %reinterpret_cast_2[%12, %11] : memref<4x5xi32> %127 = affine.load %reinterpret_cast_3[%12, %11] : memref<4x5xi32> %128 = llvm.lshr %126, %127 : i32 affine.store %128, %reinterpret_cast_4[%12, %11] : memref<4x5xi32> %129 = affine.load %reinterpret_cast_2[%12, %12] : memref<4x5xi32> %130 = affine.load %reinterpret_cast_3[%12, %12] : memref<4x5xi32> %131 = llvm.lshr %129, %130 : i32 affine.store %131, %reinterpret_cast_4[%12, %12] : memref<4x5xi32> %132 = affine.load %reinterpret_cast_2[%12, %9] : memref<4x5xi32> %133 = affine.load %reinterpret_cast_3[%12, %9] : memref<4x5xi32> %134 = llvm.lshr %132, %133 : i32 affine.store %134, %reinterpret_cast_4[%12, %9] : memref<4x5xi32> %alloc_5 = memref.alloc() {alignment = 64 : i64} : memref<1x5xi32> affine.for %arg1 = 0 to 1 { affine.store %5, %alloc_5[%arg1, %8] : memref<1x5xi32> affine.store %5, %alloc_5[%arg1, %10] : memref<1x5xi32> affine.store %5, %alloc_5[%arg1, %11] : memref<1x5xi32> affine.store %5, %alloc_5[%arg1, %12] : memref<1x5xi32> affine.store %5, %alloc_5[%arg1, %9] : memref<1x5xi32> } affine.for %arg1 = 0 to 1 { %135 = affine.load %alloc_1[%arg1, %8, %8] : memref<1x4x5xi32> %136 = affine.load %alloc_5[%arg1, %8] : memref<1x5xi32> %137 = llvm.mul %135, %136 : i32 affine.store %137, %alloc_5[%arg1, %8] : memref<1x5xi32> %138 = affine.load %alloc_1[%arg1, %8, %10] : memref<1x4x5xi32> %139 = affine.load %alloc_5[%arg1, %10] : memref<1x5xi32> %140 = llvm.mul %138, %139 : i32 affine.store %140, %alloc_5[%arg1, %10] : memref<1x5xi32> %141 = affine.load %alloc_1[%arg1, %8, %11] : memref<1x4x5xi32> %142 = affine.load %alloc_5[%arg1, %11] : memref<1x5xi32> %143 = llvm.mul %141, %142 : i32 affine.store %143, %alloc_5[%arg1, %11] : memref<1x5xi32> %144 = affine.load %alloc_1[%arg1, %8, %12] : memref<1x4x5xi32> %145 = affine.load %alloc_5[%arg1, %12] : memref<1x5xi32> %146 = llvm.mul %144, %145 : i32 affine.store %146, %alloc_5[%arg1, %12] : memref<1x5xi32> %147 = affine.load %alloc_1[%arg1, %8, %9] : memref<1x4x5xi32> %148 = affine.load %alloc_5[%arg1, %9] : memref<1x5xi32> %149 = llvm.mul %147, %148 : i32 affine.store %149, %alloc_5[%arg1, %9] : memref<1x5xi32> %150 = affine.load %alloc_1[%arg1, %10, %8] : memref<1x4x5xi32> %151 = affine.load %alloc_5[%arg1, %8] : memref<1x5xi32> %152 = llvm.mul %150, %151 : i32 affine.store %152, %alloc_5[%arg1, %8] : memref<1x5xi32> %153 = affine.load %alloc_1[%arg1, %10, %10] : memref<1x4x5xi32> %154 = affine.load %alloc_5[%arg1, %10] : memref<1x5xi32> %155 = llvm.mul %153, %154 : i32 affine.store %155, %alloc_5[%arg1, %10] : memref<1x5xi32> %156 = affine.load %alloc_1[%arg1, %10, %11] : memref<1x4x5xi32> %157 = affine.load %alloc_5[%arg1, %11] : memref<1x5xi32> %158 = llvm.mul %156, %157 : i32 affine.store %158, %alloc_5[%arg1, %11] : memref<1x5xi32> %159 = affine.load %alloc_1[%arg1, %10, %12] : memref<1x4x5xi32> %160 = affine.load %alloc_5[%arg1, %12] : memref<1x5xi32> %161 = llvm.mul %159, %160 : i32 affine.store %161, %alloc_5[%arg1, %12] : memref<1x5xi32> %162 = affine.load %alloc_1[%arg1, %10, %9] : memref<1x4x5xi32> %163 = affine.load %alloc_5[%arg1, %9] : memref<1x5xi32> %164 = llvm.mul %162, %163 : i32 affine.store %164, %alloc_5[%arg1, %9] : memref<1x5xi32> %165 = affine.load %alloc_1[%arg1, %11, %8] : memref<1x4x5xi32> %166 = affine.load %alloc_5[%arg1, %8] : memref<1x5xi32> %167 = llvm.mul %165, %166 : i32 affine.store %167, %alloc_5[%arg1, %8] : memref<1x5xi32> %168 = affine.load %alloc_1[%arg1, %11, %10] : memref<1x4x5xi32> %169 = affine.load %alloc_5[%arg1, %10] : memref<1x5xi32> %170 = llvm.mul %168, %169 : i32 affine.store %170, %alloc_5[%arg1, %10] : memref<1x5xi32> %171 = affine.load %alloc_1[%arg1, %11, %11] : memref<1x4x5xi32> %172 = affine.load %alloc_5[%arg1, %11] : memref<1x5xi32> %173 = llvm.mul %171, %172 : i32 affine.store %173, %alloc_5[%arg1, %11] : memref<1x5xi32> %174 = affine.load %alloc_1[%arg1, %11, %12] : memref<1x4x5xi32> %175 = affine.load %alloc_5[%arg1, %12] : memref<1x5xi32> %176 = llvm.mul %174, %175 : i32 affine.store %176, %alloc_5[%arg1, %12] : memref<1x5xi32> %177 = affine.load %alloc_1[%arg1, %11, %9] : memref<1x4x5xi32> %178 = affine.load %alloc_5[%arg1, %9] : memref<1x5xi32> %179 = llvm.mul %177, %178 : i32 affine.store %179, %alloc_5[%arg1, %9] : memref<1x5xi32> %180 = affine.load %alloc_1[%arg1, %12, %8] : memref<1x4x5xi32> %181 = affine.load %alloc_5[%arg1, %8] : memref<1x5xi32> %182 = llvm.mul %180, %181 : i32 affine.store %182, %alloc_5[%arg1, %8] : memref<1x5xi32> %183 = affine.load %alloc_1[%arg1, %12, %10] : memref<1x4x5xi32> %184 = affine.load %alloc_5[%arg1, %10] : memref<1x5xi32> %185 = llvm.mul %183, %184 : i32 affine.store %185, %alloc_5[%arg1, %10] : memref<1x5xi32> %186 = affine.load %alloc_1[%arg1, %12, %11] : memref<1x4x5xi32> %187 = affine.load %alloc_5[%arg1, %11] : memref<1x5xi32> %188 = llvm.mul %186, %187 : i32 affine.store %188, %alloc_5[%arg1, %11] : memref<1x5xi32> %189 = affine.load %alloc_1[%arg1, %12, %12] : memref<1x4x5xi32> %190 = affine.load %alloc_5[%arg1, %12] : memref<1x5xi32> %191 = llvm.mul %189, %190 : i32 affine.store %191, %alloc_5[%arg1, %12] : memref<1x5xi32> %192 = affine.load %alloc_1[%arg1, %12, %9] : memref<1x4x5xi32> %193 = affine.load %alloc_5[%arg1, %9] : memref<1x5xi32> %194 = llvm.mul %192, %193 : i32 affine.store %194, %alloc_5[%arg1, %9] : memref<1x5xi32> } %reinterpret_cast_6 = memref.reinterpret_cast %alloc_5 to offset: [0], sizes: [1, 1, 5], strides: [5, 5, 1] : memref<1x5xi32> to memref<1x1x5xi32> %cast = memref.cast %reinterpret_cast_6 : memref<1x1x5xi32> to memref<*xi32> call @printMemrefI32(%cast) : (memref<*xi32>) -> () return } func.func @main() { %0 = llvm.mlir.constant(0 : i64) : i64 %1 = builtin.unrealized_conversion_cast %0 : i64 to index call @entry(%1) : (index) -> () return } }