← passage and results

seed95.out.mlir

evidence/breadth-17/pbt/outs/seed95.out.mlir

Download original file

#map = affine_map<(d0) -> (d0)>
module {
  dataflow.graph private @produce_s95(%arg0: none, %arg1: i32, %arg2: i32, %arg3: i32) -> i32 attributes {input_segments = array<i32: 3, 0, 0>, result_segments = array<i32: 0, 1, 0>} {
    %iv, %phase = dataflow.stream %arg1, %arg2, %arg3 step add while slt : i32
    %0 = dataflow.invariant %phase, %arg0 : none
    %1:2 = dataflow.demux %phase, %0 : (i1, none) -> (none, none)
    dataflow.graph.return values() streams(%iv : i32) memories() complete(%1#0 : none)
  }
  dataflow.graph private @consume_s95(%arg0: none, %arg1: i32) -> () attributes {input_segments = array<i32: 0, 1, 0>, result_segments = array<i32: 0, 0, 0>} {
    dataflow.graph.return %arg0 : none
  }
  dataflow.thread private @producer_s95 domain(#dataflow.thread_domain<dense>)(%arg0: !dataflow.channel<i32>, %arg1: i32, %arg2: i32, %arg3: i32) ctrl (%arg4: none) iv (%arg5: index) {
    %done = dataflow.graph.launch @produce_s95 deps(%arg4) values(%arg1, %arg2, %arg3) stream_inputs() memories() stream_outputs(%arg0) : (none, i32, i32, i32, !dataflow.channel<i32>) -> none
    dataflow.thread.yield %done : none
  }
  dataflow.thread private @consumer_s95 domain(#dataflow.thread_domain<dense>)(%arg0: !dataflow.channel<i32>) ctrl (%arg1: none) iv (%arg2: index) {
    %done = dataflow.graph.launch @consume_s95 deps(%arg1) values() stream_inputs(%arg0 source_map #map) memories() stream_outputs() : (none, !dataflow.channel<i32>) -> none
    dataflow.thread.yield %done : none
  }
  func.func @entry_s95(%arg0: !dataflow.channel<i32>, %arg1: index) {
    %c1_i32 = arith.constant 1 : i32
    %c1_i32_0 = arith.constant 1 : i32
    %0 = arith.index_cast %arg1 : index to i32
    %1 = dataflow.thread.launch @producer_s95(%arg0, %c1_i32, %0, %c1_i32_0) grid(%arg1) : (!dataflow.channel<i32>, i32, i32, i32) -> !dataflow.thread_token
    %2 = dataflow.thread.launch @consumer_s95(%arg0) grid(%arg1) : (!dataflow.channel<i32>) -> !dataflow.thread_token
    return
  }
}