aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2005-01-20Remove this test. This test is already in PR269, so it should beChris Lattner
readded when the bug is fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19722 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Simplify the shift-expansion code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19721 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Implement ADD_PARTS/SUB_PARTS so that 64-bit integer add/sub work. ThisChris Lattner
fixes most of the remaining llc-beta failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19716 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Expand add/sub into ADD_PARTS/SUB_PARTS instead of a non-existant libcall.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19715 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20implement add_parts/sub_parts.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19714 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Eliminate the unimplemented ADDC/SUBB operations, add ADD_PARTS/SUB_PARTS ↵Chris Lattner
instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19713 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Add missing entry.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19712 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Fix a crash compiling 134.perl.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19711 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Get analyze to show all analysis options when compiled with VC++Jeff Cohen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19710 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Add analyze project to Visual StudioJeff Cohen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19709 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-20Add project llvm-proj to Visual StudioJeff Cohen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19708 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Support targets that do not use i8 shift amounts.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19707 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add two optimizations. The first folds (X+Y)-X -> YChris Lattner
The second folds operations into selects, e.g. (select C, (X+Y), (Y+Z)) -> (Y+(select C, X, Z) This occurs a few times across spec, e.g. select add/sub mesa: 83 0 povray: 5 2 gcc 4 2 parser 0 22 perlbmk 13 30 twolf 0 3 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19706 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add some new testsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19705 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add an assertion that would have made more sense to duraidChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19704 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add support for targets that pass args in registers to calls.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19703 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add an accessor for targets that pass args in regsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19702 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Fold single use token factor nodes into other token factor nodes.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19701 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Realize the individual pieces of an expanded copytoreg/store/load areChris Lattner
independent of each other. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19700 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Know some identities about tokenfactor nodes.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19699 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Know some simple identities. This improves codegen for (1LL << N).Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19698 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Fix a problem where were were literally selecting for INCREASED registerChris Lattner
pressure, not decreases register pressure. Fix problem where we accidentally swapped the operands of SHLD, which caused fourinarow to fail. This fixes fourinarow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19697 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Just in case, handle something that is both a use and a def.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19696 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19When an instruction moves, make sure to update the VarInfo::Kills list asChris Lattner
well as all of teh other stuff in livevar. This fixes the compiler crash on fourinarow last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19695 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19When commuting these instructions, make sure to actually swap the operands too.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19694 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Fix 'raise' to work with packed types. Patch by Morten Ofstad.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19693 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Implement Regression/CodeGen/X86/rotate.ll: emit rotate instructions (whichChris Lattner
typically cost 1 cycle) instead of shld/shrd instruction (which are typically 6 or more cycles). This also saves code space. For example, instead of emitting: rotr: mov %EAX, DWORD PTR [%ESP + 4] mov %CL, BYTE PTR [%ESP + 8] shrd %EAX, %EAX, %CL ret rotli: mov %EAX, DWORD PTR [%ESP + 4] shrd %EAX, %EAX, 27 ret Emit: rotr32: mov %CL, BYTE PTR [%ESP + 8] mov %EAX, DWORD PTR [%ESP + 4] ror %EAX, %CL ret rotli32: mov %EAX, DWORD PTR [%ESP + 4] ror %EAX, 27 ret We also emit byte rotate instructions which do not have a sh[lr]d counterpart at all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19692 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19New testcase for rotate instructions. Each function should codegen to aChris Lattner
rotate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19691 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add rotate instructions.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19690 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Match 16-bit shld/shrd instructions as well, implementing shift-double.llx:test5Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19689 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add a test for 16-bit sh*d.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19688 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Improve coverage of the X86 instruction set by adding 16-bit shift doubles.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19687 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Teach the code generator that shrd/shld is commutable if it has an immediate.Chris Lattner
This allows us to generate this: foo: mov %EAX, DWORD PTR [%ESP + 4] mov %EDX, DWORD PTR [%ESP + 8] shld %EDX, %EDX, 2 shl %EAX, 2 ret instead of this: foo: mov %EAX, DWORD PTR [%ESP + 4] mov %ECX, DWORD PTR [%ESP + 8] mov %EDX, %EAX shrd %EDX, %ECX, 30 shl %EAX, 2 ret Note the magically transmogrifying immediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19686 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Use the TargetInstrInfo::commuteInstruction method to commute instructionsChris Lattner
instead of doing it manually. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19685 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Finegrainify namespacificationChris Lattner
Add default impl of commuteInstruction Add notes about ugly V9 code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19684 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add a new method, described in the comment.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19683 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Ensure that each these functions generates a sh[rl]d instruction.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19682 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Codegen long >> 2 to this:Chris Lattner
foo: mov %EAX, DWORD PTR [%ESP + 4] mov %EDX, DWORD PTR [%ESP + 8] shrd %EAX, %EDX, 2 sar %EDX, 2 ret instead of this: test1: mov %ECX, DWORD PTR [%ESP + 4] shr %ECX, 2 mov %EDX, DWORD PTR [%ESP + 8] mov %EAX, %EDX shl %EAX, 30 or %EAX, %ECX sar %EDX, 2 ret and long << 2 to this: foo: mov %EAX, DWORD PTR [%ESP + 4] mov %ECX, DWORD PTR [%ESP + 8] *** mov %EDX, %EAX shrd %EDX, %ECX, 30 shl %EAX, 2 ret instead of this: foo: mov %EAX, DWORD PTR [%ESP + 4] mov %ECX, %EAX shr %ECX, 30 mov %EDX, DWORD PTR [%ESP + 8] shl %EDX, 2 or %EDX, %ECX shl %EAX, 2 ret The extra copy (marked ***) can be eliminated when I teach the code generator that shrd32rri8 is really commutative. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19681 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add missing data types for VC++Jeff Cohen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19680 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Implement a way of expanding shifts. This applies to targets that offerChris Lattner
select operations or to shifts that are by a constant. This automatically implements (with no special code) all of the special cases for shift by 32, shift by < 32 and shift by > 32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19679 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19X86 shifts mask the amount.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19678 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Add a hook to find out how the target handles shift amounts that are out ofChris Lattner
range. Either they are undefined (the default), they mask the shift amount to the size of the register (X86, Alpha, etc), or they extend the shift (PPC). This defaults to undefined, which is conservatively correct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19677 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19Move all data members to the end of the class.Chris Lattner
Add a hook to find out how the target handles shift amounts that are out of range. Either they are undefined (the default), they mask the shift amount to the size of the register (X86, Alpha, etc), or they extend the shift (PPC). This defaults to undefined, which is conservatively correct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19676 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18Zero is cheaper than sign extend.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19675 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18Code to handle FP_EXTEND is dead now. X86 doesn't support any data types toChris Lattner
FP_EXTEND from! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19674 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18Remove more dead code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19673 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18The selection dag code handles the promotions from F32 to F64 for us, so weChris Lattner
don't need to even think about F32 in the X86 code anymore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19672 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18Fix some fixmes (promoting bools for select and brcond), fix promotionChris Lattner
of zero and sign extends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19671 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18Keep track of the retval type as well.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19670 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-18Keep track of the returned value type as well.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19669 91177308-0d34-0410-b5e6-96231b3b80d8