Back to PBT run

input.mlir

module {
  dataflow.graph private @graph_0(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    scf.if %c {
    %v0 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v0, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %g1, %gd1 = dataflow.load %a[%av] %start mask %m : memref<16xi32>, vector<4xindex>, vector<4xi32>
    %sc1 = dataflow.store %b[%av] %g1 %start mask %m : memref<16xi32>, vector<4xindex>, vector<4xi32>
    %lb2 = arith.constant 0 : index
    %ub2 = arith.constant 4 : index
    %sp2 = arith.constant 1 : index
    scf.for %k2 = %lb2 to %ub2 step %sp2 {
    %v3 = vector.transfer_read %a[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v3, %a[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb4 = arith.constant 0 : index
    %ub4 = arith.constant 4 : index
    %sp4 = arith.constant 1 : index
    scf.for %k4 = %lb4 to %ub4 step %sp4 {
    %v5 = vector.transfer_read %a[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v5, %a[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
  dataflow.graph private @graph_1(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    scf.if %c {
    %v0 = vector.transfer_read %a[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v0, %b[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %g1, %gd1 = dataflow.load %a[%av] %start mask %m : memref<16xi32>, vector<4xindex>, vector<4xi32>
    %sc1 = dataflow.store %b[%av] %g1 %start mask %m : memref<16xi32>, vector<4xindex>, vector<4xi32>
    memref.store %val, %b[%i] : memref<16xi32>
    %s2 = memref.load %b[%i] : memref<16xi32>
    scf.if %c {
    %v3 = vector.transfer_read %a[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v3, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
}