<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 3/30/20 11:27 AM, Bardia Mahjour via
      llvm-dev wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:OF94AD4AAC.4120412B-ON0025853B.0065396A-8525853B.00656432@notes.na.collabserv.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <p><font size="2">Forwarding to the dev list, in case others ran
          into similar issues and/or have input on this topic.</font><br>
        <br>
        <font size="2">Bardia Mahjour<br>
        </font><br>
        <font size="2" color="#800080">----- Forwarded by Bardia
          Mahjour/Toronto/IBM</font><font size="2" color="#800080"> on
          2020/03/30 02:25 PM</font><font size="2" color="#800080">
          -----</font><br>
        <br>
        <font size="2" color="#5F5F5F">From: </font><font size="2">Bardia
          Mahjour/Toronto/IBM</font><br>
        <font size="2" color="#5F5F5F">To: </font><font size="2"><a class="moz-txt-link-abbreviated" href="mailto:listmail@philipreames.com">listmail@philipreames.com</a></font><br>
        <font size="2" color="#5F5F5F">Cc: </font><font size="2">"Michael
          Kruse" <a class="moz-txt-link-rfc2396E" href="mailto:llvm@meinersbur.de"><llvm@meinersbur.de></a></font><br>
        <font size="2" color="#5F5F5F">Date: </font><font size="2">2020/03/26
          11:47 AM</font><br>
        <font size="2" color="#5F5F5F">Subject: </font><font size="2">Scalar
          Evolution Expressions Involving Sibling Loops</font><br>
      </p>
      <hr style="color:#8091A5; " width="100%" size="2"
        noshade="noshade" align="left"><br>
      <br>
      <font size="2">Hi Philip,</font><br>
      <br>
      <font size="2">I hope you are doing well. </font><br>
      <br>
      <font size="2">We've recently run into an issue with SCEV in the
        context of dependence analysis, and would like your opinion on
        it. Background discussion can be found here </font><a
        href="https://reviews.llvm.org/D75628#inline-689527"
        moz-do-not-send="true"><font size="2">https://reviews.llvm.org/D75628#inline-689527</font></a><font
        size="2">.</font><br>
      <br>
      <font size="2">Basically in this case, the dependence equation
        requires us to symbolically create an expression involving two
        or more recurrences that recur with non-dominating loops
        (sibling loops). </font></blockquote>
    <font size="2">I'm not following your example.  If you have two
      sibling loops with the same parent, one will frequently, but not
      always dominate the other.  Can you give a specific example of
      when forming a recurrence between two siblings (without one
      dominating the other), is useful?  </font>
    <blockquote type="cite"
cite="mid:OF94AD4AAC.4120412B-ON0025853B.0065396A-8525853B.00656432@notes.na.collabserv.com"><font
        size="2">Currently creating such a SCEV expression trips asserts
        in `</font><tt><font size="2">CompareSCEVComplexity</font></tt><font
        size="2">()` and `</font><tt><font size="2">isKnownViaInduction</font></tt><font
        size="2">()` saying that a given SCEV expression cannot be
        composed of recurrences that have no dominance relationship
        between them. </font><br>
      <br>
      <font size="2">Michael tried explaining to me why there is this
        restriction about dominance, and I'm beginning to understand why
        such restriction may be necessary when evaluating or expanding
        SCEV expressions in outer scopes (eg. `</font><tt>getSCEVAtScope</tt><font
        size="2">(nullptr)`) but I still don't understand why this
        restriction is imposed at construction. Shouldn't this
        restriction be asserted on when calling getSCEVAtScope instead
        of when creating AddRecs, given that simplification steps may
        remove identical terms involving non-dominating loops? </font><br>
    </blockquote>
    <font size="2">Well, SCEV construction is generally done to parallel
      IR.  SSA requires dominance, so having the SCEV operands require
      dominance would seem like a reasonable thing.  If you want to
      change this, you'll need to motivate the change.  (i.e. see above
      question)</font><br>
    <blockquote type="cite"
cite="mid:OF94AD4AAC.4120412B-ON0025853B.0065396A-8525853B.00656432@notes.na.collabserv.com"><br>
      <font size="2">We would appreciate any other insight you might
        have about this issue.</font><br>
      <br>
      <font size="2">Regards,</font><br>
      <br>
      <font size="2">Bardia Mahjour<br>
        Compiler Optimizations<br>
        IBM Toronto Software Lab<br>
        <a class="moz-txt-link-abbreviated" href="mailto:bmahjour@ca.ibm.com">bmahjour@ca.ibm.com</a></font><br>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
    </blockquote>
  </body>
</html>