41 runtime_kernel.
readKernel(op_index, runtime_context);
42 auto options = runtime_kernel.
first_operator->builtin_options_as_WhileOptions();
45 const auto body_subgraph_index = options->body_subgraph_index();
46 const auto cond_subgraph_index = options->cond_subgraph_index();
68 for (uint32_t i = 0; i < runtime_kernel.
inputs_num; ++i)
70 const auto cur_input_tensor = runtime_kernel.
inputs[i];
71 const auto input_data_size =
sizeof(
core::OMDataType(cur_input_tensor->type())) *
83 for (uint32_t i = 0; i < cond_graphs_inputs; ++i)
85 auto *cur_cond_input_data =
86 reinterpret_cast<uint8_t *
>(cond_runtime_graph->
getInputDataAt(i));
87 uint8_t *cur_main_input_data = runtime_kernel.
outputs_data[i];
88 assert(cur_main_input_data !=
nullptr);
89 assert(cur_cond_input_data !=
nullptr);
90 const auto cur_input_tensor = runtime_kernel.
inputs[i];
91 const auto input_data_size =
sizeof(
core::OMDataType(cur_input_tensor->type())) *
93 std::memcpy(cur_cond_input_data, cur_main_input_data, input_data_size);
103 bool cond_result_value =
reinterpret_cast<bool *
>(cond_runtime_graph->
getOutputDataAt(0))[0];
105 cond_runtime_graph->
reset();
107 if (cond_result_value ==
false)
117 for (uint32_t i = 0; i < body_graphs_inputs; ++i)
119 auto *cur_body_input_data =
120 reinterpret_cast<uint8_t *
>(body_runtime_graph->
getInputDataAt(i));
121 uint8_t *cur_main_input_data = runtime_kernel.
outputs_data[i];
122 assert(cur_main_input_data !=
nullptr);
123 assert(cur_body_input_data !=
nullptr);
124 const auto cur_input_tensor = runtime_kernel.
inputs[i];
125 const auto input_data_size =
sizeof(
core::OMDataType(cur_input_tensor->type())) *
127 std::memcpy(cur_body_input_data, cur_main_input_data, input_data_size);
137 for (uint32_t i = 0; i < runtime_kernel.
inputs_num; ++i)
140 const auto cur_tensor = runtime_kernel.
outputs[i];
143 std::memcpy(runtime_kernel.
outputs_data[i], cur_calculated_data, data_size);
146 body_runtime_graph->
reset();