summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/VirtRegMap.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* This patch adds and improves debugging output. No functionality changes.Chris Lattner2004-10-151-3/+7
| | | | llvm-svn: 17005
* Do not repeat the map lookupChris Lattner2004-10-011-1/+1
| | | | llvm-svn: 16633
* When a virtual register is folded into an instruction, keep track of whetherChris Lattner2004-10-011-21/+43
| | | | | | | | it was a use, def, or both. This allows us to be less pessimistic in our analysis of them. In practice, this doesn't make a big difference, but it doesn't hurt either. llvm-svn: 16632
* Add a simple little improvement to the local spiller to keep track of storesChris Lattner2004-10-011-0/+26
| | | | | | | | | | and delete them if they turn out to be dead. This is a useful little hack that even speeds up some programs. For example, it speeds up Ptrdist/ks from 17.53s to 15.59s, and 188.ammp from 149s to 146s. This also speeds up llc :) llvm-svn: 16630
* Substantially revamp the local spiller, causing it to actually improve theChris Lattner2004-10-011-164/+301
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | generated code over the simple spiller. The new local spiller generates substantially better code than the simple one in some cases, by reusing values that are loaded out of stack slots and kept available in registers. This primarily helps programs that are spilling a lot, and there is still stuff that can be done to improve it. This patch makes the local spiller the default, as it's only a tiny bit slower than the simple spiller (it increases the runtime of llc by < 1%). Here are some numbers with speedups. Program #reuse old(s) new(s) Speedup Povray: 3452, 16.87 -> 15.93 (5.5%) 177.mesa: 2176, 2.77 -> 2.76 (0%) 179.art: 35, 28.43 -> 28.01 (1.5%) 183.equake: 55, 61.44 -> 61.41 (0%) 188.ammp: 869, 174 -> 149 (15%) 164.gzip: 43, 40.73 -> 40.71 (0%) 175.vpr: 351, 18.54 -> 17.34 (6.5%) 176.gcc: 2471, 5.01 -> 4.92 (1.8%) 181.mcf 42, 79.30 -> 75.20 (5.2%) 186.crafty: 484, 29.73 -> 30.04 (-1%) 197.parser: 251, 10.47 -> 10.67 (-1%) 252.eon: 1501, 1.98 -> 1.75 (12%) 253.perlbm: 1183, 14.83 -> 14.42 (2.8%) 254.gap: 825, 7.46 -> 7.29 (2.3%) 255.vortex: 285, 10.51 -> 10.27 (2.3%) 256.bzip2: 63, 55.70 -> 55.20 (0.9%) 300.twolf: 830, 21.63 -> 22.00 (-1%) PtrDist/ks 14, 32.75 -> 17.53 (46.5%) Olden/tsp 46, 8.71 -> 8.24 (5.4%) Free/distray 70, 1.09 -> 0.99 (9.2%) llvm-svn: 16629
* Use more efficient map operations. Fix a bug that would affect hypotheticalChris Lattner2004-09-301-6/+8
| | | | | | targets that supported multiple memory operands. llvm-svn: 16614
* There is no need to call MachineInstr::print directly, just send the MI& to ↵Chris Lattner2004-09-301-10/+7
| | | | | | an ostream. llvm-svn: 16613
* Simplify the logic in the simple spiller and capitalize some variablesChris Lattner2004-09-301-86/+90
| | | | llvm-svn: 16609
* Switch from defaulting to the 'local' spiller to the 'simple' spiller. TheChris Lattner2004-09-301-2/+2
| | | | | | | | | | two spillers produce perfectly identical code (at least on povray and eon), but the simple spiller is substantially faster than the local spiller. Once the local spiller is improved, we can switch back. Switching cuts 5.2% off of the llc time for povray (about 1.3s). llvm-svn: 16608
* Don't use a densemap for keeping track of which vregs are already loaded, justChris Lattner2004-09-301-6/+10
| | | | | | | use a simple vector. This speeds up -spiller=simple from taking 22s to taking .1s on povray (debug build). This change does not modify the generated code. llvm-svn: 16607
* Use longer and more explicit names for instance vars (particularly importantChris Lattner2004-09-301-32/+30
| | | | | | | data structures). Fix the print method to send to the right ostream, not always cerr. Delete typedefs that are only used once. llvm-svn: 16606
* Reindent code, improve comments, move huge nested methods out of classes,Chris Lattner2004-09-301-300/+314
| | | | | | prune #includes, add print/dump methods, etc. No functionality changes. llvm-svn: 16604
* Changes For Bug 352Reid Spencer2004-09-011-5/+5
| | | | | | | | Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
* Stop using CreateStackObject(RegClass*)Chris Lattner2004-08-151-2/+3
| | | | llvm-svn: 15775
* These methods no longer take a TargetRegisterClass* operand.Chris Lattner2004-08-151-8/+4
| | | | llvm-svn: 15774
* These files don't need to include <iostream> since they include ↵Brian Gaeke2004-07-211-1/+0
| | | | | | "Support/Debug.h". llvm-svn: 15089
* Fix IA64 compatibilityChris Lattner2004-07-161-1/+1
| | | | llvm-svn: 14866
* Made a fix so that you can print out MachineInstrs that belong to a ↵Tanya Lattner2004-06-251-6/+6
| | | | | | MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function. llvm-svn: 14389
* Adjust to new TargetMachine interfaceChris Lattner2004-06-021-1/+1
| | | | llvm-svn: 13956
* Add method to assign stack slot to virtual register without creating aAlkis Evlogimenos2004-05-291-0/+8
| | | | | | new one. llvm-svn: 13895
* Spill explicit physical register defs as well.Alkis Evlogimenos2004-03-091-3/+11
| | | | llvm-svn: 12260
* As I wrote in the docs, simple is the default spiller :-)Alkis Evlogimenos2004-03-061-2/+1
| | | | llvm-svn: 12189
* Add simple spiller.Alkis Evlogimenos2004-03-061-9/+72
| | | | llvm-svn: 12188
* Add a spiller option to llc. A simple spiller will come soon. When we get ↵Alkis Evlogimenos2004-03-011-43/+62
| | | | | | CFG in the machine code represenation a global spiller will also be possible. Also document the linear scan register allocator but mark it as experimental for now. llvm-svn: 12062
* Add the long awaited memory operand folding support for linear scanAlkis Evlogimenos2004-03-011-6/+33
| | | | llvm-svn: 12058
* Make spiller push stores right after the definition of a register soAlkis Evlogimenos2004-02-271-8/+33
| | | | | | that they are as far away from the loads as possible. llvm-svn: 11895
* Clear maps right after basic block is processed.Alkis Evlogimenos2004-02-261-4/+4
| | | | llvm-svn: 11892
* Fix bugs found with recent addition of assertions inAlkis Evlogimenos2004-02-251-2/+2
| | | | | | MRegisterInfo::is{Physical,Virtual}Register. llvm-svn: 11849
* Add DenseMap template and actually use it for for mapping virtual regsAlkis Evlogimenos2004-02-251-6/+8
| | | | | | to objects. llvm-svn: 11840
* Move machine code rewriter and spiller outside the registerAlkis Evlogimenos2004-02-241-2/+159
| | | | | | | | | | | allocator. The implementation is completely rewritten and now employs several optimizations not exercised before. For example for 164.gzip we have 997 loads and 699 stores vs the 1221 loads and 880 stores we have before. llvm-svn: 11798
* Refactor VirtRegMap out of RegAllocLinearScan as the first part of bugAlkis Evlogimenos2004-02-231-0/+55
251 (providing a generic machine code rewriter/spiller). llvm-svn: 11780
OpenPOWER on IntegriCloud