aboutsummaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* indent correctlyChris Lattner2004-02-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11601 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't yell. BUGPOINT should yell, not the tool runner :)Chris Lattner2004-02-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11600 91177308-0d34-0410-b5e6-96231b3b80d8
* If there is an error running a tool, include the error message (e.g. ↵Chris Lattner2004-02-181-30/+32
| | | | | | assertion failure) in the exception git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11597 91177308-0d34-0410-b5e6-96231b3b80d8
* When an error occurs executing a tool, we now throw an exception insteadChris Lattner2004-02-181-43/+22
| | | | | | | of calling exit(1). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11593 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate operator[] is deprecated warningsChris Lattner2004-02-182-32/+42
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11578 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix deprecated operator[] warningsChris Lattner2004-02-182-30/+34
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11577 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix argument size for MOVSX and MOVZX instructions.Alkis Evlogimenos2004-02-181-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11576 91177308-0d34-0410-b5e6-96231b3b80d8
* Be more agressive when joining ranges.Alkis Evlogimenos2004-02-181-9/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11575 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix overly conservative spill interval computation.Alkis Evlogimenos2004-02-181-4/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11574 91177308-0d34-0410-b5e6-96231b3b80d8
* Beautify debug output.Alkis Evlogimenos2004-02-181-3/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11573 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR245: Linking weak and strong global variables is dependent on link orderChris Lattner2004-02-173-3/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11565 91177308-0d34-0410-b5e6-96231b3b80d8
* When we complete the bottom-up pass, make sure to merge the globals in ↵Chris Lattner2004-02-171-0/+17
| | | | | | | | | 'main' into the globals graph. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11562 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for GlobalAddress's for alkisChris Lattner2004-02-172-3/+14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11560 91177308-0d34-0410-b5e6-96231b3b80d8
* These store to memory too.Alkis Evlogimenos2004-02-171-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11558 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the -disable-kill option. The register allocator is buggy with it,Chris Lattner2004-02-171-50/+39
| | | | | | | and it was only for debugging in the first place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11557 91177308-0d34-0410-b5e6-96231b3b80d8
* These store to memory, not read from it.Chris Lattner2004-02-171-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11556 91177308-0d34-0410-b5e6-96231b3b80d8
* Instructiosn with 1 memory operand have 4 operands in ourAlkis Evlogimenos2004-02-171-2/+1
| | | | | | | representation.. duh! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11554 91177308-0d34-0410-b5e6-96231b3b80d8
* Align case statements.Alkis Evlogimenos2004-02-171-32/+32
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11552 91177308-0d34-0410-b5e6-96231b3b80d8
* Add TEST and XCHG memory operand support.Alkis Evlogimenos2004-02-172-1/+31
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11550 91177308-0d34-0410-b5e6-96231b3b80d8
* Add OR and XOR memory operand support.Alkis Evlogimenos2004-02-174-4/+61
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11549 91177308-0d34-0410-b5e6-96231b3b80d8
* Peephole optimize SUBmi{16,32} into SUBmi{16,32}b when immediate is 8Alkis Evlogimenos2004-02-172-0/+6
| | | | | | | bits wide. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11548 91177308-0d34-0410-b5e6-96231b3b80d8
* ADDmi{16,32} should be in the next case statement.Alkis Evlogimenos2004-02-172-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11547 91177308-0d34-0410-b5e6-96231b3b80d8
* Add memory operand folding support for MUL, DIV, IDIV, NEG, NOT,Alkis Evlogimenos2004-02-172-0/+45
| | | | | | | MOVSX, and MOVZX. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11546 91177308-0d34-0410-b5e6-96231b3b80d8
* Add memory operand folding for CMP{rm,mr,mi}{8,16,32}, INCm{8,16,32}Alkis Evlogimenos2004-02-171-0/+21
| | | | | | | and DECm{8,16,32} instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11545 91177308-0d34-0410-b5e6-96231b3b80d8
* Add CMP{rm,mr,mi}{8,16,32}, INCm{8,16,32} and DECm{8,16,32} instructions.Alkis Evlogimenos2004-02-171-6/+22
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11544 91177308-0d34-0410-b5e6-96231b3b80d8
* Add SUB{rm,mr,mi}{8,16,32} instructions.Alkis Evlogimenos2004-02-171-0/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11543 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support to the local allocator for fusing spill code into the instructionsChris Lattner2004-02-171-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that need them. This is very useful on CISCy targets like the X86 because it reduces the total spill pressure, and makes better use of it's (large) instruction set. Though the X86 backend doesn't know how to rewrite many instructions yet, this already makes a substantial difference on 176.gcc for example: Before: Time: 8.0099 ( 31.2%) 0.0100 ( 12.5%) 8.0199 ( 31.2%) 7.7186 ( 30.0%) Local Register Allocator Code quality: 734559 asm-printer - Number of machine instrs printed 111395 ra-local - Number of registers reloaded 79902 ra-local - Number of registers spilled 231554 x86-peephole - Number of peephole optimization performed After: Time: 7.8700 ( 30.6%) 0.0099 ( 19.9%) 7.8800 ( 30.6%) 7.7892 ( 30.2%) Local Register Allocator Code quality: 733083 asm-printer - Number of machine instrs printed 2379 ra-local - Number of reloads fused into instructions 109046 ra-local - Number of registers reloaded 79881 ra-local - Number of registers spilled 230658 x86-peephole - Number of peephole optimization performed So by fusing 2300 instructions, we reduced the static number of instructions by 1500, and reduces the number of peepholes (and thus the work) by about 900. This also clearly reduces the number of reload/spill instructions that are emitted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11542 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for folding memory operands for ADC, SBB and SUB instructions.Alkis Evlogimenos2004-02-171-0/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11541 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for ADC{rm.mr}32 and SBB{rm,mr}32.Alkis Evlogimenos2004-02-171-2/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11540 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a (hidden) option to print instructions that fail to fuse. It's lookingChris Lattner2004-02-171-8/+16
| | | | | | | like compares and test's would be the next huge win... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11539 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for folding memory operands in MOVri{8,16,32} instructions.Alkis Evlogimenos2004-02-171-0/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11538 91177308-0d34-0410-b5e6-96231b3b80d8
* Expand the repertoire of the forms we can print and encode.Chris Lattner2004-02-173-16/+15
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11537 91177308-0d34-0410-b5e6-96231b3b80d8
* Disable this peephole for now. We can't keep track of the fact that the ↵Chris Lattner2004-02-172-0/+4
| | | | | | | | | immediate is 8 bits, but the memory reference is full sized. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11536 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a bug in my previous refactoring change... arg!Chris Lattner2004-02-171-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11535 91177308-0d34-0410-b5e6-96231b3b80d8
* The C backend is no longer in llvm-dis, it's in llcChris Lattner2004-02-171-11/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11533 91177308-0d34-0410-b5e6-96231b3b80d8
* Add an option to disable spill fusing in the X86 backendChris Lattner2004-02-171-0/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11531 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix the mneumonics for the mov instructions to have the source and destinationChris Lattner2004-02-176-81/+81
| | | | | | | order in the correct sense!! Arg! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11530 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix the last crimes against nature that used the 'ir' ordering to use theChris Lattner2004-02-175-47/+47
| | | | | | | | 'ri' ordering instead... no it's not possible to store a register into an immediate! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11529 91177308-0d34-0410-b5e6-96231b3b80d8
* GRRR. Move instructions have swapped the order of the r/m operands.Chris Lattner2004-02-171-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11528 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename MOVi[mr] instructions to MOV[rm]iChris Lattner2004-02-177-66/+78
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11527 91177308-0d34-0410-b5e6-96231b3b80d8
* Whoops, got my cases swapped.Chris Lattner2004-02-172-12/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11526 91177308-0d34-0410-b5e6-96231b3b80d8
* Change to match the newer, simpler, interfaceChris Lattner2004-02-172-33/+15
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11525 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for folding memory operands into AND and IMUL'sChris Lattner2004-02-171-2/+30
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11523 91177308-0d34-0410-b5e6-96231b3b80d8
* Scrunchify code, by adding helpers. No functionality changes.Chris Lattner2004-02-171-56/+45
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11522 91177308-0d34-0410-b5e6-96231b3b80d8
* Add mem forms of AND instructionsChris Lattner2004-02-173-6/+71
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11521 91177308-0d34-0410-b5e6-96231b3b80d8
* Add LiveIntervals::Interval::empty() member function.Alkis Evlogimenos2004-02-171-2/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11520 91177308-0d34-0410-b5e6-96231b3b80d8
* Add API to check and fold memory operands into instructions.Alkis Evlogimenos2004-02-172-0/+86
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11519 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename the IMULri* instructions to IMULrri, as they are actually three addressChris Lattner2004-02-177-17/+75
| | | | | | | instructions. Add forms of these instructions that read from memory git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11518 91177308-0d34-0410-b5e6-96231b3b80d8
* Once we have a way to fold spill code reloads into instructions, we have a ↵Chris Lattner2004-02-171-2/+17
| | | | | | way to use it. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11517 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix spilled interval update. It was too conservative.Alkis Evlogimenos2004-02-171-1/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11516 91177308-0d34-0410-b5e6-96231b3b80d8