summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Pass in a std::string when getting the names of debugging things. This cuts downBill Wendling2009-03-091-4/+6
| | | | | | on the number of times a std::string is created and copied. llvm-svn: 66396
* Clean up dwarf writer, part 1. This eliminated the horrible recursive ↵Evan Cheng2009-02-251-4/+4
| | | | | | | | getGlobalVariablesUsing and replaced it something readable. It eliminated use of slow UniqueVector and replaced it with StringMap, SmallVector, and DenseMap, etc. It also fixed some non-deterministic behavior. This is a very minor compile time win. llvm-svn: 65438
* Overhaul my earlier submission due to feedback. It's a large patch, but most ofBill Wendling2009-02-241-1/+0
| | | | | | | | | | | | them are generic changes. - Use the "fast" flag that's already being passed into the asm printers instead of shoving it into the DwarfWriter. - Instead of calling "MI->getParent()->getParent()" for every MI, set the machine function when calling "runOnMachineFunction" in the asm printers. llvm-svn: 65379
* - Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emitBill Wendling2009-02-241-0/+1
| | | | | | | | | | a DBG_LABEL or not. We want to fall back to the original way of emitting debug info when we're in -O0/-fast mode. - Add plumbing in to pass the "Fast" flag to places that need it. - XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I need to investigate still. llvm-svn: 65367
* Revert this. It was breaking stuff.Bill Wendling2009-02-131-6/+45
| | | | llvm-svn: 64428
* Turn off the old way of handling debug information in the code generator. UseBill Wendling2009-02-131-45/+6
| | | | | | | the new way, where all of the information is passed on SDNodes and machine instructions. llvm-svn: 64427
* make fast isel fall back to selectiondags for VLA llvm.declare intrinsics.Chris Lattner2009-02-121-2/+2
| | | | llvm-svn: 64379
* Create DebugLoc information in FastISel. Several temporary methods wereBill Wendling2009-02-031-25/+32
| | | | | | | created. Specifically, those BuildMIs which use "DebugLoc::getUnknownLoc()". I'll remove them soon. llvm-svn: 63584
* Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and ↵Evan Cheng2009-01-221-3/+3
| | | | | | SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead. llvm-svn: 62762
* Verify debug info.Devang Patel2009-01-191-5/+5
| | | | llvm-svn: 62545
* Validate dbg_* intrinsics before lowering them.Devang Patel2009-01-151-5/+5
| | | | llvm-svn: 62286
* Use DebugInfo interface to lower dbg_* intrinsics.Devang Patel2009-01-131-20/+25
| | | | llvm-svn: 62127
* Rename getABITypeSize to getTypePaddedSize, asDuncan Sands2009-01-121-2/+2
| | | | | | suggested by Chris. llvm-svn: 62099
* Factor out the code for sign-extending/truncating gep indicesDan Gohman2008-12-081-23/+32
| | | | | | | | | and use it in x86 address mode folding. Also, make getRegForValue return 0 for illegal types even if it has a ValueMap for them, because Argument values are put in the ValueMap. This fixes PR3181. llvm-svn: 60696
* Eliminate some unused variable compile time warnings.Evan Cheng2008-11-241-0/+2
| | | | llvm-svn: 59952
* Emit label for llvm.dbg.func.start of the inlined function.Devang Patel2008-11-061-3/+8
| | | | llvm-svn: 58814
* FastISel support for exception-handling constructs.Dan Gohman2008-10-141-1/+69
| | | | | | | | | - Move the EH landing-pad code and adjust it so that it works with FastISel as well as with SDISel. - Add FastISel support for @llvm.eh.exception and @llvm.eh.selector. llvm-svn: 57539
* calls can be supported.Chris Lattner2008-10-131-9/+9
| | | | llvm-svn: 57428
* Add a "loses information" return value to APFloat::convertDale Johannesen2008-10-091-4/+8
| | | | | | | and APFloat::convertToInteger. Restore return value to IEEE754. Adjust all users accordingly. llvm-svn: 57329
* Avoid emitting redundant materializations of integer constantsDan Gohman2008-10-071-3/+4
| | | | | | | for things like null pointers, which at this level aren't different from regular integer constants. llvm-svn: 57265
* Implement fast-isel support for zero-extending from i1.Dan Gohman2008-10-031-1/+12
| | | | | | | It turns out that this is a fairly common operation, and it's easy enough to handle. llvm-svn: 56990
* Optimize conditional branches in X86FastISel. This replacesDan Gohman2008-10-021-10/+18
| | | | | | | | | | | sequences like this: sete %al testb %al, %al jne LBB11_1 with this: je LBB11_1 llvm-svn: 56969
* Move the primary fast-isel top-level comments to FastISel.cpp, whereDan Gohman2008-09-301-0/+28
| | | | | | they'll be a little more visible. Also, update and reword them a bit. llvm-svn: 56877
* Support for i1 XOR in FastISel. It is actually safe becauseDan Gohman2008-09-251-2/+3
| | | | | | i1 operands are assumed to already by zero-extended. llvm-svn: 56615
* FastISel support for debug info.Dan Gohman2008-09-251-0/+94
| | | | llvm-svn: 56610
* Fix a recent fast-isel coverage regression - don't bail out beforeDan Gohman2008-09-251-3/+4
| | | | | | giving the target a chance to materialize constants. llvm-svn: 56605
* Arrange for FastISel code to have access to the MachineModuleInfoDan Gohman2008-09-231-1/+3
| | | | | | object. This will be needed to support debug info. llvm-svn: 56508
* Refactor X86SelectConstAddr, folding it into X86SelectAddress. ThisDan Gohman2008-09-191-21/+15
| | | | | | | results in better code for globals. Also, unbreak the local CSE for GlobalValue stub loads. llvm-svn: 56371
* FastISel support for i1 constants.Dan Gohman2008-09-101-2/+10
| | | | llvm-svn: 56068
* Add X86FastISel support for static allocas, and refencesDan Gohman2008-09-101-13/+21
| | | | | | | to static allocas. As part of this change, refactor the address mode code for laods and stores. llvm-svn: 56066
* Clean this up, based on Evan's suggestions.Owen Anderson2008-09-091-2/+2
| | | | llvm-svn: 56009
* Check for type legality before materializing integer constants in fast isel. ↵Owen Anderson2008-09-091-0/+2
| | | | | | | | With this change, all of MultiSource/Applications passes on Darwin/X86 under FastISel. llvm-svn: 55982
* Fix a constant lowering bug. Now we can do load and store instructions with ↵Evan Cheng2008-09-091-0/+13
| | | | | | funky getelementptr embedded in the address operand. llvm-svn: 55975
* Add fast isel physical register definition support.Evan Cheng2008-09-081-7/+64
| | | | llvm-svn: 55892
* Indentation.Evan Cheng2008-09-071-2/+2
| | | | llvm-svn: 55880
* Revert r55859. This is breaking the build in the abscence of its companion ↵Owen Anderson2008-09-051-4/+12
| | | | | | commit. llvm-svn: 55865
* FastISel support for AND and OR with type i1.Dan Gohman2008-09-051-2/+10
| | | | llvm-svn: 55846
* FastISel support for ConstantExprs.Dan Gohman2008-09-051-5/+17
| | | | llvm-svn: 55843
* FastISel support for unreachable.Dan Gohman2008-09-051-0/+4
| | | | llvm-svn: 55818
* Add initial support for selecting constant materializations that require ↵Owen Anderson2008-09-051-1/+1
| | | | | | | | constant pool loads on X86 in fast isel. This isn't actually used yet. llvm-svn: 55814
* Do trivial local CSE for constants and other non-Instruction valuesDan Gohman2008-09-031-12/+15
| | | | | | in FastISel. llvm-svn: 55748
* Create HandlePHINodesInSuccessorBlocksFast, a version ofDan Gohman2008-09-031-152/+127
| | | | | | | | | | | | | HandlePHINodesInSuccessorBlocks that works FastISel-style. This allows PHI nodes to be updated correctly while using FastISel. This also involves some code reorganization; ValueMap and MBBMap are now members of the FastISel class, so they needn't be passed around explicitly anymore. Also, SelectInstructions is changed to SelectInstruction, and only does one instruction at a time. llvm-svn: 55746
* Oops, I accidentally broke the fallback case with my last commit.Owen Anderson2008-09-031-0/+2
| | | | llvm-svn: 55704
* Fix an issue where we were reusing materializations of constants in blocks ↵Owen Anderson2008-09-031-9/+15
| | | | | | | | | not dominated by the materialization. This is the simple fix, materializing the constant before every use. It might be better to either track domination of uses or to materialize all constants and the beginning of the function and let remat sort when to do materialization at uses. llvm-svn: 55703
* 80 col violations.Evan Cheng2008-09-021-2/+4
| | | | llvm-svn: 55668
* Fix an issue where a use might be selected before a def, and then we didn't ↵Owen Anderson2008-08-301-8/+23
| | | | | | | | | | | respect the pre-chosen vreg assignment when selecting the def. This is the naive solution to the problem: insert a copy to the pre-chosen vreg. Other solutions might be preferable, such as: 1) Passing the dest reg into FastEmit_. However, this would require the higher level code to know about reg classes, which they don't currently. 2) Selecting blocks in reverse postorder. This has some compile time cost for computing the order, and we'd need to measure its impact. llvm-svn: 55555
* Implement null and undef values for FastISel.Dan Gohman2008-08-281-0/+5
| | | | llvm-svn: 55500
* Hook up support for fast-isel of trunc instructions, using the newly working ↵Owen Anderson2008-08-281-1/+4
| | | | | | support for EXTRACT_SUBREG. llvm-svn: 55482
* FastEmitInst_extractsubreg doesn't need to be passed the register class. It ↵Owen Anderson2008-08-281-2/+2
| | | | | | can get it from MachineRegisterInfo instead. llvm-svn: 55476
* Add a helper method that will be used to support EXTRACT_SUBREG for ↵Owen Anderson2008-08-271-0/+11
| | | | | | selecting trunc's in fast-isel. llvm-svn: 55439
OpenPOWER on IntegriCloud