<div dir="ltr">Yes, bmv2 indeed uses a table graph representation for the control flows. The compiler takes care of doing the transformation from the imperative representation to the graph representation. Some programs (with the same table applied multiple times cannot be represented). See here for more details: <a href="https://github.com/p4lang/p4c/issues/457">https://github.com/p4lang/p4c/issues/457</a></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 15, 2017 at 8:59 AM, Hardik Soni <span dir="ltr"><<a href="mailto:hardik.soni@inria.fr" target="_blank">hardik.soni@inria.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-family:times new roman,new york,times,serif;font-size:12pt;color:#000000"><div>Hello,</div><div><br></div><div>I have a confusion between two constructs.</div><div><br></div><div>1) <span style="font-size:12pt">Why next tables are dependent on actions? </span></div><div>    I have attached a screenshot, it shows fragment of .p4 against .json side by side.</div><div>    For 3 actions, there are 3 values in "next_tables" tag from line 784 to 786 in .json snippet.</div><div>    In <a href="https://github.com/p4lang/behavioral-model/blob/master/src/bm_sim/P4Objects.cpp#L1697" target="_blank">lines 1697 to 1713</a>  of P4Objects.cpp,  why MatchTableAbstract types have next_tables based on actions?</div><div>    These actions are not kind of "goto table" semantics.</div><div><div>    It is not really a pipeline if there are next_table options based on actions in one table, its a graph.</div><div>    This semantic(control invocation from table) is not specified in the spec of P4-16 dated May 22, 2017 version 1.0.0.</div><div>    For example, the idea of having different  next nodes even for __HIT__ and __MISS__  are also not specified.<span style="font-size:12pt"> </span></div><div><br></div><div>2) T<span style="font-size:12pt">here is apply{...} in .p4 or conditionals in .json, so which order of table arrangement is finally used?</span></div></div><div>    To me it seems, conditionals have final say.</div><div>    </div><div>I went through <a href="https://github.com/p4lang/behavioral-model/blob/master/docs/JSON_format.md" target="_blank">https://github.com/p4lang/<wbr>behavioral-model/blob/master/<wbr>docs/JSON_format.md</a> link.</div><div>Still, did not understand why two ways to define control flow even if it is a graph?</div><div>What is the difference, except the scope at which control transition is programmed? </div><div><br></div><div></div><div><span name="x"></span><div><span style="font-size:medium">Best Regards,</span><br><span style="font-size:medium">Hardik Soni</span></div><span name="x"></span><br></div></div></div><br>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/<wbr>listinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div>