| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
These are not used by CodeGen yet - ISD combiners creating the new node
will come in subsequent patches.
llvm-svn: 274108
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This fixes bug: https://llvm.org/bugs/show_bug.cgi?id=28282
Currently the cost model of constant hoisting checks the bit width of the data type of the constants.
However, the actual immediate value is small enough and not need to be hoisted.
This patch checks for the actual bit width needed for the constant.
Reviewers: t.p.northover, rengolin
Subscribers: aemerson, rengolin, llvm-commits
Differential Revision: http://reviews.llvm.org/D21668
llvm-svn: 274073
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: LLVM assumes that large clearance will hide the partial register spill penalty. But in our experiment, 16 clearance is too small. As the inserted XOR is normally fairly cheap, we should have a higher clearance threshold to aggressively insert XORs that is necessary to break partial register dependency.
Reviewers: wmi, davidxl, stoklund, zansari, myatsina, RKSimon, DavidKreitzer, mkuper, joerg, spatel
Subscribers: davidxl, llvm-commits
Differential Revision: http://reviews.llvm.org/D21560
llvm-svn: 274068
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: SystemZ shift instructions only use the last 6 bits of the shift
amount. When the result of an AND operation is used as a shift amount, this
means that we can use the NILL instruction (which operates on the last 16 bits)
rather than NILF (which operates on the last 32 bits) for a 16-bit savings in
instruction size.
Reviewers: uweigand
Subscribers: llvm-commits
Author: colpell
Committing on behalf of Elliot.
Differential Revision: http://reviews.llvm.org/D21686
llvm-svn: 274066
|
| |
|
|
| |
llvm-svn: 274057
|
| |
|
|
|
|
|
|
|
| |
I think this converts all the simple cases that really just care about
the generated code being position independent or not. The remaining
uses are a bit more complicated and are checking things like "is this
a library or executable" or "can this symbol be preempted".
llvm-svn: 274055
|
| |
|
|
| |
llvm-svn: 274039
|
| |
|
|
| |
llvm-svn: 274036
|
| |
|
|
| |
llvm-svn: 274034
|
| |
|
|
| |
llvm-svn: 274033
|
| |
|
|
|
|
|
|
|
|
|
| |
The original implementation attempted to zero registers using
XOR %foo, %foo. This is problematic because it constitutes a
read-modify-write of a register which might not be defined.
Instead, use MOV32r0 to avoid these problems; expandPostRAPseudo does
the right thing here.
llvm-svn: 274024
|
| |
|
|
|
|
|
|
| |
It already has access to it.
While at it, rename it to isGVIndirectSymbol.
llvm-svn: 274023
|
| |
|
|
| |
llvm-svn: 274022
|
| |
|
|
| |
llvm-svn: 274021
|
| |
|
|
| |
llvm-svn: 274020
|
| |
|
|
|
|
|
|
| |
This fixes PR27102.
Differential Revision: http://reviews.llvm.org/D18541
llvm-svn: 274017
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
AVX1 can only broadcast vectors as floats/doubles, so for 256-bit vectors we insert bitcasts if we are shuffling v8i32/v4i64 types. Unfortunately the presence of these bitcasts prevents the current broadcast lowering code from peeking through cases where we have concatenated / extracted vectors to create the 256-bit vectors.
This patch allows us to peek through bitcasts as long as the number of elements doesn't change (i.e. element bitwidth is the same) so the broadcast index is not affected.
Note this bitcast peek is different from the stage later on which doesn't care about the type and is just trying to find a load node.
As we're being more aggressive with bitcasts, we also need to ensure that the broadcast type is correctly bitcasted
Differential Revision: http://reviews.llvm.org/D21660
llvm-svn: 274013
|
| |
|
|
| |
llvm-svn: 274009
|
| |
|
|
| |
llvm-svn: 274005
|
| |
|
|
|
|
|
|
|
|
|
|
| |
(V)PSHUFD/VPERMILPD/VPERMILPS immediate permutes
This patch allows target shuffles to be combined to single input immediate permute instructions - (V)PSHUFD/VPERMILPD/VPERMILPS - allowing more general pattern matching than what we current do and improves the likelihood of memory folding compared to existing patterns which tend to reuse the input in multiple arguments.
Further permute instructions (V)PSHUFLW/(V)PSHUFHW/(V)PERMQ/(V)PERMPD may be added in the future but its proven tricky to create tests cases for them so far. (V)PSHUFLW/(V)PSHUFHW is already handled quite well in combineTargetShuffle so it may be that removing some of that code may allow us to perform more of the combining in one place without duplication.
Differential Revision: http://reviews.llvm.org/D21148
llvm-svn: 273999
|
| |
|
|
|
|
| |
Bonus changes, * placement in X86ISelLowering and 'exerce' -> 'exercise' in test.
llvm-svn: 273984
|
| |
|
|
|
|
|
| |
This was producing acceses to registers beyond the super
register's limits, resulting in verifier failures.
llvm-svn: 273977
|
| |
|
|
| |
llvm-svn: 273975
|
| |
|
|
| |
llvm-svn: 273964
|
| |
|
|
|
|
| |
Thanks to Benjamin Kramer for noticing.
llvm-svn: 273959
|
| |
|
|
|
|
| |
Should fix the shared library build.
llvm-svn: 273958
|
| |
|
|
|
|
| |
This change reverts a "false" test that was placed to avoid regressions while the atomics pass was completed for the Sparc back-ends.
llvm-svn: 273949
|
| |
|
|
|
|
| |
Not sure this actually changes anything
llvm-svn: 273947
|
| |
|
|
| |
llvm-svn: 273945
|
| |
|
|
|
|
| |
In all its uses it was equivalent to IsNotPIC.
llvm-svn: 273943
|
| |
|
|
| |
llvm-svn: 273940
|
| |
|
|
| |
llvm-svn: 273937
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: jingyue, jlebar
Subscribers: jholewinski
Differential Revision: http://reviews.llvm.org/D21756
llvm-svn: 273922
|
| |
|
|
|
|
| |
Fixes a fixme about handling other visibilities.
llvm-svn: 273921
|
| |
|
|
|
|
| |
Also fix pointlessly adding exec to liveins.
llvm-svn: 273916
|
| |
|
|
| |
llvm-svn: 273907
|
| |
|
|
| |
llvm-svn: 273903
|
| |
|
|
| |
llvm-svn: 273900
|
| |
|
|
|
|
|
|
| |
Fixed a bug in EmitTest() function in combining shl + icmp.
https://llvm.org/bugs/show_bug.cgi?id=28119
llvm-svn: 273899
|
| |
|
|
| |
llvm-svn: 273896
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Created a pattern to match 64-bit mode (and (xor x, -1), y)
to a shorter sequence of instructions.
Before the change, the canonical form is translated to:
xihf %r3, 4294967295
xilf %r3, 4294967295
ngr %r2, %r3
After the change, the canonical form is translated to:
ngr %r3, %r2
xgr %r2, %r3
Reviewers: zhanjunl, uweigand
Subscribers: llvm-commits
Author: assem
Committing on behalf of Assem.
Differential Revision: http://reviews.llvm.org/D21693
llvm-svn: 273887
|
| |
|
|
| |
llvm-svn: 273885
|
| |
|
|
|
|
|
|
| |
Reviewers: vkalintiris, dsanders
Differential Review: http://reviews.llvm.org/D21679
llvm-svn: 273883
|
| |
|
|
| |
llvm-svn: 273879
|
| |
|
|
| |
llvm-svn: 273878
|
| |
|
|
|
|
| |
Use it in ppc too.
llvm-svn: 273877
|
| |
|
|
|
|
| |
Differential Review: http://reviews.llvm.org/rL273108
llvm-svn: 273876
|
| |
|
|
| |
llvm-svn: 273875
|
| |
|
|
|
|
|
|
| |
Same as r273556, but with C++11 member initializers.
Change suggested by Matthias Braun (see http://reviews.llvm.org/D21432).
llvm-svn: 273873
|
| |
|
|
| |
llvm-svn: 273872
|