summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Correct swapped arguments to getConstant.Duncan Sands2007-10-101-1/+1
| | | | llvm-svn: 42824
* Next PPC long double bits: ppcf128->i32 conversion.Dale Johannesen2007-10-102-2/+26
| | | | | | | Surprisingly complicated. Adds getTargetNode for 2 outputs, no inputs (missing). llvm-svn: 42822
* Bad choice of variable name.Evan Cheng2007-10-101-2/+2
| | | | llvm-svn: 42821
* Fix an extremely stupid bug that prevented first round of coalescing ↵Evan Cheng2007-10-091-1/+2
| | | | | | (physical registers only) from happening. llvm-svn: 42820
* Call getFunctionNumber() instead of referencing FunctionNumber directly,Dan Gohman2007-10-081-1/+1
| | | | | | for consistency. llvm-svn: 42769
* Migrate X86 and ARM from using X86ISD::{,I}DIV and ARMISD::MULHILO{U,S} toDan Gohman2007-10-082-40/+140
| | | | | | | | use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code associated with these operators into target-independent in LegalizeDAG.cpp and TargetLowering.cpp. llvm-svn: 42762
* DAGCombiner support for UDIVREM/SDIVREM and UMUL_LOHI/SMUL_LOHI. Dan Gohman2007-10-081-17/+137
| | | | | | | | | Check if one of the two results unneeded so see if a simpler operator could bs used. Also check to see if each of the two computations could be simplified if they were split into separate operators. Factor out the code that calls visit() so that it can be used for this purpose. llvm-svn: 42759
* Add convenience overloads of SelectionDAG::getNode that take a SDVTListDan Gohman2007-10-081-0/+36
| | | | | | and individual SDOperand operands. llvm-svn: 42753
* In -debug mode, dump SelectionDAGs both before and after theDan Gohman2007-10-081-1/+7
| | | | | | optimization passes. llvm-svn: 42749
* Kill cycle of an live range is always the last use index + 1.Evan Cheng2007-10-081-1/+1
| | | | llvm-svn: 42742
* convertFromInteger, as originally written, expected sign-extendedNeil Booth2007-10-072-3/+3
| | | | | | | | input. APInt unfortunately zero-extends signed integers, so Dale modified the function to expect zero-extended input. Make this assumption explicit in the function name. llvm-svn: 42732
* Reapply 42677.Evan Cheng2007-10-061-3/+52
| | | | llvm-svn: 42692
* revert evan's patch until the header is committedChris Lattner2007-10-061-52/+3
| | | | llvm-svn: 42686
* Added DAG xforms. e.g.Evan Cheng2007-10-061-3/+52
| | | | | | | | (vextract (v4f32 s2v (f32 load $addr)), 0) -> (f32 load $addr) (vextract (v4i32 bc (v4f32 s2v (f32 load $addr))), 0) -> (i32 load $addr) Remove x86 specific patterns. llvm-svn: 42677
* Next powerpc long double bits. Comparisons work,Dale Johannesen2007-10-061-28/+56
| | | | | | although not well, and shortening FP converts. llvm-svn: 42672
* First round of ppc long double. call/return andDale Johannesen2007-10-052-31/+86
| | | | | | | | | basic arithmetic works. Rename RTLIB long double functions to distinguish different flavors of long double; the lib functions have different names, alas. llvm-svn: 42644
* Legalize support for MUL_LOHI and DIVREM.Dan Gohman2007-10-051-0/+10
| | | | llvm-svn: 42636
* Fix a typo in a comment.Dan Gohman2007-10-051-1/+1
| | | | llvm-svn: 42635
* Provide names for MUL_LOHI and DIVREM operators.Dan Gohman2007-10-051-0/+4
| | | | llvm-svn: 42634
* Chain producing nodes cannot be moved, not chain reading nodes.Evan Cheng2007-10-051-5/+7
| | | | llvm-svn: 42627
* Oops. Didn't mean to leave this in.Evan Cheng2007-10-051-1/+0
| | | | llvm-svn: 42626
* If a node that defines a physical register that is expensive to copy. TheEvan Cheng2007-10-052-47/+165
| | | | | | | | | scheduler will try a number of tricks in order to avoid generating the copies. This may not be possible in case the node produces a chain value that prevent movement. Try unfolding the load from the node before to allow it to be moved / cloned. llvm-svn: 42625
* Add a variant of getTargetNode() that takes a vector of MVT::ValueType.Evan Cheng2007-10-051-0/+7
| | | | llvm-svn: 42620
* Silence a warning.Evan Cheng2007-10-051-1/+1
| | | | llvm-svn: 42619
* Use empty() member functions when that's what's being tested for insteadDan Gohman2007-10-034-15/+13
| | | | | | of comparing begin() and end(). llvm-svn: 42585
* Rewrite sqrt and powi to use anyfloat. By popular demand.Dale Johannesen2007-10-022-39/+30
| | | | llvm-svn: 42537
* Fix stride computations for long double arrays.Dale Johannesen2007-10-012-3/+7
| | | | llvm-svn: 42508
* Move the code that emits the .file directives so that it runs after theDan Gohman2007-10-011-16/+17
| | | | | | SourceFiles list is fully filled in so that it sees all of the files. llvm-svn: 42506
* Remove simple scheduler.Evan Cheng2007-10-011-1165/+0
| | | | llvm-svn: 42499
* remove dup commentDale Johannesen2007-09-301-1/+0
| | | | llvm-svn: 42486
* Constant fold int-to-long-double conversions;Dale Johannesen2007-09-302-2/+2
| | | | | | | | use APFloat for int-to-float/double; use round-to-nearest for these (implementation-defined, seems to match gcc). llvm-svn: 42484
* This is done already.Gordon Henriksen2007-09-291-7/+0
| | | | llvm-svn: 42467
* Collector is the base class for garbage collection code generators.Gordon Henriksen2007-09-292-0/+391
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This version enhances the previous patch to add root initialization as discussed here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070910/053455.html Collector gives its subclasses control over generic algorithms: unsigned NeededSafePoints; //< Bitmask of required safe points. bool CustomReadBarriers; //< Default is to insert loads. bool CustomWriteBarriers; //< Default is to insert stores. bool CustomRoots; //< Default is to pass through to backend. bool InitRoots; //< If set, roots are nulled during lowering. It also has callbacks which collectors can hook: /// If any of the actions are set to Custom, this is expected to /// be overriden to create a transform to lower those actions to /// LLVM IR. virtual Pass *createCustomLoweringPass() const; /// beginAssembly/finishAssembly - Emit module metadata as /// assembly code. virtual void beginAssembly(Module &M, std::ostream &OS, AsmPrinter &AP, const TargetAsmInfo &TAI) const; virtual void finishAssembly(Module &M, CollectorModuleMetadata &CMM, std::ostream &OS, AsmPrinter &AP, const TargetAsmInfo &TAI) const; Various other independent algorithms could be implemented, but were not necessary for the initial two collectors. Some examples are listed here: http://llvm.org/docs/GarbageCollection.html#collector-algos llvm-svn: 42466
* Teach SplitVectorOp how to split INSERT_VECTOR_ELT.Dan Gohman2007-09-281-0/+12
| | | | llvm-svn: 42457
* If two instructions are both two-address code, favors (schedule closer toEvan Cheng2007-09-282-8/+25
| | | | | | | terminator) the one that has a CopyToReg use. This fixes 2006-05-11-InstrSched.ll with -new-cc-modeling-scheme. llvm-svn: 42453
* Remove a poor scheduling heuristic.Evan Cheng2007-09-281-34/+5
| | | | llvm-svn: 42443
* Trim some unneeded fields.Evan Cheng2007-09-283-26/+12
| | | | llvm-svn: 42442
* Fix long double -> uint64 conversion.Dale Johannesen2007-09-281-1/+5
| | | | llvm-svn: 42440
* minor long double related changesDale Johannesen2007-09-282-0/+19
| | | | llvm-svn: 42439
* Make the checks for DW_FORM_data4 consistent with the others, andDan Gohman2007-09-281-2/+6
| | | | | | add more such code for DIEDwarfLabel::SizeOf and DIEObjectLabel::SizeOf. llvm-svn: 42435
* Use 32-bit data directives for DW_FORM_data4 format data, even onDan Gohman2007-09-281-8/+10
| | | | | | targets with 64-bit addresses. llvm-svn: 42434
* Add sqrt and powi intrinsics for long double.Dale Johannesen2007-09-283-6/+19
| | | | llvm-svn: 42423
* TargetAsmInfo::getAddressSize() was incorrect for x86-64 and 64-bit targetsDan Gohman2007-09-271-15/+16
| | | | | | | | other than PPC64. Instead of fixing it, just remove it and fix all the places that use it to use TargetData::getPointerSize() instead, as there aren't very many. Most of the references were in DwarfWriter.cpp. llvm-svn: 42419
* CollectorMetadata abstractly describes stack maps for a function.Gordon Henriksen2007-09-271-0/+185
| | | | | | | | | | | | | | | | | | | | It includes: - location and of each safe point in machine code (identified by a label) - location of each root within the stack frame (identified by an offset), including the metadata tag provided to llvm.gcroot in the user program - size of the stack frame (for collectors which want to cheat on stack crawling :) - and eventually will include liveness It is to be populated by back-ends during code-generation. CollectorModuleMetadata aggregates this information across the entire module. llvm-svn: 42418
* My previous Registry.h header, as well as Collectors.h, which is theGordon Henriksen2007-09-271-0/+21
| | | | | | registry for dynamically-loaded garbage collection compiler plugins. llvm-svn: 42415
* Avoid inserting a live register more than once.Evan Cheng2007-09-271-8/+18
| | | | llvm-svn: 42410
* Silence a compiler warning.Evan Cheng2007-09-271-1/+1
| | | | llvm-svn: 42389
* Boogs.Evan Cheng2007-09-271-10/+10
| | | | llvm-svn: 42388
* Be smarter about which node to force schedule. Reduce # of duplications + ↵Evan Cheng2007-09-271-84/+120
| | | | | | copies; Added statistics. llvm-svn: 42387
* Backtracking only when it won't create a cycle.Evan Cheng2007-09-271-23/+35
| | | | llvm-svn: 42384
OpenPOWER on IntegriCloud