summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* don't use the result of WriteTypeSymbolic or WriteAsOperand.Chris Lattner2008-08-192-6/+8
| | | | llvm-svn: 54978
* Make SimpleSpiller respect subregister indices.Owen Anderson2008-08-191-2/+5
| | | | llvm-svn: 54968
* Add a flag to enable the fast spilling path.Owen Anderson2008-08-191-0/+7
| | | | llvm-svn: 54958
* Fix a few more bugs:Owen Anderson2008-08-181-3/+8
| | | | | | | 1) Assign stack slots to new temporaries. 2) Don't insert an interval into the return vector more than once. llvm-svn: 54956
* Fix several bugs in the new fast-path:Owen Anderson2008-08-181-16/+16
| | | | | | | | 1) Remove an incorrect assertion. 2) Set the stack slot weight properly. 3) Resize the VirtRegMap when needed. llvm-svn: 54949
* Clients of addIntervalForSpills expect the added intervals to be returned ↵Owen Anderson2008-08-181-0/+9
| | | | | | sorted by starting index. llvm-svn: 54939
* Simplify the fast-patch interval spilling by using ↵Owen Anderson2008-08-181-72/+50
| | | | | | MachineRegisterInfo::reg_iterator. llvm-svn: 54930
* Resurrect some ancient code to add spill ranges without attempting folding, ↵Owen Anderson2008-08-181-0/+105
| | | | | | | | | remat, or splitting. This code has been updated to current APIs in so far as it compiles and, in theory, works, but does not take advantage of recent advancements. For instance, it could be improved by using MachineRegisterInfo::use_iterator. llvm-svn: 54924
* Don't hoist instructions that have implicit uses or defines. Before, it wasBill Wendling2008-08-181-0/+5
| | | | | | hoisting out some "test" and "cmp" instructions. This was obvious badness. llvm-svn: 54908
* Don't require Registry specializations to define random static variables.Gordon Henriksen2008-08-172-18/+0
| | | | llvm-svn: 54902
* Drop an unnecessary include.Gordon Henriksen2008-08-171-1/+0
| | | | llvm-svn: 54901
* Rename some GC classes so that their roll will hopefully be clearer.Gordon Henriksen2008-08-1710-254/+226
| | | | | | | | | | | | | | | | | | In particular, Collector was confusing to implementors. Several thought that this compile-time class was the place to implement their runtime GC heap. Of course, it doesn't even exist at runtime. Specifically, the renames are: Collector -> GCStrategy CollectorMetadata -> GCFunctionInfo CollectorModuleMetadata -> GCModuleInfo CollectorRegistry -> GCRegistry Function::getCollector -> getGC (setGC, hasGC, clearGC) Several accessors and nested types have also been renamed to be consistent. These changes should be obvious. llvm-svn: 54899
* Don't instantiate GC metadata for declarations.Gordon Henriksen2008-08-172-1/+3
| | | | llvm-svn: 54895
* Fix merge errorAnton Korobeynikov2008-08-173-175/+0
| | | | llvm-svn: 54891
* Move all assembler printing related stuff into new libAsmPrinterAnton Korobeynikov2008-08-175-1/+173
| | | | llvm-svn: 54885
* Factor out asmprinters from collector interface.Anton Korobeynikov2008-08-171-0/+18
| | | | llvm-svn: 54884
* Factor GC metadata table assembly generation out of Collector in preparation ↵Gordon Henriksen2008-08-1710-50/+94
| | | | | | for splitting AsmPrinter into its own library. llvm-svn: 54881
* Factor GC metadata table assembly generation out of Collector in preparation ↵Gordon Henriksen2008-08-174-18/+72
| | | | | | for splitting AsmPrinter into its own library. llvm-svn: 54880
* Rework the routines that convert AP[S]Int into a string. Now, instead ofChris Lattner2008-08-172-7/+10
| | | | | | | | | | | | | | | | | returning an std::string by value, it fills in a SmallString/SmallVector passed in. This significantly reduces string thrashing in some cases. More specifically, this: - Adds an operator<< and a print method for APInt that allows you to directly send them to an ostream. - Reimplements APInt::toString to be much simpler and more efficient algorithmically in addition to not thrashing strings quite as much. This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the asmprinter. This also fixes a bug I introduced into the asmwriter in a previous patch w.r.t. alias printing. llvm-svn: 54873
* Move SLEB/ULEB size calculation routines from AsmPrinter to TargetAsmInfo. ↵Anton Korobeynikov2008-08-162-428/+402
| | | | | | This makes JIT asmprinter-free. llvm-svn: 54843
* Convert several std::vectors over to SmallVector, and use reserve() as ↵Owen Anderson2008-08-151-2/+4
| | | | | | appropriate for cases where std::vector is still used. llvm-svn: 54820
* Use SmallSet instead of std::set to save allocations.Owen Anderson2008-08-141-3/+3
| | | | llvm-svn: 54810
* Move MachineInstr::getOpcode inline.Owen Anderson2008-08-141-6/+0
| | | | llvm-svn: 54807
* Convert uses of std::vector in TargetInstrInfo to SmallVector. This change ↵Owen Anderson2008-08-144-35/+37
| | | | | | had to be propoagated down into all the targets and up into all clients of this API. llvm-svn: 54802
* Make FastISel's constructor protected, and give it a destructor.Dan Gohman2008-08-141-0/+2
| | | | llvm-svn: 54793
* Remove more uses of std::set.Owen Anderson2008-08-141-6/+8
| | | | llvm-svn: 54787
* Improve support for vector casts in LLVM IR and CodeGen.Dan Gohman2008-08-144-88/+221
| | | | llvm-svn: 54784
* Speed up addRegisterDead by adding more fast checks before performing the ↵Owen Anderson2008-08-141-1/+3
| | | | | | | | | expensive subregister query, and by increasing the size of the subregister hashtable so that there are fewer collisions. llvm-svn: 54781
* Use empty() instead of begin() == end().Dan Gohman2008-08-144-5/+5
| | | | llvm-svn: 54780
* Get rid of a use of std::map.Owen Anderson2008-08-131-2/+2
| | | | llvm-svn: 54770
* Fix a bogus srem rule - a negative value srem'd by a power-of-2Dan Gohman2008-08-131-5/+3
| | | | | | | can have a non-negative result; for example, -16%16 is 0. Also, clarify the related comments. This fixes PR2670. llvm-svn: 54767
* Expunge the last uses of std::map from LiveIntervals.Owen Anderson2008-08-131-13/+13
| | | | llvm-svn: 54766
* Move r2iMap_ over to DenseMap from std::map.Owen Anderson2008-08-131-1/+1
| | | | llvm-svn: 54765
* Allow SelectionDAG to create EXTRACT_VECTOR_ELT nodes withDan Gohman2008-08-131-11/+9
| | | | | | | non-constant indices. Only a few of the peephole checks require a constant index. llvm-svn: 54764
* Make the allocation of LiveIntervals explicit, rather than holding them in ↵Owen Anderson2008-08-133-16/+21
| | | | | | | | the r2iMap_ by value. This will prevent references to them from being invalidated if the map is changed. llvm-svn: 54763
* Initial checkin of the new "fast" instruction selection support. SeeDan Gohman2008-08-131-0/+104
| | | | | | | the comments in FastISelEmitter.cpp for details on what this is. This is currently experimental and unusable. llvm-svn: 54751
* Rename SelectionDAGISel's FastISel to Fast, to begin to makeDan Gohman2008-08-131-3/+3
| | | | | | room for the new FastISel instruction selection code. llvm-svn: 54749
* Get rid of unused variable.Owen Anderson2008-08-131-1/+0
| | | | llvm-svn: 54742
* 1) Merge entire live intervals instead of parts of them.Owen Anderson2008-08-131-62/+36
| | | | | | 2) Conditionalize temporary insertion if we don't need it. llvm-svn: 54741
* Correct the filename in the top-of-file comment.Dan Gohman2008-08-121-1/+1
| | | | llvm-svn: 54688
* Take the FrameOffset into account when computing the alignmentDan Gohman2008-08-111-1/+1
| | | | | | of stack objects. This fixes PR2656. llvm-svn: 54646
* Fix some typos. Apparently I think C needs a power-of operator.Gordon Henriksen2008-08-091-3/+3
| | | | llvm-svn: 54574
* Have IRBuilder take a template argument on whether or not to preserveEric Christopher2008-08-081-8/+8
| | | | | | | names. This can save a lot of allocations if you aren't going to be looking at the output. llvm-svn: 54546
* Handle visibility printing with all generality. Remove bunch of duplicate code.Anton Korobeynikov2008-08-081-0/+11
| | | | llvm-svn: 54540
* Reduce the entries in a phi before testing it for deadness, because removing ↵Owen Anderson2008-08-081-7/+7
| | | | | | the entries might make it dead. llvm-svn: 54535
* Add skeleton of simple basic block instruction selector.Evan Cheng2008-08-083-3/+81
| | | | llvm-svn: 54522
* Don't crash printing the asm for a ConstantExpr PtrToInt just because the intNick Lewycky2008-08-081-4/+5
| | | | | | | | is narrower than the pointer. This testcase emits: .byte (((17) - 16) & 255) llvm-svn: 54517
* Add the remaining fp_round libcalls:Bruno Cardoso Lopes2008-08-073-2/+41
| | | | | | | | | | | | | FPROUND_F80_F32, FPROUND_PPCF128_F32, FPROUND_F80_F64, FPROUND_PPCF128_F64 Support for soften float fp_round operands is added, Mips needs this to round f64->f32. Also added support to soften float FABS result, Mips doesn't support double fabs results while in 'single float only' mode. llvm-svn: 54484
* Do a dominator walk when scheduling copies, rather than a DFS on the CFG. ↵Owen Anderson2008-08-071-14/+44
| | | | | | | | Also, fix a few problems when creating live intervals for temporaries created by phi elimination. llvm-svn: 54483
* Re-enable elimination of unnecessary SUBREG_TO_REG instructions inDan Gohman2008-08-071-4/+9
| | | | | | | | | | | LowerSubregs, and fix an x86-64 isel bug that this exposed. SUBREG_TO_REG for x86-64 implicit zero extension is only safe for isel to generate when the source is known to always have zeros in the high 32 bits. The EXTRACT_SUBREG instruction does not clear the high 32 bits. llvm-svn: 54444
OpenPOWER on IntegriCloud