summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Implement partial-word binary atomics on ppc.Dale Johannesen2008-08-283-0/+219
| | | | llvm-svn: 55478
* 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
* Revert r55467; it causes regressions in UnitTests/Vector/divides,Dan Gohman2008-08-282-68/+4
| | | | | | Benchmarks/sim/sim, and others on x86-64. llvm-svn: 55475
* Correctly resize the Parts array.Rafael Espindola2008-08-281-1/+1
| | | | llvm-svn: 55471
* If a copy isn't coalesced, but its src is defined by trivial computation. ↵Evan Cheng2008-08-282-4/+68
| | | | | | Re-materialize the src to replace the copy. llvm-svn: 55467
* FsFLD0S{S|D} and V_SETALLONES are as cheap as moves.Evan Cheng2008-08-281-3/+3
| | | | llvm-svn: 55466
* Make the verifier reject instructions which have null pointers Chris Lattner2008-08-281-0/+11
| | | | | | | for operands: rdar://6179606. no testcase, because I can't write a .ll file that is this broken ;-) llvm-svn: 55460
* Clear the intervals list in "destroy", patch by Chris Lattner2008-08-281-0/+1
| | | | | | Prakash Prabhu! llvm-svn: 55458
* Split the ATOMIC NodeType's to include the size, e.g.Dale Johannesen2008-08-287-300/+558
| | | | | | | | | | | | | | | | ATOMIC_LOAD_ADD_{8,16,32,64} instead of ATOMIC_LOAD_ADD. Increased the Hardcoded Constant OpActionsCapacity to match. Large but boring; no functional change. This is to support partial-word atomics on ppc; i8 is not a valid type there, so by the time we get to lowering, the ATOMIC_LOAD nodes looks the same whether the type was i8 or i32. The information can be added to the AtomicSDNode, but that is the largest SDNode; I don't fully understand the SDNode allocation, but it is sensitive to the largest node size, so increasing that must be bad. This is the alternative. llvm-svn: 55457
* Reorganize the lifetimes of the major objects SelectionDAGISelDan Gohman2008-08-272-232/+345
| | | | | | | | | | | | | | | | | | | | works with. SelectionDAG, FunctionLoweringInfo, and SelectionDAGLowering objects now get created once per SelectionDAGISel instance, and can be reused across blocks and across functions. Previously, they were created and destroyed each time they were needed. This reorganization simplifies the handling of PHI nodes, and also SwitchCases, JumpTables, and BitTestBlocks. This simplification has the side effect of fixing a bug in FastISel where successor PHI nodes weren't being updated correctly. This is also a step towards making the transition from FastISel into and out of SelectionDAG faster, and also making plain SelectionDAG faster on code with lots of little blocks. llvm-svn: 55450
* 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
* Make "movdq2q" and "movq2dq" dependent upon having SSE2 because they use theBill Wendling2008-08-272-7/+11
| | | | | | SSE2 registers as well as the MMX registers. llvm-svn: 55436
* Put file scoped constants in an anonymous namespace. Use the "using namespaceBill Wendling2008-08-271-3/+5
| | | | | | llvm" for consistency. llvm-svn: 55435
* Move the check whether it's worth remating to caller.Evan Cheng2008-08-272-3/+2
| | | | llvm-svn: 55434
* Do not apply the transformation if the target does not support DestTy natively.Devang Patel2008-08-271-2/+9
| | | | llvm-svn: 55433
* Fix FastISel's bitcast code for the case where getRegForValue fails.Dan Gohman2008-08-271-1/+4
| | | | llvm-svn: 55431
* Refactor isSafeToReMat out of 2addr pass.Evan Cheng2008-08-272-29/+26
| | | | llvm-svn: 55430
* Use TargetLowering to get the types in fast isel, which handles pointer ↵Owen Anderson2008-08-271-4/+4
| | | | | | types correctly for our purposes. llvm-svn: 55428
* Don't check TLI.getOperationAction. The FastISel way is toDan Gohman2008-08-271-6/+2
| | | | | | | just try to do the action and let the tablegen-generated code determine if there is target-support for an operation. llvm-svn: 55427
* Add a new FastISel method, getRegForValue, which takes care ofDan Gohman2008-08-271-133/+95
| | | | | | | the details of materializing constants and other values into registers, and make use of it in several places. llvm-svn: 55426
* Add a comment about the current floating-point constant code in FastISel.Dan Gohman2008-08-271-0/+6
| | | | llvm-svn: 55425
* Fix typos and whitespaces. Other cosmetic changes based on feedback.Devang Patel2008-08-271-12/+9
| | | | llvm-svn: 55424
* Minor cleanup.Chris Lattner2008-08-271-16/+15
| | | | llvm-svn: 55423
* Reinstate the x86-64 portion of r55190. When doing extloads intoDan Gohman2008-08-271-9/+8
| | | | | | | | 64-bit registers from 16-bit and smaller memory locations, prefer instructions that define the entire 64-bit register, to avoid partial-register updates. llvm-svn: 55422
* Optimize ScheduleDAGRRList's topological sort to use one pass insteadDan Gohman2008-08-271-19/+8
| | | | | | | | of two, and to not need a scratch std::vector. Also, compute the ordering immediately in the result array, instead of in another scratch std::vector that is copied to the result array. llvm-svn: 55421
* Optimize ScheduleDAG's ComputeDepths and ComputeHeights to not needDan Gohman2008-08-271-14/+14
| | | | | | a scratch std::vector. llvm-svn: 55420
* Remove the std::ostream form of PseudoSourceValue's print,Dan Gohman2008-08-271-3/+0
| | | | | | which isn't needed anymore. llvm-svn: 55419
* Diagnose uses of unsized types with the byval attribute in theDan Gohman2008-08-271-0/+11
| | | | | | verifier. See PR2711 for details. llvm-svn: 55414
* Update wording, as aggregates are now first-class.Dan Gohman2008-08-271-3/+2
| | | | llvm-svn: 55413
* Add DebugInfoBuilder. Patch by Talin!Evan Cheng2008-08-271-0/+272
| | | | llvm-svn: 55409
* Basic FastISel support for floating-point constants.Dan Gohman2008-08-271-0/+74
| | | | llvm-svn: 55401
* Fix handling of inttoptr and ptrtoint when unhandled operands are present.Owen Anderson2008-08-271-2/+6
| | | | llvm-svn: 55400
* Add support for fast isel of inttoptr and ptrtoint in the cases where ↵Owen Anderson2008-08-271-0/+19
| | | | | | truncation is not needed. llvm-svn: 55399
* Factor out a large amoutn of the cast handling code in fast isel into helper ↵Owen Anderson2008-08-261-107/+81
| | | | | | | | methods. This simultaneously makes the code simpler and adds support for sext as well. llvm-svn: 55398
* Add support for fast isel of zext.Owen Anderson2008-08-261-0/+29
| | | | llvm-svn: 55396
* disallow direct access to SDValue::ResNo, provide a getter insteadGabor Greif2008-08-2615-69/+69
| | | | llvm-svn: 55394
* Add support for fptosi of constants in fast isel.Owen Anderson2008-08-261-3/+29
| | | | llvm-svn: 55393
* Put a heuristic in place to prevent GVN from falling into bad cases with ↵Owen Anderson2008-08-261-0/+6
| | | | | | | | massively complicated CFGs. This speeds up a particular testcase from 12+ hours to 5 seconds with little perceptible loss of quality. llvm-svn: 55391
* Optimize SelectionDAG's topological sort to use one pass insteadDan Gohman2008-08-262-56/+12
| | | | | | | | of two, and to not need a scratch std::vector. Also, use the SelectionDAG's topological sort in LegalizeDAG instead of having a separate implementation. llvm-svn: 55389
* Refactor the bitcast code into its own function.Dan Gohman2008-08-261-58/+69
| | | | llvm-svn: 55387
* Make FastISel use the correct argument type when casting GEP indices.Dan Gohman2008-08-261-6/+7
| | | | llvm-svn: 55384
* Don't select binary instructions with illegal types.Dan Gohman2008-08-261-0/+6
| | | | llvm-svn: 55383
* Add support for fast isel of sitofp, and remove some unnecessary and ↵Owen Anderson2008-08-261-4/+28
| | | | | | imprecise legality checks. llvm-svn: 55381
* Use a combination of copyRegToReg and ISD::BIT_CONVERT when doing fast isel ↵Owen Anderson2008-08-261-8/+19
| | | | | | | | of bitcasts, allowing it to support the full range of conversions people might ask for in a correct manner. llvm-svn: 55378
* These assertions should be return false's instead, allowing the client to ↵Owen Anderson2008-08-261-4/+8
| | | | | | detect the failure. llvm-svn: 55377
* Make TargetInstrInfo::copyRegToReg return a bool indicating whether the copy ↵Owen Anderson2008-08-2617-58/+77
| | | | | | | | | requested was inserted or not. This allows bitcast in fast isel to properly handle the case where an appropriate reg-to-reg copy is not available. llvm-svn: 55375
* If IV is used in a int-to-float cast inside the loop then try to eliminate ↵Devang Patel2008-08-261-2/+118
| | | | | | the cast operation. llvm-svn: 55374
* Add support for fast isel of non-constant fptosi instructions.Owen Anderson2008-08-261-5/+43
| | | | llvm-svn: 55373
* If an xmm register is referenced explicitly in an inline asm, make sure to Chris Lattner2008-08-261-49/+61
| | | | | | | assign it to a version of the xmm register with the regclass that matches its type. This fixes PR2715, a bug handling some crazy xpcom case in mozilla. llvm-svn: 55358
* typo fix.Chris Lattner2008-08-261-1/+1
| | | | llvm-svn: 55355
OpenPOWER on IntegriCloud