summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix problems with non-x86 targets.Chris Lattner2005-01-221-3/+3
| | | | llvm-svn: 19738
* Add a nasty hack to fix Alpha/IA64 multiplies by a power of two.Chris Lattner2005-01-221-4/+9
| | | | llvm-svn: 19737
* Remove unneeded line.Chris Lattner2005-01-211-1/+0
| | | | llvm-svn: 19736
* test commitChris Lattner2005-01-211-0/+1
| | | | llvm-svn: 19735
* Handle comparisons of gep instructions that have different typed indicesChris Lattner2005-01-211-5/+9
| | | | | | as long as they are the same size. llvm-svn: 19734
* Speed up folding operations into loads.Chris Lattner2005-01-211-1/+2
| | | | llvm-svn: 19733
* Keep track of node depth for each nodeChris Lattner2005-01-211-6/+39
| | | | llvm-svn: 19732
* The ever-important vanity pass name :)Chris Lattner2005-01-211-0/+4
| | | | llvm-svn: 19731
* If the interpreter tries to execute an external function, kill it. Of courseChris Lattner2005-01-211-6/+8
| | | | | | | | since we are dirty, special case __main. This should fix the infinite loop horrible stuff that happens on linux-alpha when configuring llvm-gcc. It might also help cygwin, who knows?? llvm-svn: 19729
* Fix a FIXME: realize that argument stores are all independent (don't alias)Chris Lattner2005-01-211-6/+7
| | | | llvm-svn: 19728
* Unary token factor nodes are unneeded.Chris Lattner2005-01-211-0/+2
| | | | llvm-svn: 19727
* Refactor libcall code a bit. Initial implementation of expanding int -> FPChris Lattner2005-01-211-50/+121
| | | | | | operations for 64-bit integers. llvm-svn: 19724
* Apparently destroyFile() now throws an exception. Since this class isChris Lattner2005-01-201-2/+4
| | | | | | | designed to be put on the stack, that's not cool. Catch and ignore the exception. llvm-svn: 19723
* Remove this test. This test is already in PR269, so it should beChris Lattner2005-01-201-15/+0
| | | | | | readded when the bug is fixed. llvm-svn: 19722
* Simplify the shift-expansion code.Chris Lattner2005-01-201-8/+7
| | | | llvm-svn: 19721
* Implement ADD_PARTS/SUB_PARTS so that 64-bit integer add/sub work. ThisChris Lattner2005-01-201-6/+32
| | | | | | fixes most of the remaining llc-beta failures. llvm-svn: 19716
* Expand add/sub into ADD_PARTS/SUB_PARTS instead of a non-existant libcall.Chris Lattner2005-01-201-2/+41
| | | | llvm-svn: 19715
* implement add_parts/sub_parts.Chris Lattner2005-01-201-3/+8
| | | | llvm-svn: 19714
* Eliminate the unimplemented ADDC/SUBB operations, add ADD_PARTS/SUB_PARTS ↵Chris Lattner2005-01-201-4/+6
| | | | | | instead. llvm-svn: 19713
* Add missing entry.Chris Lattner2005-01-201-0/+1
| | | | llvm-svn: 19712
* Fix a crash compiling 134.perl.Chris Lattner2005-01-201-21/+41
| | | | llvm-svn: 19711
* Get analyze to show all analysis options when compiled with VC++Jeff Cohen2005-01-202-0/+3
| | | | llvm-svn: 19710
* Add analyze project to Visual StudioJeff Cohen2005-01-202-0/+159
| | | | llvm-svn: 19709
* Add project llvm-proj to Visual StudioJeff Cohen2005-01-202-0/+151
| | | | llvm-svn: 19708
* Support targets that do not use i8 shift amounts.Chris Lattner2005-01-191-0/+4
| | | | llvm-svn: 19707
* Add two optimizations. The first folds (X+Y)-X -> YChris Lattner2005-01-191-2/+89
| | | | | | | | | | | | | | | | | 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 llvm-svn: 19706
* Add some new testsChris Lattner2005-01-191-0/+14
| | | | llvm-svn: 19705
* Add an assertion that would have made more sense to duraidChris Lattner2005-01-191-1/+3
| | | | llvm-svn: 19704
* Add support for targets that pass args in registers to calls.Chris Lattner2005-01-191-6/+25
| | | | llvm-svn: 19703
* Add an accessor for targets that pass args in regsChris Lattner2005-01-191-0/+14
| | | | llvm-svn: 19702
* Fold single use token factor nodes into other token factor nodes.Chris Lattner2005-01-191-2/+10
| | | | llvm-svn: 19701
* Realize the individual pieces of an expanded copytoreg/store/load areChris Lattner2005-01-191-9/+16
| | | | | | independent of each other. llvm-svn: 19700
* Know some identities about tokenfactor nodes.Chris Lattner2005-01-191-0/+11
| | | | llvm-svn: 19699
* Know some simple identities. This improves codegen for (1LL << N).Chris Lattner2005-01-191-0/+13
| | | | llvm-svn: 19698
* Fix a problem where were were literally selecting for INCREASED registerChris Lattner2005-01-191-8/+8
| | | | | | | | pressure, not decreases register pressure. Fix problem where we accidentally swapped the operands of SHLD, which caused fourinarow to fail. This fixes fourinarow. llvm-svn: 19697
* Just in case, handle something that is both a use and a def.Chris Lattner2005-01-191-1/+2
| | | | llvm-svn: 19696
* When an instruction moves, make sure to update the VarInfo::Kills list asChris Lattner2005-01-191-3/+10
| | | | | | | well as all of teh other stuff in livevar. This fixes the compiler crash on fourinarow last night. llvm-svn: 19695
* When commuting these instructions, make sure to actually swap the operands too.Chris Lattner2005-01-191-1/+1
| | | | llvm-svn: 19694
* Fix 'raise' to work with packed types. Patch by Morten Ofstad.Chris Lattner2005-01-191-1/+1
| | | | llvm-svn: 19693
* Implement Regression/CodeGen/X86/rotate.ll: emit rotate instructions (whichChris Lattner2005-01-191-38/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 19692
* New testcase for rotate instructions. Each function should codegen to aChris Lattner2005-01-191-0/+91
| | | | | | rotate. llvm-svn: 19691
* Add rotate instructions.Chris Lattner2005-01-192-0/+75
| | | | llvm-svn: 19690
* Match 16-bit shld/shrd instructions as well, implementing shift-double.llx:test5Chris Lattner2005-01-191-16/+20
| | | | llvm-svn: 19689
* Add a test for 16-bit sh*d.Chris Lattner2005-01-191-1/+9
| | | | llvm-svn: 19688
* Improve coverage of the X86 instruction set by adding 16-bit shift doubles.Chris Lattner2005-01-193-3/+45
| | | | llvm-svn: 19687
* Teach the code generator that shrd/shld is commutable if it has an immediate.Chris Lattner2005-01-193-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 19686
* Use the TargetInstrInfo::commuteInstruction method to commute instructionsChris Lattner2005-01-191-6/+17
| | | | | | instead of doing it manually. llvm-svn: 19685
* Finegrainify namespacificationChris Lattner2005-01-191-7/+20
| | | | | | | Add default impl of commuteInstruction Add notes about ugly V9 code. llvm-svn: 19684
* Add a new method, described in the comment.Chris Lattner2005-01-191-0/+12
| | | | llvm-svn: 19683
* Ensure that each these functions generates a sh[rl]d instruction.Chris Lattner2005-01-191-0/+22
| | | | llvm-svn: 19682
OpenPOWER on IntegriCloud