summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Patch to support MSVC better, contributed by Morten OfstadChris Lattner2004-10-251-1/+1
| | | | llvm-svn: 17215
* We won't use automakeReid Spencer2004-10-224-1520/+0
| | | | llvm-svn: 17155
* Initial automake generated Makefile templateReid Spencer2004-10-182-0/+1466
| | | | llvm-svn: 17136
* Add support for undefChris Lattner2004-10-161-2/+2
| | | | llvm-svn: 17055
* Allow machine operands to represent global variables with offsets. This isChris Lattner2004-10-151-5/+9
| | | | | | | | | | | | | | | | | useful when you have a reference like: int A[100]; void foo() { A[10] = 1; } In this case, &A[10] is a single constant and should be treated as such. Only MO_GlobalAddress and MO_ExternalSymbol are allowed to use this field, no other operand type is. This is another fine patch contributed by Jeff Cohen!! llvm-svn: 17007
* This patch fixes the nasty bug that caused 175.vpr to fail for X86 last night.Chris Lattner2004-10-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | The problem occurred when trying to reload this instruction: MOV32mr %reg2326, 8, %reg2297, 4, %reg2295 The value of reg2326 was available in EBX, so it was reused from there, instead of reloading it into EDX. The value of reg2297 was available in EDX, so it was reused from there, instead of reloading it into EDI. The value of reg2295 was not available, so we tried reloading it into EBX, its assigned register. However, we checked and saw that we already reloaded something into EBX, so we chose what reg2326 was assigned to (EDX) and reloaded into that register instead. Unfortunately EDX had already been used by reg2297, so reloading into EDX clobbered the value used by the reg2326 operand, breaking the program. The fix for this is to check that the newly picked register is ok. In this case we now find that EDX is already used and try using EDI, which succeeds. llvm-svn: 17006
* This patch adds and improves debugging output. No functionality changes.Chris Lattner2004-10-151-3/+7
| | | | llvm-svn: 17005
* Update to reflect changes in Makefile rules.Reid Spencer2004-10-132-8/+9
| | | | llvm-svn: 16950
* ModuloScheduling has moved to lib/Target/SparcV9Misha Brukman2004-10-102-2/+2
| | | | llvm-svn: 16906
* ModuloScheduling moved to lib/Target/SparcV9 as it is SparcV9-specificMisha Brukman2004-10-108-3120/+0
| | | | llvm-svn: 16902
* Added debug information. Fixed several bugs in the reconstruct loop function.Tanya Lattner2004-10-105-138/+280
| | | | llvm-svn: 16895
* Remove the InstrSched directory (moved to SparcV9)Reid Spencer2004-10-101-1/+1
| | | | llvm-svn: 16887
* Directory no long exists (moved to Targets/SparcV9).Reid Spencer2004-10-101-23/+0
| | | | llvm-svn: 16886
* Initial version of automake Makefile.am file.Reid Spencer2004-10-104-0/+95
| | | | llvm-svn: 16885
* Hyphenate target-(in)dependent for more tasty grammar goodness (tm)Misha Brukman2004-10-081-2/+2
| | | | llvm-svn: 16854
* InstrSched has been moved to lib/Target/SparcV9Misha Brukman2004-10-081-1/+1
| | | | llvm-svn: 16850
* InstrSched is SparcV9-specific and so has been moved to lib/Target/SparcV9/Misha Brukman2004-10-087-3197/+0
| | | | llvm-svn: 16849
* Single-space instead of double-spacing in the MakefileMisha Brukman2004-10-081-2/+1
| | | | llvm-svn: 16845
* 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-013-27/+52
| | | | | | | | 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
* Pretty print a bit nicer :)Chris Lattner2004-10-011-2/+1
| | | | llvm-svn: 16628
* Document this class a bit :-)Alkis Evlogimenos2004-10-011-0/+34
| | | | llvm-svn: 16626
* 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-302-18/+18
| | | | | | an ostream. llvm-svn: 16613
* * Wrap some comments to 80 colsChris Lattner2004-09-302-31/+38
| | | | | | | | * Add const_iterator stuff * Add a print method, which means that I can now call dump() from the debugger. llvm-svn: 16612
* 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-302-50/+46
| | | | | | | 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
* Free the VirtRegMap at the end of MachineFunction processing instead of atChris Lattner2004-09-301-1/+1
| | | | | | the beginning of processing the next one. llvm-svn: 16605
* Reindent code, improve comments, move huge nested methods out of classes,Chris Lattner2004-09-302-407/+417
| | | | | | prune #includes, add print/dump methods, etc. No functionality changes. llvm-svn: 16604
* Add includes and use std:: for standard library calls to make codeAlkis Evlogimenos2004-09-283-22/+25
| | | | | | compile on windows. This patch was contributed by Paolo Invernizzi. llvm-svn: 16539
* Fix includes. Patch contributed by Paolo Invernizzi!Alkis Evlogimenos2004-09-281-0/+1
| | | | llvm-svn: 16533
* Grow the map on entry so that we don't crash if joinIntervals neverAlkis Evlogimenos2004-09-091-2/+1
| | | | | | runs (if coalescing is disabled for example). llvm-svn: 16259
* Use a DenseMap for mapping reg->reg. This improves the LiveIntervalAlkis Evlogimenos2004-09-082-9/+12
| | | | | | analysis running time from 2.7869secs to 2.5226secs on 176.gcc. llvm-svn: 16244
* Indent to 2 spaces and cleanup excess whitespace.Alkis Evlogimenos2004-09-051-48/+47
| | | | llvm-svn: 16188
* Indent to 2 spaces.Alkis Evlogimenos2004-09-051-26/+27
| | | | llvm-svn: 16187
* Order #includes alphabetically, local .h files first.Misha Brukman2004-09-031-3/+2
| | | | llvm-svn: 16153
* Fixes to make LLVM compile with vc7.1.Alkis Evlogimenos2004-09-032-2/+3
| | | | | | Patch contributed by Paolo Invernizzi! llvm-svn: 16152
* Change the way we choose a free register: instead of picking the firstAlkis Evlogimenos2004-09-021-4/+15
| | | | | | | free allocatable register, we prefer the a free one with the most uses of inactive intervals. llvm-svn: 16148
* Change the way we choose a free register: instead of picking the firstAlkis Evlogimenos2004-09-021-3/+14
| | | | | | | | | | | | | | | | | | | | | | free allocatable register, we prefer the a free one with the most uses of inactive intervals. This causes less spills and performes a bit better compared to gcc: Program | GCC/LLC (Before)| GCC/LLC (After) 164.gzip/164.gzip | 0.59 | 0.60 175.vpr/175.vpr | 0.57 | 0.58 176.gcc/176.gcc | 0.59 | 0.61 181.mcf/181.mcf | 0.94 | 0.95 186.crafty/186.crafty | 0.62 | 0.62 197.parser/197.parser | 0.89 | 0.88 252.eon/252.eon | 0.61 | 0.66 253.perlbmk/253.perlbmk | 0.79 | 0.84 254.gap/254.gap | 0.81 | 0.81 255.vortex/255.vortex | 0.92 | 0.93 256.bzip2/256.bzip2 | 0.69 | 0.69 300.twolf/300.twolf | 0.91 | 0.90 llvm-svn: 16147
* We don't need to sort the added vector as unhandled intervals areAlkis Evlogimenos2004-09-021-1/+0
| | | | | | stored in a binary heap. llvm-svn: 16143
* Changes For Bug 352Reid Spencer2004-09-0127-53/+53
| | | | | | | | 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
* Be a bit more efficient when processing the active and inactiveAlkis Evlogimenos2004-09-012-52/+62
| | | | | | | | | lists. Instead of scanning the vector backwards, scan it forward and swap each element we want to erase. Then at the end erase all removed intervals at once. This doesn't save much: 0.08s out of 4s when compiling 176.gcc. llvm-svn: 16136
* Give a better assertion if we see a use before a def.Alkis Evlogimenos2004-09-011-0/+2
| | | | llvm-svn: 16135
* Minor code clarity changes.Alkis Evlogimenos2004-08-311-4/+6
| | | | llvm-svn: 16123
* Put this change back in after testing from Reid proved its innocence. ↵Nate Begeman2004-08-291-2/+2
| | | | | | getSpillSize now returns value in bits llvm-svn: 16102
* Remove dead code.Alkis Evlogimenos2004-08-281-1/+0
| | | | llvm-svn: 16077
OpenPOWER on IntegriCloud