summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't propagate debug locations to instructions for materializingDan Gohman2010-07-141-5/+8
| | | | | | | constants, since they may not be emited near the other instructions which get the same line, and this confuses debug info. llvm-svn: 108302
* Use COPY for fast-isel bitconvert, but don't create cross-class copies.Jakob Stoklund Olesen2010-07-111-7/+6
| | | | | | This doesn't change the behavior of SelectBitcast for X86. llvm-svn: 108073
* Use COPY for extracting ImplicitDef'ed values from fast-isel instructions.Jakob Stoklund Olesen2010-07-111-30/+12
| | | | | | | This assumes that the registers can be copied which is probably a safe assumption. llvm-svn: 108070
* Use COPY in FastISel everywhere it is safe and trivial.Jakob Stoklund Olesen2010-07-111-8/+4
| | | | | | | The remaining copyRegToReg calls actually check the return value (shock!), so we cannot trivially replace them with COPY instructions. llvm-svn: 108069
* Reapply bottom-up fast-isel, with several fixes for x86-32:Dan Gohman2010-07-101-69/+150
| | | | | | | | | - Check getBytesToPopOnReturn(). - Eschew ST0 and ST1 for return values. - Fix the PIC base register initialization so that it doesn't ever fail to end up the top of the entry block. llvm-svn: 108039
* --- Reverse-merging r107947 into '.':Bob Wilson2010-07-091-150/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | U utils/TableGen/FastISelEmitter.cpp --- Reverse-merging r107943 into '.': U test/CodeGen/X86/fast-isel.ll U test/CodeGen/X86/fast-isel-loads.ll U include/llvm/Target/TargetLowering.h U include/llvm/Support/PassNameParser.h U include/llvm/CodeGen/FunctionLoweringInfo.h U include/llvm/CodeGen/CallingConvLower.h U include/llvm/CodeGen/FastISel.h U include/llvm/CodeGen/SelectionDAGISel.h U lib/CodeGen/LLVMTargetMachine.cpp U lib/CodeGen/CallingConvLower.cpp U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp U lib/CodeGen/SelectionDAG/FastISel.cpp U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp U lib/CodeGen/SelectionDAG/InstrEmitter.cpp U lib/CodeGen/SelectionDAG/TargetLowering.cpp U lib/Target/XCore/XCoreISelLowering.cpp U lib/Target/XCore/XCoreISelLowering.h U lib/Target/X86/X86ISelLowering.cpp U lib/Target/X86/X86FastISel.cpp U lib/Target/X86/X86ISelLowering.h llvm-svn: 107987
* Re-apply bottom-up fast-isel, with fixes. Be very careful to avoid emittingDan Gohman2010-07-091-69/+150
| | | | | | a DBG_VALUE after a terminator, or emitting any instructions before an EH_LABEL. llvm-svn: 107943
* Convert EXTRACT_SUBREG to COPY when emitting machine instrs.Jakob Stoklund Olesen2010-07-081-17/+4
| | | | | | | | | EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead. Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg(). The isMoveInstr hook will be removed later. llvm-svn: 107879
* Revert 107840 107839 107813 107804 107800 107797 107791.Dan Gohman2010-07-081-106/+66
| | | | | | Debug info intrinsics win for now. llvm-svn: 107850
* Don't forward-declare registers for static allocas, which we'llDan Gohman2010-07-071-1/+3
| | | | | | | prefer to materialize as local constants. This fixes the clang bootstrap abort. llvm-svn: 107840
* Implement bottom-up fast-isel. This has the advantage of not requiringDan Gohman2010-07-071-11/+32
| | | | | | a separate DCE pass over MachineInstrs. llvm-svn: 107804
* Give FunctionLoweringInfo an MBB member, avoiding the need to pass itDan Gohman2010-07-071-56/+73
| | | | | | | | around everywhere, and also give it an InsertPt member, to enable isel to operate at an arbitrary position within a block, rather than just appending to a block. llvm-svn: 107791
* Simplify FastISel's constructor by giving it a FunctionLoweringInfoDan Gohman2010-07-071-40/+26
| | | | | | | | | instance, rather than pointers to all of FunctionLoweringInfo's members. This eliminates an NDEBUG ABI sensitivity. llvm-svn: 107789
* Move FunctionLoweringInfo.h out into include/llvm/CodeGen. This willDan Gohman2010-07-071-1/+1
| | | | | | allow target-specific fast-isel code to make use of it directly. llvm-svn: 107787
* Rename CreateReg to CreateRegs, and MakeReg to CreateReg.Dan Gohman2010-07-021-1/+1
| | | | llvm-svn: 107451
* Rename CreateRegForValue to CreateReg, and change its argumentDan Gohman2010-07-011-1/+1
| | | | | | | from a Value to a Type, because it doesn't actually care about the Value. llvm-svn: 107383
* Teach fast-isel to avoid loading a value from memory when it's alreadyDan Gohman2010-07-011-0/+24
| | | | | | | available in a register. This is pretty primitive, but it reduces the number of instructions in common testcases by 4%. llvm-svn: 107380
* Enable on-demand fast-isel.Dan Gohman2010-07-011-1/+4
| | | | llvm-svn: 107377
* Do one lookup instead of two.Dan Gohman2010-06-211-2/+3
| | | | llvm-svn: 106415
* Generalize this to look in the regular ValueMap in addition toDan Gohman2010-06-211-1/+1
| | | | | | | the LocalValueMap, to make it more flexible when fast-isel isn't proceding straight top-down. llvm-svn: 106414
* Teach regular and fast isel to set dead flags on unused implicit defsDan Gohman2010-06-181-0/+1
| | | | | | on calls and similar instructions. llvm-svn: 106353
* Eliminate unnecessary uses of getZExtValue().Dan Gohman2010-06-181-1/+1
| | | | llvm-svn: 106279
* Add a DebugLoc parameter to TargetInstrInfo::InsertBranch(). ThisStuart Hastings2010-06-171-3/+3
| | | | | | | | | | | | addresses a longstanding deficiency noted in many FIXMEs scattered across all the targets. This effectively moves the problem up one level, replacing eleven FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path through FastISel where we actually supply a DebugLoc, fixing Radar 7421831. llvm-svn: 106243
* Do one map lookup instead of two.Dan Gohman2010-05-251-2/+3
| | | | llvm-svn: 104645
* Fast ISel trivially coalesces away no-op casts, so check for this whenDan Gohman2010-05-141-4/+16
| | | | | | setting kill flags. llvm-svn: 103832
* An Instruction has a trivial kill only if its use is in the sameDan Gohman2010-05-131-2/+5
| | | | | | basic block. llvm-svn: 103725
* Add initial kill flag support to FastISel.Dan Gohman2010-05-111-60/+136
| | | | llvm-svn: 103529
* Verify variable directly.Devang Patel2010-05-071-1/+1
| | | | llvm-svn: 103305
* Transfer debug location information from PHI nodes to resultingDan Gohman2010-05-071-0/+8
| | | | | | lowered copies. llvm-svn: 103228
* Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that itDan Gohman2010-05-061-11/+11
| | | | | | doesn't have to guess. llvm-svn: 103194
* In bottom-up mode, defer the materialization of local constant values.Dan Gohman2010-05-061-0/+11
| | | | llvm-svn: 103139
* Add an "IsBottomUp" member function to FastISel, which will be used toDan Gohman2010-05-051-1/+2
| | | | | | support a new bottom-up mode. llvm-svn: 103138
* Factor out FastISel's code for materializing constants and other valuesDan Gohman2010-05-031-1/+10
| | | | | | | in registers into a separate function to de-couple it from the top-down-specific logic in getRegForValue. llvm-svn: 102975
* While lowering dbg_declare, emit DBG_VALUE machine instruction if alloca ↵Devang Patel2010-04-281-11/+11
| | | | | | matching llvm.dbg.declare intrinsic is missing. llvm-svn: 102513
* Add comment re byval args. Doesn't actually work this way yet.Dale Johannesen2010-04-251-1/+3
| | | | | | xs llvm-svn: 102316
* Move FastISel's HandlePHINodesInSuccessorBlocks call down into FastISelDan Gohman2010-04-231-0/+6
| | | | | | itself too. llvm-svn: 102176
* Move HandlePHINodesInSuccessorBlocks functions out of SelectionDAGISelDan Gohman2010-04-221-1/+67
| | | | | | and into SelectionDAGBuilder and FastISel. llvm-svn: 102123
* Fix a comment.Dan Gohman2010-04-221-1/+1
| | | | llvm-svn: 102110
* Don't send PHI nodes down to SelectionDAGBuilder of FastISel, sinceDan Gohman2010-04-201-4/+4
| | | | | | they end up doing nothing. llvm-svn: 101904
* Sink DebugLoc handling out of SelectionDAGISel into FastISel andDan Gohman2010-04-201-2/+9
| | | | | | SelectionDAGBuilder, where it doesn't have to be as complicated. llvm-svn: 101848
* Add const qualifiers to CodeGen's use of LLVM IR constructs.Dan Gohman2010-04-151-33/+33
| | | | llvm-svn: 101334
* Factor out EH landing pad code into a separate function, and constifyDan Gohman2010-04-141-1/+1
| | | | | | a bunch of stuff to support it. llvm-svn: 101273
* Generalize this code to handle Instructions in addition to ConstantExprs.Dan Gohman2010-04-141-3/+3
| | | | llvm-svn: 101210
* Add a few comments.Dan Gohman2010-04-131-0/+5
| | | | llvm-svn: 101148
* Move printing of target-indepedent DEBUG_VALUE commentsDale Johannesen2010-04-071-1/+3
| | | | | | | into AsmPrinter. Target-dependent form is still generated by FastISel and still handled in X86 code. llvm-svn: 100596
* unthread MMI from FastISelChris Lattner2010-04-051-38/+31
| | | | llvm-svn: 100416
* fastisel doesn't need DwarfWriter, remove some tendricles.Chris Lattner2010-04-051-5/+2
| | | | llvm-svn: 100381
* Switch the code generator (except the JIT) onto the new DebugLocChris Lattner2010-04-021-2/+2
| | | | | | | | | | | | | | | representation. This eliminates the 'DILocation' MDNodes for file/line/col tuples from -O0 -g codegen. This remove the old DebugLoc class, making it a typedef for DebugLoc, I'll rename NewDebugLoc next. I didn't update the JIT to use the new apis, so it will continue to work, but be as slow as before. Someone should eventually do this or, better yet, rip out the JIT debug info stuff and build the JIT on top of MC. llvm-svn: 100209
* add new apis for getting/setting !dbg metadata on Chris Lattner2010-03-311-4/+3
| | | | | | | | | instructions. In addition to being a convenience, they are faster than the old apis, particularly when not going from an MDKindID like people should be doing. llvm-svn: 99982
* Remove dead include.Daniel Dunbar2010-03-111-1/+0
| | | | llvm-svn: 98225
OpenPOWER on IntegriCloud