← 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
}
}