1*7f196862SJeremy Kun// RUN: mlir-opt --pass-pipeline="builtin.module(affine-loop-fusion)" %s | FileCheck %s 2*7f196862SJeremy Kun 3*7f196862SJeremy Kun 4*7f196862SJeremy Kun// CHECK-LABEL: @producer_consumer_fusion 5*7f196862SJeremy Kun// CHECK-COUNT-1: affine.for 6*7f196862SJeremy Kunmodule { 7*7f196862SJeremy Kun func.func @producer_consumer_fusion(%arg0: memref<10xf32>, %arg1: memref<10xf32>) { 8*7f196862SJeremy Kun %0 = memref.alloc() : memref<10xf32> 9*7f196862SJeremy Kun %1 = memref.alloc() : memref<10xf32> 10*7f196862SJeremy Kun %cst = arith.constant 0.000000e+00 : f32 11*7f196862SJeremy Kun affine.for %arg2 = 0 to 10 { 12*7f196862SJeremy Kun affine.store %cst, %0[%arg2] : memref<10xf32> 13*7f196862SJeremy Kun affine.store %cst, %1[%arg2] : memref<10xf32> 14*7f196862SJeremy Kun } 15*7f196862SJeremy Kun affine.for %arg2 = 0 to 10 { 16*7f196862SJeremy Kun %2 = affine.load %0[%arg2] : memref<10xf32> 17*7f196862SJeremy Kun %3 = arith.addf %2, %2 : f32 18*7f196862SJeremy Kun affine.store %3, %arg0[%arg2] : memref<10xf32> 19*7f196862SJeremy Kun } 20*7f196862SJeremy Kun affine.for %arg2 = 0 to 10 { 21*7f196862SJeremy Kun %2 = affine.load %1[%arg2] : memref<10xf32> 22*7f196862SJeremy Kun %3 = arith.mulf %2, %2 : f32 23*7f196862SJeremy Kun affine.store %3, %arg1[%arg2] : memref<10xf32> 24*7f196862SJeremy Kun } 25*7f196862SJeremy Kun return 26*7f196862SJeremy Kun } 27*7f196862SJeremy Kun} 28