<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/llvm/unittests/Analysis/LoopInfoTest.cpp, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-12-12T19:22:36+00:00</updated>
<entry>
<title>Rename LoopInfo::isRotated() to LoopInfo::isRotatedForm().</title>
<updated>2019-12-12T19:22:36+00:00</updated>
<author>
<name>Kit Barton</name>
<email>kbarton@ca.ibm.com</email>
</author>
<published>2019-12-12T19:18:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=61368c8e98c567fa76d45e8f928306db9d00dde2'/>
<id>urn:sha1:61368c8e98c567fa76d45e8f928306db9d00dde2</id>
<content type='text'>
This patch renames the LoopInfo::isRotated() method to LoopInfo::isRotatedForm()
to make it clear that the method checks whether the loop is in rotated form, not
whether the loop has been rotated by the LoopRotation pass.
</content>
</entry>
<entry>
<title>[Loop] Add isRotated method to Loop class.</title>
<updated>2019-12-11T14:43:10+00:00</updated>
<author>
<name>Kit Barton</name>
<email>kbarton@ca.ibm.com</email>
</author>
<published>2019-12-03T19:20:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=942c9946cc2fba6acd3805cfeaca90007f532f1f'/>
<id>urn:sha1:942c9946cc2fba6acd3805cfeaca90007f532f1f</id>
<content type='text'>
Summary:
This patch adds a method to determine if a loop is in rotated form (the latch is
an exiting block). It also modifies the getLoopGuardBranch method to use this
new method. This method can also be used in Loopfusion. Once this patch lands I
will make the corresponding changes there.

Reviewers: jdoerfert, Meinersbur, dmgreen, etiotto, Whitney, fhahn, hfinkel

Reviewed By: Meinersbur

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D65958
</content>
</entry>
<entry>
<title>[LOOPGUARD] Remove asserts in getLoopGuardBranch</title>
<updated>2019-10-06T16:39:43+00:00</updated>
<author>
<name>Whitney Tsang</name>
<email>whitney.uwaterloo@gmail.com</email>
</author>
<published>2019-10-06T16:39:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=dcb75bf843eae4a7f0d6d72930f49f7d31c07f98'/>
<id>urn:sha1:dcb75bf843eae4a7f0d6d72930f49f7d31c07f98</id>
<content type='text'>
Summary: The assertion in getLoopGuardBranch can be a 'return nullptr'
under if condition.
Authored By: DTharun
Reviewer: Whitney, fhahn
Reviewed By: Whitney, fhahn
Subscribers: fhahn, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D66084

llvm-svn: 373857
</content>
</entry>
<entry>
<title>[LOOPGUARD] Disable loop with multiple loop exiting blocks.</title>
<updated>2019-09-26T20:20:42+00:00</updated>
<author>
<name>Whitney Tsang</name>
<email>whitney.uwaterloo@gmail.com</email>
</author>
<published>2019-09-26T20:20:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=9c5fbcf9206d46e9226ca3168e7580d96d7609f0'/>
<id>urn:sha1:9c5fbcf9206d46e9226ca3168e7580d96d7609f0</id>
<content type='text'>
Summary: As discussed in the loop group meeting. With the current
definition of loop guard, we should not allow multiple loop exiting
blocks. For loops that has multiple loop exiting blocks, we can simply
unable to find the loop guard.
When getUniqueExitBlock() obtains a vector size not equals to one, that
means there is either no exit blocks or there exists more than one
unique block the loop exit to.
If we don't disallow loop with multiple loop exit blocks, then with our
current implementation, there can exist exit blocks don't post dominated
by the non pre-header successor of the guard block.
Reviewer: reames, Meinersbur, kbarton, etiotto, bmahjour
Reviewed By: Meinersbur, kbarton
Subscribers: fhahn, hiraditya, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D66529

llvm-svn: 373011
</content>
</entry>
<entry>
<title>[LOOPINFO] Introduce the loop guard API.</title>
<updated>2019-07-25T16:13:18+00:00</updated>
<author>
<name>Whitney Tsang</name>
<email>whitney.uwaterloo@gmail.com</email>
</author>
<published>2019-07-25T16:13:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=8ee361ebe5ebada5c303b9aa93fecde9e4bec02a'/>
<id>urn:sha1:8ee361ebe5ebada5c303b9aa93fecde9e4bec02a</id>
<content type='text'>
Summary:
This is the first patch for the loop guard. We introduced
getLoopGuardBranch() and isGuarded().
This currently only works on simplified loop, as it requires a preheader
and a latch to identify the guard.
It will work on loops of the form:
/// GuardBB:
///   br cond1, Preheader, ExitSucc &lt;== GuardBranch
/// Preheader:
///   br Header
/// Header:
///  ...
///   br Latch
/// Latch:
///   br cond2, Header, ExitBlock
/// ExitBlock:
///   br ExitSucc
/// ExitSucc:
Prior discussions leading upto the decision to introduce the loop guard
API: http://lists.llvm.org/pipermail/llvm-dev/2019-May/132607.html
Reviewer: reames, kbarton, hfinkel, jdoerfert, Meinersbur, dmgreen
Reviewed By: reames
Subscribers: wuzish, hiraditya, jsji, llvm-commits, bmahjour, etiotto
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D63885

llvm-svn: 367033
</content>
</entry>
<entry>
<title>[LoopInfo] Fix getUniqueNonLatchExitBlocks</title>
<updated>2019-07-17T07:09:20+00:00</updated>
<author>
<name>Serguei Katkov</name>
<email>serguei.katkov@azul.com</email>
</author>
<published>2019-07-17T07:09:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=587d13d4c23500f517a99b8c0517e5e2b5aa0889'/>
<id>urn:sha1:587d13d4c23500f517a99b8c0517e5e2b5aa0889</id>
<content type='text'>
It is possible that exit block has two predecessors and one of them is a latch
block while another is not.

Current algorithm is based on the assumption that all exits are dedicated
and therefore we can check only first predecessor of loop exit to find all unique
exits.

However if we do not consider latch block and it is first predecessor of some
exit then this exit will be found.

Regression test is added.

As a side effect of algorithm re-writing, the restriction that all exits are dedicated
is eliminated.

Reviewers: reames, fhahn, efriedma
Reviewed By: efriedma
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D64787

llvm-svn: 366294
</content>
</entry>
<entry>
<title>[LoopInfo] Introduce getUniqueNonLatchExitBlocks utility function</title>
<updated>2019-07-15T05:51:10+00:00</updated>
<author>
<name>Serguei Katkov</name>
<email>serguei.katkov@azul.com</email>
</author>
<published>2019-07-15T05:51:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f1ee04c42a431d88cd66b884570ca7928cffd0cd'/>
<id>urn:sha1:f1ee04c42a431d88cd66b884570ca7928cffd0cd</id>
<content type='text'>
Extract the code from LoopUnrollRuntime into utility function to
re-use it in D63923.

Reviewers: reames, mkuper
Reviewed By: reames
Subscribers: fhahn, hiraditya, zzheng, dmgreen, llvm-commits
Differential Revision: https://reviews.llvm.org/D64548

llvm-svn: 366040
</content>
</entry>
<entry>
<title>[LOOPINFO] Extend Loop object to add utilities to get the loop bounds,</title>
<updated>2019-06-05T20:42:47+00:00</updated>
<author>
<name>Whitney Tsang</name>
<email>whitney.uwaterloo@gmail.com</email>
</author>
<published>2019-06-05T20:42:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2d0896c1cb90243f12df698e84458016c0c121dc'/>
<id>urn:sha1:2d0896c1cb90243f12df698e84458016c0c121dc</id>
<content type='text'>
step, and loop induction variable.

Summary: This PR extends the loop object with more utilities to get loop
bounds, step, and loop induction variable. There already exists passes
which try to obtain the loop induction variable in their own pass, e.g.
loop interchange. It would be useful to have a common area to get these
information.

/// Example:
/// for (int i = lb; i &lt; ub; i+=step)
///   &lt;loop body&gt;
/// --- pseudo LLVMIR ---
/// beforeloop:
///   guardcmp = (lb &lt; ub)
///   if (guardcmp) goto preheader; else goto afterloop
/// preheader:
/// loop:
///   i1 = phi[{lb, preheader}, {i2, latch}]
///   &lt;loop body&gt;
///   i2 = i1 + step
/// latch:
///   cmp = (i2 &lt; ub)
///   if (cmp) goto loop
/// exit:
/// afterloop:
///
/// getBounds
///   getInitialIVValue      --&gt; lb
///   getStepInst            --&gt; i2 = i1 + step
///   getStepValue           --&gt; step
///   getFinalIVValue        --&gt; ub
///   getCanonicalPredicate  --&gt; '&lt;'
///   getDirection           --&gt; Increasing
/// getInductionVariable          --&gt; i1
/// getAuxiliaryInductionVariable --&gt; {i1}
/// isCanonical                   --&gt; false

Reviewers: kbarton, hfinkel, dmgreen, Meinersbur, jdoerfert, syzaara,
fhahn
Reviewed By: kbarton
Subscribers: tvvikram, bmahjour, etiotto, fhahn, jsji, hiraditya,
llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D60565

llvm-svn: 362644
</content>
</entry>
<entry>
<title>Revert "Title: [LOOPINFO] Extend Loop object to add utilities to get the loop"</title>
<updated>2019-06-05T15:32:56+00:00</updated>
<author>
<name>Whitney Tsang</name>
<email>whitney.uwaterloo@gmail.com</email>
</author>
<published>2019-06-05T15:32:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=590b1aee609d30346aee77a699381d21c538dd56'/>
<id>urn:sha1:590b1aee609d30346aee77a699381d21c538dd56</id>
<content type='text'>
This reverts commit d34797dfc26c61cea19f45669a13ea572172ba34.

llvm-svn: 362615
</content>
</entry>
<entry>
<title>Title: [LOOPINFO] Extend Loop object to add utilities to get the loop</title>
<updated>2019-06-05T14:34:12+00:00</updated>
<author>
<name>Whitney Tsang</name>
<email>whitney.uwaterloo@gmail.com</email>
</author>
<published>2019-06-05T14:34:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=d34797dfc26c61cea19f45669a13ea572172ba34'/>
<id>urn:sha1:d34797dfc26c61cea19f45669a13ea572172ba34</id>
<content type='text'>
bounds, step, and loop induction variable.

Summary: This PR extends the loop object with more utilities to get loop
bounds, step, and loop induction variable. There already exists passes
which try to obtain the loop induction variable in their own pass, e.g.
loop interchange. It would be useful to have a common area to get these
information.

/// Example:
/// for (int i = lb; i &lt; ub; i+=step)
///   &lt;loop body&gt;
/// --- pseudo LLVMIR ---
/// beforeloop:
///   guardcmp = (lb &lt; ub)
///   if (guardcmp) goto preheader; else goto afterloop
/// preheader:
/// loop:
///   i1 = phi[{lb, preheader}, {i2, latch}]
///   &lt;loop body&gt;
///   i2 = i1 + step
/// latch:
///   cmp = (i2 &lt; ub)
///   if (cmp) goto loop
/// exit:
/// afterloop:
///
/// getBounds
///   getInitialIVValue      --&gt; lb
///   getStepInst            --&gt; i2 = i1 + step
///   getStepValue           --&gt; step
///   getFinalIVValue        --&gt; ub
///   getCanonicalPredicate  --&gt; '&lt;'
///   getDirection           --&gt; Increasing
/// getInductionVariable          --&gt; i1
/// getAuxiliaryInductionVariable --&gt; {i1}
/// isCanonical                   --&gt; false

Reviewers: kbarton, hfinkel, dmgreen, Meinersbur, jdoerfert, syzaara,
fhahn
Reviewed By: kbarton
Subscribers: tvvikram, bmahjour, etiotto, fhahn, jsji, hiraditya,
llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D60565

llvm-svn: 362609
</content>
</entry>
</feed>
