diff options
author | Dominic Symes <dominic.symes@arm.com> | 2022-11-30 14:25:20 +0000 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2022-12-05 19:19:06 +0000 |
commit | 4370b93cf307fa099973341c481e7c2d50eee572 (patch) | |
tree | be16c19347251c1b104a4a902469ab73afa354d4 /chapters/control_flow.adoc | |
parent | e4d6a1b99337f33cfaf343005e355ef7a68b2be9 (diff) | |
download | specification-4370b93cf307fa099973341c481e7c2d50eee572.tar.gz |
Clarify the type of condition tensors
Condition tensors used by the control
flow operations must contain a single
element.
Change-Id: Ie3cb8f0b4a4149cee1b3aacbfa720dd4cad02fbc
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Diffstat (limited to 'chapters/control_flow.adoc')
-rw-r--r-- | chapters/control_flow.adoc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/chapters/control_flow.adoc b/chapters/control_flow.adoc index 49fab74..e43ef51 100644 --- a/chapters/control_flow.adoc +++ b/chapters/control_flow.adoc @@ -23,8 +23,9 @@ ERROR_IF(tensor_list_shape(input_list) != tosa_input_shape(then_graph)); ERROR_IF(tensor_list_shape(input_list) != tosa_input_shape(else_graph)); ERROR_IF(tensor_list_shape(output_list) != tosa_output_shape(then_graph)); ERROR_IF(tensor_list_shape(output_list) != tosa_output_shape(else_graph)); +ERROR_IF(tensor_size(shape) != 1); -if (condition) { +if (condition[0]) { tosa_execute_graph(then_graph, input_list, output_list); } else { tosa_execute_graph(else_graph, input_list, output_list); @@ -43,17 +44,21 @@ ERROR_IF(tensor_list_shape(input_list) != tosa_list_shape(output_list)); ERROR_IF(tensor_list_shape(input_list) != tosa_input_shape(cond_graph)); ERROR_IF(tensor_list_shape(input_list) != tosa_input_shape(body_graph)); ERROR_IF(tensor_list_shape(input_list) != tosa_output_shape(body_graph)); -ERROR_IF(tosa_output_shape(cond_graph) != tosa_list_shape([bool_t])); +// Condition graph output must be a single element tensor with a single bool value +ERROR_IF(tensor_size(tosa_output_shape(cond_graph)) != 1); +ERROR_IF(tosa_output_type(cond_graph) != bool_t); // The iteration number 'i' is included to give unique names to variables // in each iteration of the loop and is not required by implementations int32_t i=0; // iteration number +tensor_list_t list[]; // array of tensor lists indexed by iteration +bool_t *condition[]; // array of condition tensors indexed by iteration list[i] = input_list; // copy input data as list[0] -tosa_execute_graph(cond_graph, list[i], [condition[i]]); // initial condition -while (condition[i]) { +tosa_execute_graph(cond_graph, list[i], [ condition[i] ]); // initial condition +while (condition[i][0]) { tosa_execute_graph(body_graph, list[i], list[i+1]); i = i+1; - tosa_execute_graph(cond_graph, list[i], [condition[i]]); + tosa_execute_graph(cond_graph, list[i], [ condition[i] ]); } output_list = list[i]; ---- |