- Aug 30, 2008
-
-
Dale Johannesen authored
llvm-svn: 55556
-
- Aug 28, 2008
-
-
Mon P Wang authored
In lowering SELECT_CC, removed cases where we can't flip the true and false when the compare value has a NaN llvm-svn: 55499
-
- Aug 25, 2008
-
-
Dale Johannesen authored
llvm-svn: 55320
-
- Jul 24, 2008
-
-
Evan Cheng authored
Fix a catastrophic PPC64 ABI bug: i32 operands which are passed in memory (all of the parameter registers are used) are loaded from sp offsets that were off by 4. llvm-svn: 53979
-
- Jul 17, 2008
-
-
Dan Gohman authored
replacement of multiple values. This is slightly more efficient than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically could be optimized even further. However, an important property of this new function is that it handles the case where the source value set and destination value set overlap. This makes it feasible for isel to use SelectNodeTo in many very common cases, which is advantageous because SelectNodeTo avoids a temporary node and it doesn't require CSEMap updates for users of values that don't change position. Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to handle operand lists more efficiently, and to correctly handle a number of corner cases to which its new wider use exposes it. This commit also includes a change to the encoding of post-isel opcodes in SDNodes; now instead of being sandwiched between the target-independent pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel opcodes are now represented as negative values. This makes it possible to test if an opcode is pre-isel or post-isel without having to know the size of the current target's post-isel instruction set. These changes speed up llc overall by 3% and reduce memory usage by 10% on the InstructionCombining.cpp testcase with -fast and -regalloc=local. llvm-svn: 53728
-
Duncan Sands authored
only missing ppc long double operations: FNEG and FP_EXTEND. llvm-svn: 53723
-
- Jul 16, 2008
-
-
Duncan Sands authored
simply does the atomic.cmp.swap on the larger type, which means it blows away whatever is sitting in the bytes just after the memory location, i.e. causes a buffer overflow. This really requires target specific code, which is why LegalizeTypes doesn't try to handle this case generically. The existing (wrong) code in LegalizeDAG will go away automatically once the type legalization code is removed from LegalizeDAG so I'm leaving it there for the moment. Meanwhile, don't test for this feature. llvm-svn: 53669
-
- Jul 15, 2008
-
-
Duncan Sands authored
llvm-svn: 53613
-
Duncan Sands authored
In LegalizeDAG the value is zero-extended to the new type before byte swapping. It doesn't matter how the extension is done since the new bits are shifted off anyway after the swap, so extend by any old rubbish bits. This results in the final assembler for the testcase being one line shorter. llvm-svn: 53604
-
Duncan Sands authored
llvm-svn: 53603
-
- Jul 10, 2008
-
-
Chris Lattner authored
his work on legalizetypes. llvm-svn: 53410
-
- Jul 07, 2008
-
-
Dan Gohman authored
getTargetNode and SelectNodeTo to reduce duplication, and to make some of the getTargetNode code available to SelectNodeTo. Use SelectNodeTo instead of getTargetNode in several new interesting cases, as it mutates nodes in place instead of creating new ones. This triggers some scheduling behavior differences due to nodes being presented to the scheduler in a different order. Some of the arbitrary scheduling decisions it makes are now arbitrarily made differently. This is visible in CodeGen/PowerPC/LargeAbsoluteAddr.ll, where a trivial scheduling difference led to a trivial register allocation difference. llvm-svn: 53203
-
- Jun 25, 2008
-
-
Mon P Wang authored
Added abstract class MemSDNode for any Node that have an associated MemOperand Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and atomic.lss => atomic.load.sub llvm-svn: 52706
-
- Jun 24, 2008
-
-
Bill Wendling authored
,------. | | | v | t2 = phi ... t1 ... | | | v | t1 = ... | ... = ... t1 ... | | `------' where there is a use in a PHI node that's a predecessor to the defining block. We don't want to mark all predecessors as having the value "alive" in this case. Also, the assert was too restrictive and didn't handle this case. llvm-svn: 52655
-
- Jun 21, 2008
-
-
Duncan Sands authored
don't know if a truncating store is possible here, but added support for it anyway. llvm-svn: 52577
-
- Jun 20, 2008
-
-
Evan Cheng authored
llvm-svn: 52508
-
- May 20, 2008
-
-
Gabor Greif authored
llvm-svn: 51349
-
Gabor Greif authored
Rename the last test with .llx extension to .ll, resolve duplicate test by renaming to isnan2. Now that no test has llx ending there is no need to search for them from dg.exp too. llvm-svn: 51328
-
- May 01, 2008
-
-
Bill Wendling authored
llvm-svn: 50536
-
- Apr 30, 2008
-
-
Arnold Schwaighofer authored
Move platform independent code (lowering of possibly overwritten arguments, check for tail call optimization eligibility) from target X86ISelectionLowering.cpp to TargetLowering.h and SelectionDAGISel.cpp. Initial PowerPC tail call implementation: Support ppc32 implemented and tested (passes my tests and test-suite llvm-test). Support ppc64 implemented and half tested (passes my tests). On ppc tail call optimization is performed if caller and callee are fastcc call is a tail call (in tail call position, call followed by ret) no variable argument lists or byval arguments option -tailcallopt is enabled Supported: * non pic tail calls on linux/darwin * module-local tail calls on linux(PIC/GOT)/darwin(PIC) * inter-module tail calls on darwin(PIC) If constraints are not met a normal call will be emitted. A test checking the argument lowering behaviour on x86-64 was added. llvm-svn: 50477
-
- Apr 27, 2008
-
-
Chris Lattner authored
When choosing between constraints with multiple options, like "ir", test to see if we can use the 'i' constraint and go with that if possible. This produces more optimal ASM in all cases (sparing a register and an instruction to load it), and fixes inline asm like this: void test () { asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14)); } Previously we would dump "42" into a memory location (which is ok for the 'm' constraint) which would cause a problem because the 'c' modifier is not valid on memory operands. Isn't it great how inline asm turns 'missed optimization' into 'compile failed'?? Incidentally, this was the todo in PowerPC/2007-04-24-InlineAsm-I-Modifier.ll Please do NOT pull this into Tak. llvm-svn: 50315
-
- Apr 24, 2008
-
-
Evan Cheng authored
llvm-svn: 50229
-
- Apr 19, 2008
-
-
Evan Cheng authored
llvm-svn: 49949
-
- Apr 16, 2008
-
-
Evan Cheng authored
llvm-svn: 49810
-
- Apr 14, 2008
-
-
Dale Johannesen authored
this is now the default. llvm-svn: 49667
-
- Apr 10, 2008
-
-
Evan Cheng authored
llvm-svn: 49491
-
- Apr 08, 2008
-
-
Dale Johannesen authored
llvm-svn: 49391
-
Dale Johannesen authored
llvm-svn: 49365
-
Dale Johannesen authored
that need it (usually, grepping for some string found in unwind info) llvm-svn: 49364
-
- Apr 01, 2008
-
-
Dale Johannesen authored
EH info for these functions causes the tests to fail for random reasons (e.g. looking for 'or' or counting lines with asm-printer; labels count as lines.) llvm-svn: 49003
-
- Mar 26, 2008
-
-
Evan Cheng authored
llvm-svn: 48837
-
- Mar 25, 2008
-
-
Tanya Lattner authored
llvm-svn: 48762
-
Evan Cheng authored
llvm-svn: 48759
-
Bill Wendling authored
mask. llvm-svn: 48750
-
- Mar 22, 2008
-
-
Bill Wendling authored
llvm-svn: 48697
-
- Mar 19, 2008
-
-
Dan Gohman authored
converting call result lowering to use the CallingConvLowering infastructure. llvm-svn: 48552
-
Evan Cheng authored
1. If part of a register is re-defined, an implicit kill and an implicit def are added to denote read / mod / write. However, this should only be necessary if the register is actually read later. This is a performance issue. 2. If a sub-register is being defined, and it doesn't have a previous use, do not add a implicit kill to the last use of a super-register: = EAX, AX<imp-use,kill> ... AX = In this case, EAX is live but AX is killed, this is wrong and will cause the coalescer to do bad things. llvm-svn: 48521
-
- Mar 18, 2008
-
-
Dale Johannesen authored
llvm-svn: 48493
-
Evan Cheng authored
Rewrite code that propagate isDead information after a dead copy is coalesced. This remove some ugly spaghetti code and fixed a number of subtle bugs. llvm-svn: 48490
-
- Mar 13, 2008
-
-
Dan Gohman authored
llvm-svn: 48344
-