summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Make temporaries explicit to avoid prematureDale Johannesen2007-09-261-1/+3
| | | | | | destruction of compiler-created ones. llvm-svn: 42383
* - Move getPhysicalRegisterRegClass() from ScheduleDAG to MRegisterInfo.Evan Cheng2007-09-262-89/+191
| | | | | | | - Added ability to emit cross class register copies to the BBRU scheduler. - More aggressive backtracking. llvm-svn: 42375
* Enable codegen for long double abs, sin, cosDale Johannesen2007-09-261-3/+6
| | | | llvm-svn: 42368
* Fix f80 UNDEF.Dale Johannesen2007-09-261-1/+2
| | | | llvm-svn: 42359
* Allow copyRegToReg to emit cross register classes copies.Evan Cheng2007-09-266-16/+21
| | | | | | Tested with "make check"! llvm-svn: 42346
* Move the setOperationAction(ISD::DEBUG_LOC, MVT::Other, Expand) andDan Gohman2007-09-251-0/+5
| | | | | | | the check to see if the assembler supports .loc from X86TargetLowering into the superclass TargetLowering. llvm-svn: 42297
* Added major new capabilities to scheduler (only BURR for now) to support ↵Evan Cheng2007-09-255-150/+559
| | | | | | physical register dependency. The BURR scheduler can now backtrace and duplicate instructions in order to avoid "expensive / impossible to copy" values (e.g. status flag EFLAGS for x86) from being clobbered. llvm-svn: 42284
* Don't emit .debug_line header data if there aren't any lines to put in it,Dan Gohman2007-09-241-0/+5
| | | | | | such as will happen when .loc directives are used. llvm-svn: 42277
* Move the Asm->EOL() call for EmitDebugARanges outside the #ifdef forDan Gohman2007-09-241-1/+1
| | | | | | consistency with the other currently empty sections. llvm-svn: 42276
* Add support for emitting .file directives to set up file numbers forDan Gohman2007-09-241-0/+14
| | | | | | use with .loc directives. llvm-svn: 42275
* Add a routine for emitting .file directives, for setting upDan Gohman2007-09-241-0/+11
| | | | | | file numbers to use with .loc directives. llvm-svn: 42272
* Use the correct result value type instead of using getValueType(0)Dan Gohman2007-09-241-4/+3
| | | | | | | in ExpandEXTRACT_VECTOR_ELT and SplitVectorOp. This fixes an abort in the included testcase. llvm-svn: 42264
OpenPOWER on IntegriCloud