| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
Limit the folding of any_ext and sext into the load operation to scalars.
Limit the active-bits trunc optimization to scalars.
Document vector trunc and vector sext in LangRef.
Similar to commit 126080 (for enabling zext).
llvm-svn: 126424
|
|
|
|
|
|
|
|
| |
The DAGCombiner folds the zext into complex load instructions. This patch
prevents this optimization on vectors since none of the supported targets
knows how to perform load+vector_zext in one instruction.
llvm-svn: 126080
|
|
|
|
|
|
| |
other getNode() methods. Radar 9002173.
llvm-svn: 125665
|
|
|
|
| |
llvm-svn: 125651
|
|
|
|
|
|
|
|
|
| |
transformation if we can't legally create a build vector of the correct
type. Check that we can make the transformation first, and add a TODO to
refactor this code with similar cases.
Fixes: PR9223 and rdar://9000350
llvm-svn: 125631
|
|
|
|
|
|
|
|
|
| |
generating i8 shift amounts for things like i1024 types. Add
an assert in getNode to prevent this from occuring in the future,
fix the buggy transformation, revert my previous patch, and
document this gotcha in ISDOpcodes.h
llvm-svn: 125465
|
|
|
|
|
|
|
|
| |
The DAGCombiner created illegal BUILD_VECTOR operations.
The patch added a check that either illegal operations are
allowed or that the created operation is legal.
llvm-svn: 125435
|