brintos

brintos / llvm-project-archived public Read only

0
0
Text · 942 B · 0475e16 Raw
28 lines · plain
1// RUN: mlir-opt --pass-pipeline="builtin.module(affine-loop-fusion{compute-tolerance=0})" %s | FileCheck %s2 3// CHECK-LABEL: @producer_consumer_fusion4module {5  func.func @producer_consumer_fusion(%arg0: memref<10xf32>, %arg1: memref<10xf32>) {6    %0 = memref.alloc() : memref<10xf32>7    %1 = memref.alloc() : memref<10xf32>8    %cst = arith.constant 0.000000e+00 : f329    // CHECK: affine.for10    // CHECK-NOT: affine.for11    affine.for %arg2 = 0 to 10 {12      affine.store %cst, %0[%arg2] : memref<10xf32>13      affine.store %cst, %1[%arg2] : memref<10xf32>14    }15    affine.for %arg2 = 0 to 10 {16      %2 = affine.load %0[%arg2] : memref<10xf32>17      %3 = arith.addf %2, %2 : f3218      affine.store %3, %arg0[%arg2] : memref<10xf32>19    }20    affine.for %arg2 = 0 to 10 {21      %2 = affine.load %1[%arg2] : memref<10xf32>22      %3 = arith.mulf %2, %2 : f3223      affine.store %3, %arg1[%arg2] : memref<10xf32>24    }25    return26  }27}28