| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
doesn't affect any in-tree target.
llvm-svn: 146015
|
|
|
|
|
|
| |
correctly. PR11494.
llvm-svn: 145996
|
|
|
|
|
|
|
|
|
|
|
|
| |
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.
One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.
llvm-svn: 145714
|
|
|
|
|
|
|
|
|
|
|
| |
Conservatively returns zero when the GV does not specify an alignment nor is it
initialized. Previously it returns ABI alignment for type of the GV. However, if
the type is a "packed" type, then the under-specified alignments is attached to
the load / store instructions. In that case, the alignment of the type cannot be
trusted.
rdar://10464621
llvm-svn: 145300
|
|
|
|
|
|
|
|
|
| |
than ABI alignment. These are loads / stores from / to "packed" data structures.
Their alignments are intentionally under-specified.
rdar://10301431
llvm-svn: 145273
|
|
|
|
|
|
| |
LOAD+EXTRACT_VECTOR_ELT into a single LOAD. Fixes PR10747/PR11393.
llvm-svn: 144863
|
|
|
|
| |
llvm-svn: 144634
|
|
|
|
|
|
| |
runs. Fixes PR11029.
llvm-svn: 144438
|
|
|
|
|
|
|
|
| |
Add support for trimming constants to GetDemandedBits. This fixes some funky
constant generation that occurs when stores are expanded for targets that don't
support unaligned stores natively.
llvm-svn: 144102
|
|
|
|
|
|
| |
When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses
llvm-svn: 144100
|
|
|
|
|
|
| |
and TargetLowering::BuildUDIV(). Fixes PR11283
llvm-svn: 143964
|
|
|
|
|
|
| |
before the op legalizer and that the used type is legal.
llvm-svn: 143358
|
|
|
|
| |
llvm-svn: 143308
|
|
|
|
|
|
|
| |
If all of the inputs are zero/any_extended, create a new simple BV
which can be further optimized by other BV optimizations.
llvm-svn: 143297
|
|
|
|
| |
llvm-svn: 143095
|
|
|
|
| |
llvm-svn: 142959
|
|
|
|
|
|
|
|
|
| |
svn r139159 caused SelectionDAG::getConstant() to promote BUILD_VECTOR operands
with illegal types, even before type legalization. For this testcase, that led
to one BUILD_VECTOR with i16 operands and another with promoted i32 operands,
which triggered the assertion.
llvm-svn: 142370
|
|
|
|
|
|
| |
worklist, as it may be possible to perform further optimization on them.
llvm-svn: 140349
|
|
|
|
|
|
|
| |
subvector inserts and extracts. Initial patch by Rackover, Zvi with
some tweak done by me.
llvm-svn: 140204
|
|
|
|
|
|
| |
same type. Teach DAGCombiner::visitINSERT_VECTOR_ELT not to make invalid BUILD_VECTORs. Fixes PR10897.
llvm-svn: 139407
|
|
|
|
|
|
|
|
|
|
|
|
| |
with a vector condition); such selects become VSELECT codegen nodes.
This patch also removes VSETCC codegen nodes, unifying them with SETCC
nodes (codegen was actually often using SETCC for vector SETCC already).
This ensures that various DAG combiner optimizations kick in for vector
comparisons. Passes dragonegg bootstrap with no testsuite regressions
(nightly testsuite as well as "make check-all"). Patch mostly by
Nadav Rotem.
llvm-svn: 139159
|
|
|
|
|
|
| |
cases.
llvm-svn: 138130
|
|
|
|
| |
llvm-svn: 137466
|
|
|
|
|
|
|
| |
lower XMM register gets in first. This will allow the SUBREG pattern to
elliminate the first vector insertion.
llvm-svn: 137310
|
|
|
|
|
|
| |
PR10476.
llvm-svn: 135993
|
|
|
|
| |
llvm-svn: 135375
|
|
|
|
|
|
| |
Fixes rdar://9761830
llvm-svn: 135123
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hasPredecessorHelper function allows predecessors to be cached to speed up
repeated invocations. This fixes PR10186.
X.isPredecessorOf(Y) now just calls Y.hasPredecessor(X)
Y.hasPredecessor(X) calls Y.hasPredecessorHelper(X, Visited, Worklist) with
empty Visited and Worklist sets (i.e. no caching over invocations).
Y.hasPredecessorHelper(X, Visited, Worklist) caches search state in Visited
and Worklist to speed up repeated calls. The Visited set is searched for X
before going to the worklist to further search the DAG if necessary.
llvm-svn: 134592
|
|
|
|
| |
llvm-svn: 134067
|
|
|
|
|
|
| |
that takes an ArrayRef.
llvm-svn: 133615
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. (((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8)
=> (bswap x) >> 16
2. ((x&0xff)<<8)|((x&0xff00)>>8)|((x&0xff000000)>>8)|((x&0x00ff0000)<<8))
=> (rotl (bswap x) 16)
This allows us to eliminate most of the def : Pat patterns for ARM rev16
revsh instructions. It catches many more cases for ARM and x86.
rdar://9609108
llvm-svn: 133503
|
|
|
|
| |
llvm-svn: 133124
|
|
|
|
|
|
|
|
| |
GetDemandBits (which must operate on the vector element type).
Fix the a usage of getZeroExtendInReg which must also be done on scalar types.
llvm-svn: 133052
|
|
|
|
|
|
|
|
| |
converted to add x,x if x is a undef. add undef, undef does not guarantee
that the resulting low order bit is zero.
Fixes <rdar://problem/9453156> and <rdar://problem/9487392>.
llvm-svn: 133022
|
|
|
|
| |
llvm-svn: 132984
|
|
|
|
|
|
|
|
| |
matches the ordering we prefer in instcombine. Part of rdar://9562809.
The potential DAGCombine which enforces this more generally messes up some other very fragile patterns, so I'm leaving that alone, at least for now.
llvm-svn: 132809
|
|
|
|
| |
llvm-svn: 131926
|
|
|
|
| |
llvm-svn: 131800
|
|
|
|
| |
llvm-svn: 131495
|
|
|
|
|
|
|
|
| |
If there is a store after the load node, then there is a chain, which means
that there is another user. Thus, asking hasOneUser would fail. Instead we
ask hasNUsesOfValue on the 'data' value.
llvm-svn: 131183
|
|
|
|
| |
llvm-svn: 131082
|
|
|
|
|
|
|
| |
Returning a new node makes the code try to replace the old node, which
in the included testcase is killed by CSE.
llvm-svn: 129650
|
|
|
|
|
|
| |
RHS of a shift.
llvm-svn: 129522
|
|
|
|
|
|
| |
with undef arguments.
llvm-svn: 129185
|
|
|
|
|
|
|
|
| |
transformations in target-specific DAG combines without causing DAGCombiner to
delete the same node twice. If you know of a better way to avoid this (see my
next patch for an example), please let me know.
llvm-svn: 128758
|
|
|
|
|
|
| |
the load is indexed. rdar://9117613.
llvm-svn: 127440
|
|
|
|
|
|
| |
Radar 9056407.
llvm-svn: 126864
|
|
|
|
| |
llvm-svn: 126565
|
|
|
|
|
|
|
|
|
|
|
| |
legalized code for large integer arithmetic.
1. Inform users of ADDEs with two 0 operands that it never sets carry
2. Fold other ADDs or ADDCs into the ADDE if possible
It would be neat if we could do the same thing for SETCC+ADD eventually, but we can't do that in target independent code.
llvm-svn: 126557
|
|
|
|
|
|
| |
the type of the LHS.
llvm-svn: 126518
|