<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/lib/CodeGen/SelectionDAG, branch stable</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/lib/CodeGen/SelectionDAG?h=stable</id>
<link rel='self' href='https://git.amat.us/llvm/atom/lib/CodeGen/SelectionDAG?h=stable'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-04-01T18:12:58Z</updated>
<entry>
<title>Merge load/store sequences with adresses: base + index + offset</title>
<updated>2013-04-01T18:12:58Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-04-01T18:12:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f28a29b776b7dc2b97d09c75d69494f862c216b3'/>
<id>urn:sha1:f28a29b776b7dc2b97d09c75d69494f862c216b3</id>
<content type='text'>
We would also like to merge sequences that involve a variable index like in the
example below.

    int index = *idx++
    int i0 = c[index+0];
    int i1 = c[index+1];
    b[0] = i0;
    b[1] = i1;

By extending the parsing of the base pointer to handle dags that contain a
base, index, and offset we can handle examples like the one above.

The dag for the code above will look something like:

 (load (i64 add (i64 copyfromreg %c)
                (i64 signextend (i8 load %index))))

 (load (i64 add (i64 copyfromreg %c)
                (i64 signextend (i32 add (i32 signextend (i8 load %index))
                                         (i32 1)))))

The code that parses the tree ignores the intermediate sign extensions. However,
if there is a sign extension it needs to be on all indexes.

 (load (i64 add (i64 copyfromreg %c)
                (i64 signextend (add (i8 load %index)
                                     (i8 1))))
 vs

 (load (i64 add (i64 copyfromreg %c)
                (i64 signextend (i32 add (i32 signextend (i8 load %index))
                                         (i32 1)))))
radar://13536387

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178483 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>DAGCombine: visitXOR can replace a node without returning it, bail out in that case.</title>
<updated>2013-03-30T21:28:18Z</updated>
<author>
<name>Benjamin Kramer</name>
<email>benny.kra@googlemail.com</email>
</author>
<published>2013-03-30T21:28:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=0b68b758bbb6718fc67423109eeb9df64c711a37'/>
<id>urn:sha1:0b68b758bbb6718fc67423109eeb9df64c711a37</id>
<content type='text'>
Fixes the crash reported in PR15608.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178429 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>[fast-isel] Add a preemptive fix for the case where we fail to materialize an</title>
<updated>2013-03-28T23:04:47Z</updated>
<author>
<name>Chad Rosier</name>
<email>mcrosier@apple.com</email>
</author>
<published>2013-03-28T23:04:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=7ae3bb83c278e991940d022b7b48d996da408abf'/>
<id>urn:sha1:7ae3bb83c278e991940d022b7b48d996da408abf</id>
<content type='text'>
immediate in a register.  I don't believe this should ever fail, but I see no
harm in trying to make this code bullet proof.

I've added an assert to ensure my assumtion is correct.  If the assertion fires
something is wrong and we should fix it, rather then just silently fall back to
SelectionDAG isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178305 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Enhance folding of (extract_subvec (insert_subvec V1, V2, IIdx), EIdx)</title>
<updated>2013-03-25T23:47:35Z</updated>
<author>
<name>Michael Liao</name>
<email>michael.liao@intel.com</email>
</author>
<published>2013-03-25T23:47:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=b4f98ea1213c866f39aa5b341ec0116f9c2335d7'/>
<id>urn:sha1:b4f98ea1213c866f39aa5b341ec0116f9c2335d7</id>
<content type='text'>
- Handle the case where the result of 'insert_subvect' is bitcasted
  before 'extract_subvec'. This removes the redundant insertf128/extractf128
  pair on unaligned 256-bit vector load/store on vectors of non 64-bit integer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177945 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Disable some unsafe-fp-math DAG-combine transformation after legalization.</title>
<updated>2013-03-25T22:52:29Z</updated>
<author>
<name>Shuxin Yang</name>
<email>shuxin.llvm@gmail.com</email>
</author>
<published>2013-03-25T22:52:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=1cd1d02141788b212e185d190b4c358e47cc74b4'/>
<id>urn:sha1:1cd1d02141788b212e185d190b4c358e47cc74b4</id>
<content type='text'>
For instance, following transformation will be disabled:
    x + x + x =&gt; 3.0f * x;

The problem of these transformations is that it introduces a FP constant, which
following Instruction-Selection pass cannot handle.

Reviewed by Nadav, thanks a lot!

rdar://13445387


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177933 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Remove the type legality check from the SelectionDAGBuilder when it lowers @llvm.fmuladd to ISD::FMA nodes.</title>
<updated>2013-03-23T08:26:53Z</updated>
<author>
<name>Owen Anderson</name>
<email>resistor@mac.com</email>
</author>
<published>2013-03-23T08:26:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=7834c7143384bfde38e39e01158546304ca4f0c2'/>
<id>urn:sha1:7834c7143384bfde38e39e01158546304ca4f0c2</id>
<content type='text'>
Performing this check unilaterally prevented us from generating FMAs when the incoming IR contained illegal vector types which would eventually be legalized to underlying types that *did* support FMA.
For example, an @llvm.fmuladd on an OpenCL float16 should become a sequence of float4 FMAs, not float4 fmul+fadd's.

NOTE: Because we still call the target-specific profitability hook, individual targets can reinstate the old behavior, if desired, by simply performing the legality check inside their callback hook.  They can also perform more sophisticated legality checks, if, for example, some illegal vector types can be productively implemented as FMAs, but not others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177820 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Make variable name more explicit and eliminate redundant lookup in SDNodeOrdering</title>
<updated>2013-03-20T23:10:59Z</updated>
<author>
<name>Justin Holewinski</name>
<email>jholewinski@nvidia.com</email>
</author>
<published>2013-03-20T23:10:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=93c1fd49d2ca49447e092c4c1c4d5de1005e9e71'/>
<id>urn:sha1:93c1fd49d2ca49447e092c4c1c4d5de1005e9e71</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177600 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>When computing the demanded bits of Load SDNodes, make sure that we are looking at the loaded-value operand and not the ptr result (in case of pre-inc loads).</title>
<updated>2013-03-20T22:53:44Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2013-03-20T22:53:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=7745175be32cd54e4aa6c9cce6f642f59a34a80f'/>
<id>urn:sha1:7745175be32cd54e4aa6c9cce6f642f59a34a80f</id>
<content type='text'>
rdar://13348420



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177596 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Revert "pre-RA-sched: fix TargetOpcode usage"</title>
<updated>2013-03-20T15:43:00Z</updated>
<author>
<name>Christian Konig</name>
<email>christian.koenig@amd.com</email>
</author>
<published>2013-03-20T15:43:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=61aba54f2c0f432179dfaa758bdb2bf1b9929814'/>
<id>urn:sha1:61aba54f2c0f432179dfaa758bdb2bf1b9929814</id>
<content type='text'>
This reverts commit 06091513c283c863296f01cc7c2e86b56bb50d02.

The code is obviously wrong, but the trivial fix causes
inefficient code generation on X86. Somebody with more
knowledge of the code needs to take a look here.

Signed-off-by: Christian König &lt;christian.koenig@amd.com&gt;

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177529 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Move SDNode order propagation to SDNodeOrdering, which also fixes a missed</title>
<updated>2013-03-20T14:51:01Z</updated>
<author>
<name>Justin Holewinski</name>
<email>jholewinski@nvidia.com</email>
</author>
<published>2013-03-20T14:51:01Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=fa963a885c074b3b0d6cc2466036297c476f7103'/>
<id>urn:sha1:fa963a885c074b3b0d6cc2466036297c476f7103</id>
<content type='text'>
case of order propagation during isel.

Thanks Owen for the suggestion!

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