| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | new testcase, each function should have one extension instr in it | Chris Lattner | 2005-12-14 | 1 | -0/+19 |
| | | | | | llvm-svn: 24711 | ||||
| * | Remove -start-group and -end-group no-op options, accidentally committed | Reid Spencer | 2005-12-14 | 1 | -5/+0 |
| | | | | | | | in last patch. llvm-svn: 24710 | ||||
| * | Fix the (zext (zextload)) case to trigger, similarly for sign extends. | Chris Lattner | 2005-12-14 | 1 | -7/+28 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow (zext (truncate)) to apply after legalize if the target supports AND (which all do). This compiles short %foo() { %tmp.0 = load ubyte* %X ; <ubyte> [#uses=1] %tmp.3 = cast ubyte %tmp.0 to short ; <short> [#uses=1] ret short %tmp.3 } to: _foo: movzbl _X, %eax ret instead of: _foo: movzbl _X, %eax movzbl %al, %eax ret thanks to Evan for pointing this out. llvm-svn: 24709 | ||||
| * | Fix Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll, a crash on undefined | Chris Lattner | 2005-12-14 | 1 | -2/+2 |
| | | | | | | | behavior in 126.gcc on big-endian systems. llvm-svn: 24708 | ||||
| * | new (undefined) testcase, distilled from 126.gcc that scalarrepl crashes on | Chris Lattner | 2005-12-14 | 1 | -0/+34 |
| | | | | | llvm-svn: 24707 | ||||
| * | Fix a miscompilation in crafty due to a recent patch | Chris Lattner | 2005-12-14 | 1 | -1/+1 |
| | | | | | llvm-svn: 24706 | ||||
| * | Added sext and zext patterns. | Evan Cheng | 2005-12-14 | 1 | -9/+34 |
| | | | | | llvm-svn: 24705 | ||||
| * | Skip over srcvalue nodes when generating ISEL code. | Evan Cheng | 2005-12-14 | 1 | -1/+7 |
| | | | | | llvm-svn: 24704 | ||||
| * | Added sextld + zextld DAG nodes. | Evan Cheng | 2005-12-14 | 1 | -0/+17 |
| | | | | | llvm-svn: 24703 | ||||
| * | Fold (zext (load x) to (zextload x). | Evan Cheng | 2005-12-14 | 1 | -1/+18 |
| | | | | | llvm-svn: 24702 | ||||
| * | Add support for fmul node of type v4f32. | Nate Begeman | 2005-12-14 | 2 | -0/+21 |
| | | | | | | | | | | | | | | | | | | | | | | | void %foo(<4 x float> * %a) { entry: %tmp1 = load <4 x float> * %a; %tmp2 = mul <4 x float> %tmp1, %tmp1 store <4 x float> %tmp2, <4 x float> *%a ret void } Is selected to: _foo: li r2, 0 lvx v0, r2, r3 vxor v1, v1, v1 vmaddfp v0, v0, v0, v1 stvx v0, r2, r3 blr llvm-svn: 24701 | ||||
| * | Prepare support for AltiVec multiply, divide, and sqrt. | Nate Begeman | 2005-12-13 | 3 | -2/+19 |
| | | | | | llvm-svn: 24700 | ||||
| * | Adjust the constructor to the Linker class to take an argument that names | Reid Spencer | 2005-12-13 | 4 | -5/+13 |
| | | | | | | | | | the module being constructed. This is used to correctly name the module. Previously the name of the linker tool was used which produces confusing output when the module identifier is used in an error message. llvm-svn: 24699 | ||||
| * | Improve ResolveFunctions to: | Reid Spencer | 2005-12-13 | 1 | -13/+15 |
| | | | | | | | | | | a) use better local variable names (OldMT -> OldFT) where "M" is used to mean "Function" (perhaps it was previously "Method"?) b) print out the module identifier in a warning message so that it is possible to track down in which module the error occurred. llvm-svn: 24698 | ||||
| * | Don't lump the filename and working dir together | Chris Lattner | 2005-12-13 | 1 | -15/+16 |
| | | | | | llvm-svn: 24697 | ||||
| * | Add load + store folding srl and sra patterns. | Evan Cheng | 2005-12-13 | 1 | -12/+32 |
| | | | | | llvm-svn: 24696 | ||||
| * | Use the shared asmprinter code for printing special llvm globals | Chris Lattner | 2005-12-13 | 3 | -71/+10 |
| | | | | | llvm-svn: 24695 | ||||
| * | Add a couple more fields, move ctor init list to .cpp file, add support | Chris Lattner | 2005-12-13 | 2 | -26/+96 |
| | | | | | | | for emitting the ctor/dtor list for common targets. llvm-svn: 24694 | ||||
| * | Add ELF and darwin support for static ctors and dtors | Chris Lattner | 2005-12-13 | 2 | -0/+40 |
| | | | | | llvm-svn: 24693 | ||||
| * | reindent a loop, unswitch a loop. No functionality changes | Chris Lattner | 2005-12-13 | 1 | -105/+109 |
| | | | | | llvm-svn: 24692 | ||||
| * | Lowering constant pool entries on ppc exposed a bug in the recently added | Nate Begeman | 2005-12-13 | 1 | -1/+1 |
| | | | | | | | | ConstantVec legalizing code, which would return constantpool nodes that were not of the target's pointer type. llvm-svn: 24691 | ||||
| * | Beautify a few patterns. | Evan Cheng | 2005-12-13 | 1 | -15/+15 |
| | | | | | llvm-svn: 24690 | ||||
| * | Some shl patterns which do load + store folding. | Evan Cheng | 2005-12-13 | 1 | -6/+16 |
| | | | | | llvm-svn: 24689 | ||||
| * | A few helper fragments for loads. e.g. (i8 (load addr:$src)) -> (loadi8 ↵ | Evan Cheng | 2005-12-13 | 1 | -12/+18 |
| | | | | | | | addr:$src). Only to improve readibility. llvm-svn: 24688 | ||||
| * | Add and, or, and xor patterns which fold load + stores. | Evan Cheng | 2005-12-13 | 1 | -41/+82 |
| | | | | | llvm-svn: 24687 | ||||
| * | Add inc + dec patterns which fold load + stores. | Evan Cheng | 2005-12-13 | 1 | -6/+12 |
| | | | | | llvm-svn: 24686 | ||||
| * | Add neg and not patterns which fold load + stores. | Evan Cheng | 2005-12-13 | 1 | -6/+12 |
| | | | | | llvm-svn: 24685 | ||||
| * | Missed a couple redundant explicit type casts. | Evan Cheng | 2005-12-13 | 1 | -3/+3 |
| | | | | | llvm-svn: 24684 | ||||
| * | Fix some bad choice of names: i16SExt8 ->i16immSExt8, etc. | Evan Cheng | 2005-12-13 | 1 | -34/+47 |
| | | | | | llvm-svn: 24683 | ||||
| * | * Split immSExt8 to i16SExt8 and i32SExt8 for i16 and i32 immediate operands. | Evan Cheng | 2005-12-13 | 1 | -27/+33 |
| | | | | | | | | This enables the removal of some explicit type casts. * Rename immZExt8 to i16ZExt8 as well. llvm-svn: 24682 | ||||
| * | Add some integer mul patterns. | Evan Cheng | 2005-12-12 | 1 | -11/+17 |
| | | | | | llvm-svn: 24681 | ||||
| * | Bug fix: CodeGenMap[N] = ... -> CodeGenMap[N.getValue(0)] = ... | Evan Cheng | 2005-12-12 | 1 | -1/+1 |
| | | | | | llvm-svn: 24680 | ||||
| * | At top of generated isel SelectCode() is this: | Evan Cheng | 2005-12-12 | 1 | -4/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | if (!N.Val->hasOneUse()) { std::map<SDOperand, SDOperand>::iterator CGMI = CodeGenMap.find(N); if (CGMI != CodeGenMap.end()) return CGMI->second; } Suppose a DAG like this: X ^ ^ / \ USE1 USE2 Suppose USE1 is being selected first and during which X is selected and returned a new node. After this, USE1 is no longer an use of X. During USE2 selection, X will be selected again since it has only one use! The fix is to always query CodeGenMap. llvm-svn: 24679 | ||||
| * | Accept and ignore prefetches for now | Chris Lattner | 2005-12-12 | 1 | -0/+3 |
| | | | | | llvm-svn: 24678 | ||||
| * | Fix CodeGen/Generic/2005-12-12-ExpandSextInreg.ll | Chris Lattner | 2005-12-12 | 1 | -0/+10 |
| | | | | | llvm-svn: 24677 | ||||
| * | Testcase for a problem that reid ran into | Chris Lattner | 2005-12-12 | 1 | -0/+7 |
| | | | | | llvm-svn: 24676 | ||||
| * | Add some sub patterns. | Evan Cheng | 2005-12-12 | 1 | -13/+24 |
| | | | | | llvm-svn: 24675 | ||||
| * | When SelectLEAAddr() fails, it shouldn't cause the side effect of having the | Evan Cheng | 2005-12-12 | 1 | -17/+48 |
| | | | | | | | base or index operands being selected. llvm-svn: 24674 | ||||
| * | For ISD::RET, if # of operands >= 2, try selection the real data dep. operand | Evan Cheng | 2005-12-12 | 1 | -2/+10 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | first before the chain. e.g. int X; int foo(int x) { x += X + 37; return x; } If chain operand is selected first, we would generate: movl X, %eax movl 4(%esp), %ecx leal 37(%ecx,%eax), %eax rather than movl $37, %eax addl 4(%esp), %eax addl X, %eax which does not require %ecx. (Due to ADD32rm not matching.) llvm-svn: 24673 | ||||
| * | fix FP selects | Andrew Lenharth | 2005-12-12 | 2 | -14/+14 |
| | | | | | llvm-svn: 24672 | ||||
| * | remove some never-completed and now-obsolete code. | Chris Lattner | 2005-12-12 | 3 | -358/+0 |
| | | | | | llvm-svn: 24671 | ||||
| * | Add a few more add / store patterns. e.g. ADD32mi8. | Evan Cheng | 2005-12-12 | 1 | -10/+18 |
| | | | | | llvm-svn: 24670 | ||||
| * | Bug fix: finding the correct incoming chain for pattern with nested src ↵ | Evan Cheng | 2005-12-12 | 1 | -14/+17 |
| | | | | | | | operand. And a minor change to make output code slightly more readible. llvm-svn: 24669 | ||||
| * | restore a more restricted select | Andrew Lenharth | 2005-12-12 | 1 | -0/+32 |
| | | | | | llvm-svn: 24668 | ||||
| * | Implement a little hack for parity with GCC on crafty. This speeds up | Chris Lattner | 2005-12-12 | 1 | -2/+277 |
| | | | | | | | | | | | | | | | | | | | | | | | 186.crafty by about 16% (from 15.109s to 13.045s) on my system. This turns allocas with unions/casts into scalars. For example crafty has something like this: union doub { unsigned short i[4]; long long d; }; int f(long long a) { return ((union doub){.d=a}).i[1]; } Instead of generating loads and stores to an alloca, we now promote the whole thing to a scalar long value. This implements: Transforms/ScalarRepl/AggregatePromote.ll llvm-svn: 24667 | ||||
| * | new testcase: sra should be able to eliminate all of these alloca's, despite | Chris Lattner | 2005-12-12 | 1 | -0/+54 |
| | | | | | | | the presense of pointer casts llvm-svn: 24666 | ||||
| * | Send an indicator to llvm-testresults if the build failed | Chris Lattner | 2005-12-11 | 1 | -1/+1 |
| | | | | | llvm-svn: 24665 | ||||
| * | Fix typo :( | Chris Lattner | 2005-12-11 | 1 | -1/+1 |
| | | | | | llvm-svn: 24664 | ||||
| * | Minor tweak to get isel opt | Chris Lattner | 2005-12-11 | 1 | -1/+2 |
| | | | | | llvm-svn: 24663 | ||||
| * | add selectcc | Chris Lattner | 2005-12-11 | 1 | -0/+6 |
| | | | | | llvm-svn: 24662 | ||||

