<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix"><span
        style="font-size:12.0pt;font-family:"Book
        Antiqua","serif";color:#1F497D">> It has some
        fairly complex scheduling requirements that I have so far not
        figured out how to express with the<br>
        > SchedMachineModel approach.  It too is a VLIW processor,
        with predication and no instruction interlocking,<br>
        > so computing the correct scheduling is not just important
        for performance it is critical for correct code generation.</span><br>
      <br>
      That's interesting to know. The compiler is responsible for
      generating the correct schedule on Hexagon as well. I'd say
      Hexagon packets have moderately complex resource restrictions. And
      we're able to express those restrictions in the DFA.<br>
      <br>
      -Anshu<br>
      <br>
      <br>
      On 11/10/2015 5:55 AM, Martin J. O'Riordan wrote:<br>
    </div>
    <blockquote cite="mid:007e01d11bae$a99d68e0$fcd83aa0$@movidius.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <meta name="Generator" content="Microsoft Word 14 (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:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"Book Antiqua";
        panose-1:2 4 6 2 5 3 5 3 3 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
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.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Book Antiqua","serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
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]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D">Although
            currently out of tree, the Movidius SHAVE compiler also
            makes extensive use of Itineraries. It has some fairly
            complex scheduling requirements that I have so far not
            figured out how to express with the SchedMachineModel
            approach.  It too is a VLIW processor, with predication and
            no instruction interlocking, so computing the correct
            scheduling is not just important for performance it is
            critical for correct code generation.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D">Curiously
            enough, a few months ago I posed a similar question, but the
            other way around regarding how to rewrite our scheduler to
            avoid using the itineraries - this thread has sort of
            answered that question </span><span
            style="font-size:12.0pt;font-family:Wingdings;color:#1F497D">J</span><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D"><o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D">Thanks,<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D">           
            Martin O’Riordan - Movidius Ltd.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Book
            Antiqua","serif";color:#1F497D"><o:p> </o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #B5C4DF
            1.0pt;padding:3.0pt 0cm 0cm 0cm">
            <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext"
                  lang="EN-US">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext"
                lang="EN-US"> llvm-dev
                [<a class="moz-txt-link-freetext" href="mailto:llvm-dev-bounces@lists.llvm.org">mailto:llvm-dev-bounces@lists.llvm.org</a>] <b>On Behalf
                  Of </b>Anshuman Dasgupta via llvm-dev<br>
                <b>Sent:</b> 09 November 2015 22:19<br>
                <b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>;
                <a class="moz-txt-link-abbreviated" href="mailto:dpalermo@codeaurora.org">dpalermo@codeaurora.org</a><br>
                <b>Subject:</b> Re: [llvm-dev] Is there a way to convert
                between SchedMachineModel and Itineraries?<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div>
          <p class="MsoNormal" style="margin-bottom:12.0pt">> Not
            many people work with either the machine model or
            itineraries.<br>
            <br>
            Andrew's right; not too many people on the list work with
            the itineraries It was authored for the Hexagon backend and
            I believe the R600 uses it as well.<br>
            <br>
            How complex are the bundling rules in your VLIW target? Is
            that documented somewhere? The complexity will determine
            whether I'd recommend using the DFA packetizer.<br>
            <br>
            -Anshu<o:p></o:p></p>
          <p class="MsoPlainText">-- <o:p></o:p></p>
          <p class="MsoPlainText">Qualcomm Innovation Center, Inc. is a
            member of Code Aurora Forum, <o:p></o:p></p>
          <p class="MsoPlainText">hosted by The Linux Foundation<o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:12.0pt;font-family:"Times New
              Roman","serif""><br>
              <br>
              On 11/9/2015 2:52 PM, Andrew Trick via llvm-dev wrote:<o:p></o:p></span></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal"><span
              style="font-size:12.0pt;font-family:"Times New
              Roman","serif""><o:p> </o:p></span></p>
          <div>
            <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
              <div>
                <p class="MsoNormal"><span
                    style="font-size:12.0pt;font-family:"Times New
                    Roman","serif"">On Nov 9, 2015, at
                    10:49 AM, Rail Shafigulin <<a
                      moz-do-not-send="true"
                      href="mailto:rail@esenciatech.com"><a class="moz-txt-link-abbreviated" href="mailto:rail@esenciatech.com">rail@esenciatech.com</a></a>>
                    wrote:<o:p></o:p></span></p>
              </div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif""><o:p> </o:p></span></p>
              <div>
                <div>
                  <div>
                    <div>
                      <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">On
                          Mon, Nov 9, 2015 at 10:31 AM, Hal Finkel<span
                            class="apple-converted-space"> </span><<a
                            moz-do-not-send="true"
                            href="mailto:hfinkel@anl.gov"
                            target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a></a>><span
                            class="apple-converted-space"> </span>wrote:<o:p></o:p></span></p>
                      <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">-----
                          Original Message -----<br>
                          > From: "Rail Shafigulin via llvm-dev" <<a
                            moz-do-not-send="true"
                            href="mailto:llvm-dev@lists.llvm.org"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></a>><br>
                          > To: "llvm-dev" <<a
                            moz-do-not-send="true"
                            href="mailto:llvm-dev@lists.llvm.org"><a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></a>><br>
                          > Sent: Monday, November 9, 2015 10:09:07
                          AM<br>
                          > Subject: Re: [llvm-dev] Is there a way to
                          convert between SchedMachineModel   and
                          Itineraries?<br>
                          ><br>
                          ><br>
                          > Anybody? Does anyone at all know how to
                          do it?<br>
                          <br>
                          There is no direct conversion. Although they
                          are similar models, they are different. The
                          strength of Itineraries lies in modeling
                          pipelines with complex hazards (especially
                          those that are not fully pipelined, or have
                          other similar ordering constraints).
                          SchedMachineModel can't do that. Unless you
                          need to represent those kinds of constraints,
                          SchedMachineModel is preferred. We'd like to
                          move toward using SchedMachineModel for most
                          things.<br>
                          <br>
                           -Hal<o:p></o:p></span></p>
                      <div>
                        <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif""><o:p> </o:p></span></p>
                      </div>
                      <div>
                        <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">Thanks
                            for the reply Hal. I thought my thread was
                            dead. <o:p></o:p></span></p>
                      </div>
                      <div>
                        <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif""><o:p> </o:p></span></p>
                      </div>
                      <div>
                        <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">I
                            was recommended to use SchedMachineModel for
                            my VLIW, which is what I've done (it took me
                            a month to learn tblgen and write the
                            scheduling model and one more month do get
                            my head around LLVM. My experience with
                            compilers is limited to a class I took in
                            college a year ago). The scheduling part
                            seems to be working (at least this is what
                            my limited testing shows). However current
                            DFAPacketizer is based on itineraries
                            (DFAPacketizer.cpp, lines 66-73). I was
                            hoping there is a way to convert between
                            these two representations so that I wouldn't
                            have to rewrite the packetizer.
                            Unfortunately my experience with compilers
                            is very limited and I still have a lot to
                            learn. <o:p></o:p></span></p>
                      </div>
                      <div>
                        <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif""><o:p> </o:p></span></p>
                      </div>
                      <div>
                        <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">Right
                            now I have two options. In both of the cases
                            there are significant drawbacks.<o:p></o:p></span></p>
                      </div>
                      <div>
                        <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">1.
                            Rewrite the scheduling model using
                            itineraries. Unfortunately there is very
                            little help available on this topic, I even
                            asked on the IRC channel and nobody seems to
                            know how it is done, since everyone is
                            moving towards the SchedMachineModel.<o:p></o:p></span></p>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </blockquote>
            <div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif""><o:p> </o:p></span></p>
            </div>
            <p class="MsoNormal"><span
                style="font-size:12.0pt;font-family:"Times New
                Roman","serif"">Not many people work with
                either the machine model or itineraries.<o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal"><span
                style="font-size:12.0pt;font-family:"Times New
                Roman","serif""><o:p> </o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal"><span
                style="font-size:12.0pt;font-family:"Times New
                Roman","serif"">Be careful! I think the
                DFAPacketizer will only be effective on a very simple
                itinerary (which could easily have been expressed in the
                new machine model instead). I’ve heard stories of it
                “blowing up” on large itineraries. I have no direct
                experience with it.<o:p></o:p></span></p>
          </div>
          <div>
            <p class="MsoNormal"><span
                style="font-size:12.0pt;font-family:"Times New
                Roman","serif""><br>
                <br>
                <o:p></o:p></span></p>
            <div>
              <div>
                <div>
                  <div>
                    <div>
                      <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">2.
                          Write a new packetizer which will use the
                          SchedMachineModel, however, as I said before,
                          I have a very limited experience with
                          compilers and this looks like some major work.
                          I'm not afraid of it, it is just there is not
                          much information and help available.<o:p></o:p></span></p>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif""><o:p> </o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif"">This looks like an
                  opportunity for you to learn something interesting.
                  Generating a state machine from a set of constraints
                  is fairly straightforward. The only difficultly lies
                  in limiting the total number of states so you don’t
                  end up with a giant table. If you were able to express
                  those constraints in the machine model they must not
                  be too complicated.<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif""><o:p> </o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif"">If your state machine
                  is really just modeling the number of functional units
                  that can be used by a given VLIW bundle, then you
                  don’t need to generate a state machine at all. All you
                  need are counters. MachineScheduler can do this for
                  you. It already has some support for scheduling
                  instruction groups for a simple in-order machine
                  (without plugging in your own scheduler at all).
                  Currently, this isn’t fully implemented—it isn’t
                  modeling multiple functional units per cycle. But that
                  would be *very* easy to fix and is something I could
                  help with. It’s just that no one has asked for it.<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif""><o:p> </o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif"">Andy<o:p></o:p></span></p>
            </div>
            <p class="MsoNormal"><span
                style="font-size:12.0pt;font-family:"Times New
                Roman","serif""><br>
                <br>
                <o:p></o:p></span></p>
            <div>
              <div>
                <div>
                  <div>
                    <div>
                      <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif""><o:p> </o:p></span></p>
                    </div>
                    <div>
                      <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">I
                          would greatly appreciate any help on this<o:p></o:p></span></p>
                    </div>
                    <div>
                      <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif""><o:p> </o:p></span></p>
                    </div>
                    <div>
                      <p class="MsoNormal"><span
style="font-size:9.0pt;font-family:"Helvetica","sans-serif"">Rail<o:p></o:p></span></p>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <p class="MsoNormal"><span
              style="font-size:12.0pt;font-family:"Times New
              Roman","serif""><br>
              <br>
              <br>
              <br>
              <o:p></o:p></span></p>
          <pre>_______________________________________________<o:p></o:p></pre>
          <pre>LLVM Developers mailing list<o:p></o:p></pre>
          <pre><a moz-do-not-send="true" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send="true" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></pre>
        </blockquote>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Times New
            Roman","serif""><o:p> </o:p></span></p>
      </div>
    </blockquote>
    <br>
  </body>
</html>