Back to PBT run
input.mlir
dataflow.thread private @t_0 domain(#dataflow.thread_domain<dynamic_work, work_item_arg = 1>)(%arg_0: i64, %arg_1: index, %arg_2: memref<?xf32>) ctrl (%thread_ctrl: none) {
dataflow.thread.yield %thread_ctrl : none
}
dataflow.thread private @t_1 domain(#dataflow.thread_domain<dense>)(%arg_0: f32, %arg_1: i64, %arg_2: index) ctrl (%thread_ctrl: none) iv (%coord_0: index, %coord_1: index) {
dataflow.thread.yield
}
dataflow.thread private @t_2 domain(#dataflow.thread_domain<dense>)() ctrl (%thread_ctrl: none) iv (%coord_0: index) {
dataflow.thread.yield
}
func.func @host(%m_ref: memref<?xf32>) {
%c_i32 = arith.constant 1 : i32
%c_f32 = arith.constant 1.000000e+00 : f32
%c_i64 = arith.constant 1 : i64
%c_idx = arith.constant 4 : index
%token_0 = dataflow.thread.launch @t_0(%c_i64, %c_idx, %m_ref) : (i64, index, memref<?xf32>) -> !dataflow.thread_token
%token_1 = dataflow.thread.launch @t_1(%c_f32, %c_i64, %c_idx) grid(%c_idx, %c_idx) : (f32, i64, index) -> !dataflow.thread_token
dataflow.thread.wait %token_1 : !dataflow.thread_token
%token_2 = dataflow.thread.launch @t_2() grid(%c_idx) : () -> !dataflow.thread_token
return
}