- Feb 14, 2011
-
-
Rafael Espindola authored
llvm-svn: 125490
-
Chris Lattner authored
idiom. Change various clients to simplify their code. llvm-svn: 125487
-
Chris Lattner authored
vector fp conversions. llvm-svn: 125482
-
Chris Lattner authored
llvm-svn: 125481
-
Cameron Zwarich authored
llvm-svn: 125477
-
Cameron Zwarich authored
llvm-svn: 125476
-
- Feb 13, 2011
-
-
Chris Lattner authored
have their low bits set to zero. This allows us to optimize out explicit stack alignment code like in stack-align.ll:test4 when it is redundant. Doing this causes the code generator to start turning FI+cst into FI|cst all over the place, which is general goodness (that is the canonical form) except that various pieces of the code generator don't handle OR aggressively. Fix this by introducing a new SelectionDAG::isBaseWithConstantOffset predicate, and using it in places that are looking for ADD(X,CST). The ARM backend in particular was missing a lot of addressing mode folding opportunities around OR. llvm-svn: 125470
-
Chris Lattner authored
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
-
Chris Lattner authored
the shift amounts are in a suitably wide type so that we don't generate out of range constant shift amounts. This fixes PR9028. llvm-svn: 125458
-
Chris Lattner authored
is narrower than the shift register. Doing an anyext provides undefined bits in the top part of the register. llvm-svn: 125457
-
- Feb 12, 2011
-
-
Nadav Rotem authored
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
-
- Feb 11, 2011
-
-
Nadav Rotem authored
that the condition is not a vector. llvm-svn: 125398
-
Nadav Rotem authored
Fix #9190 The bug happens when the DAGCombiner attempts to optimize one of the patterns of the SUB opcode. It tries to create a zero of type v2i64. This type is legal on 32bit machines, but the initializer of this vector (i64) is target dependent. Currently, the initializer attempts to create an i64 zero constant, which fails. Added a flag to tell the DAGCombiner to create a legal zero, if we require that the pass would generate legal types. llvm-svn: 125391
-
- Feb 10, 2011
-
-
Evan Cheng authored
After 3-addressifying a two-address instruction, update the register maps; add a missing check when considering whether it's profitable to commute. rdar://8977508. llvm-svn: 125259
-
Jakob Stoklund Olesen authored
Loop splitting is better handled by the more generic global region splitting based on the edge bundle graph. llvm-svn: 125243
-
Jakob Stoklund Olesen authored
llvm-svn: 125238
-
Jakob Stoklund Olesen authored
This fixes a bug where splitSingleBlocks() could split a live range after a terminator instruction. llvm-svn: 125237
-
- Feb 09, 2011
-
-
Mikhail Glushenkov authored
llvm-svn: 125232
-
Jakob Stoklund Olesen authored
No functional changes intended. llvm-svn: 125231
-
Jakob Stoklund Olesen authored
llvm-svn: 125226
-
Jakob Stoklund Olesen authored
llvm-svn: 125225
-
Jakob Stoklund Olesen authored
The tag is updated whenever the live interval union is changed, and it is tested before using cached information. llvm-svn: 125224
-
Jakob Stoklund Olesen authored
Registers are not allocated strictly in spill weight order when live range splitting and spilling has created new shorter intervals with higher spill weights. When one of the new heavy intervals conflicts with a single lighter interval, simply evict the old interval instead of trying to split the heavy one. The lighter interval is a better candidate for splitting, it has a smaller use density. llvm-svn: 125151
-
Jakob Stoklund Olesen authored
This almost guarantees that the COPY will be coalesced. llvm-svn: 125140
-
Jakob Stoklund Olesen authored
llvm-svn: 125137
-
Jakob Stoklund Olesen authored
The last split point can be anywhere in the block, so it interferes with the strictly monotonic requirements of advanceTo(). llvm-svn: 125132
-
- Feb 08, 2011
-
-
Jakob Stoklund Olesen authored
instruction in a basic block. llvm-svn: 125116
-
Jakob Stoklund Olesen authored
This is a lot easier than trying to get kill flags right during live range splitting and rematerialization. llvm-svn: 125113
-
Jakob Stoklund Olesen authored
llvm-svn: 125109
-
Jakob Stoklund Olesen authored
The target hook doesn't know how to do that. (Neither do I). llvm-svn: 125108
-
Jakob Stoklund Olesen authored
If a live range is used by a terminator instruction, and that live range needs to leave the block on the stack or in a different register, it can be necessary to have both sides of the split live at the terminator instruction. Example: %vreg2 = COPY %vreg1 JMP %vreg1 Becomes after spilling %vreg2: SPILL %vreg1 JMP %vreg1 The spill doesn't kill the register as is normally the case. llvm-svn: 125102
-
Jakob Stoklund Olesen authored
llvm-svn: 125101
-
Andrew Trick authored
Avoid using the same register for two def operands or and earlyclobber def and use operand. This fixes PR8986 and improves on the prior fix for rdar://problem/8959122. llvm-svn: 125089
-
Jakob Stoklund Olesen authored
After uses of a live range are removed, recompute the live range to only cover the remaining uses. This is necessary after rematerializing the value before some (but not all) uses. llvm-svn: 125058
-
- Feb 07, 2011
-
-
Devang Patel authored
llvm-svn: 125054
-
- Feb 05, 2011
-
-
Andrew Trick authored
<rdar://problem/8959122> illegal register operands for UMULL instruction in cfrac nightly test I'm stil working on a unit test, but the case is: rx = movcc rx, r3 r2 = ldr r2, r3 = umull r2, r2 The anti-dep breaker should not convert this into an illegal instruction: r2, r2 = umull llvm-svn: 124932
-
Jakob Stoklund Olesen authored
If the interference overlaps the instruction, we cannot separate it. llvm-svn: 124918
-
Jakob Stoklund Olesen authored
If these inequalities don't hold, we are creating a live range split that won't allocate. llvm-svn: 124917
-
Jakob Stoklund Olesen authored
In that case we simply ignore the landing pad and split live ranges before the first terminator. llvm-svn: 124907
-
- Feb 04, 2011
-
-
Devang Patel authored
llvm-svn: 124904
-