<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Transforms/BBVectorize/X86, branch stable</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Transforms/BBVectorize/X86?h=stable</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Transforms/BBVectorize/X86?h=stable'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-02-17T15:59:26Z</updated>
<entry>
<title>BBVectorize: Fix an invalid reference bug</title>
<updated>2013-02-17T15:59:26Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2013-02-17T15:59:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f79f136cc64b0625b77c7b9008ed8c5b848b6b17'/>
<id>urn:sha1:f79f136cc64b0625b77c7b9008ed8c5b848b6b17</id>
<content type='text'>
This fixes PR15289. This bug was introduced (recently) in r175215; collecting
all std::vector references for candidate pairs to delete at once is invalid
because subsequent lookups in the owning DenseMap could invalidate the
references.

bugpoint was able to reduce a useful test case. Unfortunately, because whether
or not this asserts depends on memory layout, this test case will sometimes
appear to produce valid output. Nevertheless, running under valgrind will
reveal the error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175397 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Use VTTI to compute costs for intrinsics vectorization</title>
<updated>2012-12-26T01:36:57Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-12-26T01:36:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=a77728415857196035c0090f7b2749d7971811a2'/>
<id>urn:sha1:a77728415857196035c0090f7b2749d7971811a2</id>
<content type='text'>
For the time being this includes only some dummy test cases. Once the
generic implementation of the intrinsics cost function does something other
than assuming scalarization in all cases, or some target specializes the
interface, some real test cases can be added.

Also, for consistency, I changed the type of IID from unsigned to Intrinsic::ID
in a few other places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171079 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Don't vectorize vector-manipulation chains</title>
<updated>2012-11-13T03:12:40Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-13T03:12:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=4387b8c95971a512e07bfda30dea6459e8419e8f'/>
<id>urn:sha1:4387b8c95971a512e07bfda30dea6459e8419e8f</id>
<content type='text'>
Don't choose a vectorization plan containing only shuffles and
vector inserts/extracts. Due to inperfections in the cost model,
these can lead to infinite recusion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167811 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Only some insert element operand pairs are free.</title>
<updated>2012-11-12T23:55:36Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-12T23:55:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=b2b2469a9178f7e22cd7a69f3093e54d67d6b712'/>
<id>urn:sha1:b2b2469a9178f7e22cd7a69f3093e54d67d6b712</id>
<content type='text'>
This fixes another infinite recursion case when using target costs.
We can only replace insert element input chains that are pure (end
with inserting into an undef).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167784 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Use a more sophisticated check for input cost</title>
<updated>2012-11-12T21:21:02Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-12T21:21:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=86c88c938aec8006d2ce83325ec1f31e1154620b'/>
<id>urn:sha1:86c88c938aec8006d2ce83325ec1f31e1154620b</id>
<content type='text'>
The old checking code, which assumed that input shuffles and insert-elements
could always be folded (and thus were free) is too simple.
This can only happen in special circumstances.
Using the simple check caused infinite recursion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167750 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Check the types of compare instructions</title>
<updated>2012-11-12T19:41:38Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-12T19:41:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=5094257518ea7b615d87ef5bea657625ffa81991'/>
<id>urn:sha1:5094257518ea7b615d87ef5bea657625ffa81991</id>
<content type='text'>
The pass would previously assert when trying to compute the cost of
compare instructions with illegal vector types (like struct pointers).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167743 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Check the input types of shuffles for legality</title>
<updated>2012-11-12T14:50:59Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-12T14:50:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=8b9796f4f83bea2bbefcd2822eb574abdb7f3d1b'/>
<id>urn:sha1:8b9796f4f83bea2bbefcd2822eb574abdb7f3d1b</id>
<content type='text'>
This fixes a bug where shuffles were being fused such that the
resulting input types were not legal on the target. This would
occur only when both inputs and dependencies were also foldable
operations (such as other shuffles) and there were other connected
pairs in the same block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167731 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Commit the rest of the test-case change.</title>
<updated>2012-11-01T21:57:27Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-01T21:57:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=4ac300dfac53022e690fc9a60deb42976c369a6f'/>
<id>urn:sha1:4ac300dfac53022e690fc9a60deb42976c369a6f</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167257 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Use target costs for incoming and outgoing values instead of the depth heuristic.</title>
<updated>2012-11-01T21:50:12Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-11-01T21:50:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=78fd353d5e5daedc47ecc31b6193ca48793c249c'/>
<id>urn:sha1:78fd353d5e5daedc47ecc31b6193ca48793c249c</id>
<content type='text'>
When target cost information is available, compute explicit costs of inserting and
extracting values from vectors. At this point, all costs are estimated using the
target information, and the chain-depth heuristic is not needed. As a result, it is now, by
default, disabled when using target costs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167256 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>BBVectorize: Choose pair ordering to minimize shuffles</title>
<updated>2012-10-31T15:17:07Z</updated>
<author>
<name>Hal Finkel</name>
<email>hfinkel@anl.gov</email>
</author>
<published>2012-10-31T15:17:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=72465ea23d010507d3746adc126d719005981e05'/>
<id>urn:sha1:72465ea23d010507d3746adc126d719005981e05</id>
<content type='text'>
BBVectorize would, except for loads and stores, always fuse instructions
so that the first instruction (in the current source order) would always
represent the low part of the input vectors and the second instruction
would always represent the high part. This lead to too many shuffles
being produced because sometimes the opposite order produces fewer of them.

With this change, BBVectorize tracks the kind of pair connections that form
the DAG of candidate pairs, and uses that information to reorder the pairs to
avoid excess shuffles. Using this information, a future commit will be able
to add VTTI-based shuffle costs to the pair selection procedure. Importantly,
the number of remaining shuffles can now be estimated during pair selection.

There are some trivial instruction reorderings in the test cases, and one
simple additional test where we certainly want to do a reordering to
avoid an unnecessary shuffle.

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