<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Han,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Great, thanks!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hemant<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> Han Wang [mailto:hw342@cornell.edu] <br><b>Sent:</b> Thursday, June 08, 2017 5:16 PM<br><b>To:</b> hemant@mnkcg.com<br><b>Cc:</b> p4-dev <p4-dev@lists.p4.org><br><b>Subject:</b> Re: [P4-dev] p4c compiler output in .p4i<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi Hemant,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>You can use the —top4 flag in p4c-bm2-ss and p4test to dump IR as inlined comments in p4 program, see slide 32 in compiler-design.pptx<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Han<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On Jun 8, 2017, at 2:01 PM, <<a href="mailto:hemant@mnkcg.com">hemant@mnkcg.com</a>> <<a href="mailto:hemant@mnkcg.com">hemant@mnkcg.com</a>> wrote:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Hi Han,<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Got it.  I found the tools/driver/p4_src/p4c.bmv2.cfg and see the p4i is part of the preprocessor setup.  Thanks to Mihai for replying too.  About IR, what support does the current p4c compiler have for outputting IR?  Isn’t JSON output pending to be developed?<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Thanks,<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Hemant<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><div><p class=MsoNormal><b>From:</b><span class=apple-converted-space> </span>Han Wang [<a href="mailto:hanwang@barefootnetworks.com">mailto:hanwang@barefootnetworks.com</a>]<span class=apple-converted-space> </span><br><b>Sent:</b><span class=apple-converted-space> </span>Thursday, June 08, 2017 4:48 PM<br><b>To:</b><span class=apple-converted-space> </span><a href="mailto:hemant@mnkcg.com">hemant@mnkcg.com</a><br><b>Cc:</b><span class=apple-converted-space> </span>p4-dev <<a href="mailto:p4-dev@lists.p4.org">p4-dev@lists.p4.org</a>><br><b>Subject:</b><span class=apple-converted-space> </span>Re: [P4-dev] p4c compiler output in .p4i<o:p></o:p></p></div></div></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Hi Hemant,<o:p></o:p></p></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>p4c is a compiler driver that invokes the other components of the p4 tool chain to process a p4 program. Specifically, for bmv2, the compiler driver invokes preprocessor and p4c-bm2-ss to generate the output json configuration for bmv2.<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>You can use the -### flag or --test-only flag to find out which commands are invoked by p4c compiler driver.<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>In this case, the .p4i file is the output of the preprocessor step.<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>Han<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><div><p class=MsoNormal>On Jun 8, 2017, at 1:40 PM,<span class=apple-converted-space> </span><a href="mailto:hemant@mnkcg.com"><span style='color:purple'>hemant@mnkcg.com</span></a><span class=apple-converted-space> </span>wrote:<o:p></o:p></p></div></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><div><div><p class=MsoNormal>The compiler-design slides included with the docs for the p4c compiler do not include some details.  Thus a question:<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>When I use p4c to compile P4-16 code in a .p4 file, the compiler outputs a .p4i file.  Looking at this file, it looks like IR (Intermediate Representation) to me – am I correct?   It would be good to describe this output file in the docs.<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>Thanks,<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>Hemant<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif'>_______________________________________________<br>P4-dev mailing list<br></span><a href="mailto:P4-dev@lists.p4.org"><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif;color:#954F72'>P4-dev@lists.p4.org</span></a><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif'><br></span><a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org"><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif;color:#954F72'>http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org</span></a><o:p></o:p></p></div></div></blockquote></div></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>