<div dir="ltr">Hi Florian,<div><br></div><div>Thanks for the reply.</div><div><br></div><div>We have tried a condition like this:</div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b><br></b></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b>if (LAI.getMaxSafeDepDistBytes() == -1ULL && !LAI.canVectorizeMemory()) {</b></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b>  print("Unknown dependences in loop");</b></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b>  return false;</b></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b>}</b></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b><br></b></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">Looks like </span><b>LAI.getMaxSafeDepDistBytes() </b>is <b>not always </b>capturing the distance for non-vectorizable loops.</div><div><br></div><div><font color="#263238" face="Roboto, sans-serif"><span style="font-size:13px">This example from TSVC, is not vectorizable but dependences are analyzable.</span></font></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">for (int i = 1; i < LEN_1D - 1; i++) {</span><br style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">      a[i] = b[i - 1] + c[i] * d[i];</span><br style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">      b[i] = b[i + 1] - e[i] * d[i];</span><br style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"> }</span><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b><br></b></span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><br></span></div><div><div><b> LAI.getMaxSafeDepDistBytes() is : (ULL)-1<font color="#263238" face="Roboto, sans-serif"><span style="font-size:13px"><br></span></font></b></div><div><b> LAI.canVectroizeMemory is : false</b></div><div><b><br></b></div><div>Any more suggestions would be appreciated. :)</div><div><b><br></b></div><div><br></div><div><b><br></b></div><div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 18, 2021 at 11:54 PM Florian Hahn <<a href="mailto:florian_hahn@apple.com">florian_hahn@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;">Hi,<br><div><br><blockquote type="cite"><div>On 18 Feb 2021, at 18:17, Dangeti Tharun kumar via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:</div><br><div><div dir="ltr">Hi,<div><br></div><div>I am using LAI->getDependences(), It returns a vector of Dependence objects in a Loop.</div><div>If the loop is un-analyzable or parallel, an empty list is returned.</div><div><br></div><div><b>for example:</b></div><div><br></div><div><b>Loop A:</b></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">for (int i = 0; i < N; i ++) {</span><br style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">        a[i] = c[i] + d[i];</span><br style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">        b[i] = c[i] * d[i];</span><br style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">}</span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px"><b>Loop B:</b></span></div><div><font color="#263238" face="Roboto, sans-serif"><span style="font-size:13px">for (int i = 0; i < N; i++) {</span></font></div><div><font color="#263238" face="Roboto, sans-serif"><span style="font-size:13px">     </span></font><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">a[b[i]] = c[i] + d[i];</span></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">     c[i] = c[i  - 1] + 1; </span></div><div><font color="#263238" face="Roboto, sans-serif"><span style="font-size:13px">}</span></font></div><div><br></div><div>Loop A is parallel and Loop B has non-simple dependences(LAI bails out) for both the cases we get an empty set of dependences.</div><div><br></div><div>Is there an API that can tell if LAI was successful in dependence computation?</div></div></div></blockquote></div><br><div>I think canVectorizeMemory should do what you want (possibly in combination with getMaxSafeDepDistBytes</div><div><br></div><div>Cheers,</div><div>Florian</div></div></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Regards,</div><div>DTharun</div></div></div></div></div></div></div></div>

<br>
<span><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap;background-color:yellow">Disclaimer:- </span><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-size:small">This </span><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-size:small">footer text is to convey that this email is sent by one of the </span><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-size:small">users of IITH. So, do not mark it as SPAM.</span></p></span>