<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Transforms/SimplifyCFG, branch release_33</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Transforms/SimplifyCFG?h=release_33</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Transforms/SimplifyCFG?h=release_33'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-04-29T21:28:24Z</updated>
<entry>
<title>SimplifyCFG: If convert single conditional stores</title>
<updated>2013-04-29T21:28:24Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-04-29T21:28:24Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=8228ffe72d726978d0265c3c407172f1b9851502'/>
<id>urn:sha1:8228ffe72d726978d0265c3c407172f1b9851502</id>
<content type='text'>
This resurrects r179957, but adds code that makes sure we don't touch
atomic/volatile stores:

This transformation will transform a conditional store with a preceeding
uncondtional store to the same location:

 a[i] =
 may-alias with a[i] load
 if (cond)
   a[i] = Y

into an unconditional store.

 a[i] = X
 may-alias with a[i] load
 tmp = cond ? Y : X;
 a[i] = tmp

We assume that on average the cost of a mispredicted branch is going to be
higher than the cost of a second store to the same location, and that the
secondary benefits of creating a bigger basic block for other optimizations to
work on outway the potential case where the branch would be correctly predicted
and the cost of the executing the second store would be noticably reflected in
performance.

hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With
this change we are on par with gcc's performance (gcc also performs this
transformation). There was a 1.2 % performance improvement on a ARM swift chip.
Other tests in the test-suite+external seem to be mostly uninfluenced in my
experiments:
This optimization was triggered on 41 tests such that the executable was
different before/after the patch. Only 1 out of the 40 tests (dealII) was
reproducable below 100% (by about .4%). Given that hmmer benefits so much I
believe this to be a fair trade off.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180731 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Revert "SimplifyCFG: If convert single conditional stores"</title>
<updated>2013-04-21T13:09:04Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-04-21T13:09:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=54d9a3e2df7055bd4d31a18b29f37c4541653efc'/>
<id>urn:sha1:54d9a3e2df7055bd4d31a18b29f37c4541653efc</id>
<content type='text'>
There is the temptation to make this tranform dependent on target information as
it is not going to be beneficial on all (sub)targets. Therefore, we should
probably do this in MI Early-Ifconversion.

This reverts commit r179957. Original commit message:

"SimplifyCFG: If convert single conditional stores

This transformation will transform a conditional store with a preceeding
uncondtional store to the same location:

a[i] =
may-alias with a[i] load
if (cond)
    a[i] = Y
into an unconditional store.

a[i] = X
may-alias with a[i] load
tmp = cond ? Y : X;
a[i] = tmp

We assume that on average the cost of a mispredicted branch is going to be
higher than the cost of a second store to the same location, and that the
secondary benefits of creating a bigger basic block for other optimizations to
work on outway the potential case were the branch would be correctly predicted
and the cost of the executing the second store would be noticably reflected in
performance.

hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With
this change we are on par with gcc's performance (gcc also performs this
transformation). There was a 1.2 % performance improvement on a ARM swift chip.
Other tests in the test-suite+external seem to be mostly uninfluenced in my
experiments:
This optimization was triggered on 41 tests such that the executable was
different before/after the patch. Only 1 out of the 40 tests (dealII) was
reproducable below 100% (by about .4%). Given that hmmer benefits so much I
believe this to be a fair trade off.

I am going to watch performance numbers across the builtbots and will revert
this if anything unexpected comes up."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179980 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>SimplifyCFG: If convert single conditional stores</title>
<updated>2013-04-20T21:42:09Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-04-20T21:42:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f7af1987ddcec768d8608d608ce187115510b21d'/>
<id>urn:sha1:f7af1987ddcec768d8608d608ce187115510b21d</id>
<content type='text'>
This transformation will transform a conditional store with a preceeding
uncondtional store to the same location:

 a[i] =
 may-alias with a[i] load
 if (cond)
   a[i] = Y

into an unconditional store.

 a[i] = X
 may-alias with a[i] load
 tmp = cond ? Y : X;
 a[i] = tmp

We assume that on average the cost of a mispredicted branch is going to be
higher than the cost of a second store to the same location, and that the
secondary benefits of creating a bigger basic block for other optimizations to
work on outway the potential case were the branch would be correctly predicted
and the cost of the executing the second store would be noticably reflected in
performance.

hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With
this change we are on par with gcc's performance (gcc also performs this
transformation). There was a 1.2 % performance improvement on a ARM swift chip.
Other tests in the test-suite+external seem to be mostly uninfluenced in my
experiments:
This optimization was triggered on 41 tests such that the executable was
different before/after the patch. Only 1 out of the 40 tests (dealII) was
reproducable below 100% (by about .4%). Given that hmmer benefits so much I
believe this to be a fair trade off.

I am going to watch performance numbers across the builtbots and will revert
this if anything unexpected comes up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179957 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>simplifycfg: Fix integer overflow converting switch into icmp.</title>
<updated>2013-04-16T08:35:36Z</updated>
<author>
<name>Hans Wennborg</name>
<email>hans@hanshq.net</email>
</author>
<published>2013-04-16T08:35:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=a121e24c541097b51309a06297005ac257b6728f'/>
<id>urn:sha1:a121e24c541097b51309a06297005ac257b6728f</id>
<content type='text'>
If a switch instruction has a case for every possible value of its type,
with the same successor, SimplifyCFG would replace it with an icmp ult,
but the computation of the bound overflows in that case, which inverts
the test.

Patch by Jed Davis!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179587 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Converted 8x tests of SimplifyCFG to use FileCheck instead of grep.</title>
<updated>2013-04-09T05:18:53Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-04-09T05:18:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=3c5aaa20ee2422e3530d38b9f0199b182da8eb82'/>
<id>urn:sha1:3c5aaa20ee2422e3530d38b9f0199b182da8eb82</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179087 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Don't remove a landing pad if the invoke requires a table entry.</title>
<updated>2013-03-11T20:53:00Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-03-11T20:53:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=d5bb20805e03cff03bfa3f85f189cbc8fb4a769a'/>
<id>urn:sha1:d5bb20805e03cff03bfa3f85f189cbc8fb4a769a</id>
<content type='text'>
An invoke may require a table entry. For instance, when the function it calls
is expected to throw.
&lt;rdar://problem/13360379&gt;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176827 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>SimplifyCFG fix for volatile load/store.</title>
<updated>2013-03-07T01:03:35Z</updated>
<author>
<name>Andrew Trick</name>
<email>atrick@apple.com</email>
</author>
<published>2013-03-07T01:03:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=119003f2a22ee7c4f78fed5710f98edb36b237b5'/>
<id>urn:sha1:119003f2a22ee7c4f78fed5710f98edb36b237b5</id>
<content type='text'>
Fixes rdar:13349374.

Volatile loads and stores need to be preserved even if the language
standard says they are undefined. "volatile" in this context means "get
out of the way compiler, let my platform handle it".

Additionally, this is the only way I know of with llvm to write to the
first page (when hardware allows) without dropping to assembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176599 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Use references to attribute groups on the call/invoke instructions.</title>
<updated>2013-02-22T09:09:42Z</updated>
<author>
<name>Bill Wendling</name>
<email>isanbard@gmail.com</email>
</author>
<published>2013-02-22T09:09:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=351b7a10e2560a835759748c58da09e53207b39d'/>
<id>urn:sha1:351b7a10e2560a835759748c58da09e53207b39d</id>
<content type='text'>
Listing all of the attributes for the callee of a call/invoke instruction is way
too much and makes the IR unreadable. Use references to attributes instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175877 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Filecheckized 2x tests in SimplifyCFG and removed their date prefix to fit with current llvm style for test names.</title>
<updated>2013-01-31T01:04:23Z</updated>
<author>
<name>Michael Gottesman</name>
<email>mgottesman@apple.com</email>
</author>
<published>2013-01-31T01:04:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=67dad63de642cb4d94928eae5d3568268e3398bd'/>
<id>urn:sha1:67dad63de642cb4d94928eae5d3568268e3398bd</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174011 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Re-revert r173342, without losing the compile time improvements, flat</title>
<updated>2013-01-27T06:42:03Z</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2013-01-27T06:42:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=455151e4f7b6dc264183ecc892a2f9678ff5fe46'/>
<id>urn:sha1:455151e4f7b6dc264183ecc892a2f9678ff5fe46</id>
<content type='text'>
out bug fixes, or functionality preserving refactorings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173610 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
