summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
Commit message (Collapse)AuthorAgeFilesLines
* Implement cond ? -1 : 0 with sbb.Evan Cheng2010-01-261-0/+8
| | | | llvm-svn: 94490
* Generate DEBUG_VALUE comments on x86. The (limited)Dale Johannesen2010-01-261-0/+3
| | | | | | | dbg.declare's we currently generate go through both register allocators without perturbing the results. llvm-svn: 94480
* Rearrange handling of jump tables. Highlights:Chris Lattner2010-01-253-6/+28
| | | | | | | | | | | | | | | | | | 1. MachineJumpTableInfo is now created lazily for a function the first time it actually makes a jump table instead of for every function. 2. The encoding of jump table entries is now described by the MachineJumpTableInfo::JTEntryKind enum. This enum is determined by the TLI::getJumpTableEncoding() hook, instead of by lots of code scattered throughout the compiler that "knows" that jump table entries are always 32-bits in pic mode (for example). 3. The size and alignment of jump table entries is now calculated based on their kind, instead of at machinefunction creation time. Future work includes using the EntryKind in more places in the compiler, eliminating other logic that "knows" the layout of jump tables in various situations. llvm-svn: 94470
* make -fno-rtti the default unless a directory builds with REQUIRES_RTTI.Chris Lattner2010-01-241-1/+0
| | | | llvm-svn: 94378
* It seems better to scalarize vectors of size 1 instead of widening them.Mon P Wang2010-01-243-1/+11
| | | | | | Add support to widen SETCC. llvm-svn: 94342
* Improved widening loads by adding support for wider loads ifMon P Wang2010-01-243-275/+385
| | | | | | | the alignment allows. Fixed a bug where we didn't use a vector load/store for PR5626. llvm-svn: 94338
* Remove the '-disable-scheduling' flag and replace it with the 'source' option ofBill Wendling2010-01-234-690/+444
| | | | | | | | | the '-pre-RA-sched' flag. It actually makes more sense to do it this way. Also, keep track of the SDNode ordering by default. Eventually, we would like to make this ordering a way to break a "tie" in the scheduler. However, doing that now breaks the "CodeGen/X86/abi-isel.ll" test for 32-bit Linux. llvm-svn: 94308
* Enable pre-regalloc scheduling load clustering by default.Evan Cheng2010-01-221-7/+1
| | | | llvm-svn: 94255
* Stop building RTTI information for *most* llvm libraries. NotableChris Lattner2010-01-221-1/+2
| | | | | | | | | | | missing ones are libsupport, libsystem and libvmcore. libvmcore is currently blocked on bugpoint, which uses EH. Once it stops using EH, we can switch it off. This #if 0's out 3 unit tests, because gtest requires RTTI information. Suggestions welcome on how to fix this. llvm-svn: 94164
* Teach pre-regalloc scheduler to schedule loads from nearby addresses. It may ↵Evan Cheng2010-01-222-0/+134
| | | | | | improve cache locality. This is controlled by -cluster-loads for now. llvm-svn: 94148
* Trim unneeded includes.Evan Cheng2010-01-213-3/+0
| | | | llvm-svn: 94105
* back this out for now. Growing Function is not good.Jim Grosbach2010-01-211-6/+0
| | | | llvm-svn: 94097
* Make sure that landing pad entries in the EH call site table are in the properJim Grosbach2010-01-211-0/+6
| | | | | | order for SjLj style exception handling. llvm-svn: 94055
* When XDEBUG is enabled, check for SelectionDAG cycles at some keyDavid Greene2010-01-201-1/+35
| | | | | | | points. This will help us find future problems like the one described in PR6019. llvm-svn: 94019
* Add some asserts to check SelectionDAG problems earlier.David Greene2010-01-201-0/+12
| | | | llvm-svn: 93960
* Fold (add x, shl(0 - y, n)) -> sub(x, shl(y, n)), to simplify some codeDan Gohman2010-01-191-0/+20
| | | | | | that SCEVExpander can produce when running on behalf of LSR. llvm-svn: 93949
* Add some new debugging APIs to print out "raw" SelectionDAGs to makeDavid Greene2010-01-192-29/+25
| | | | | | understanding CannotYTetSelect and other errors easier. llvm-svn: 93901
* Revert 93811 per request.Dale Johannesen2010-01-191-3/+0
| | | | llvm-svn: 93818
* Enable code to emit dbg.declare as DEBUG_VALUEDale Johannesen2010-01-181-0/+3
| | | | | | | | | comments (fast isel, X86). This doesn't seem to break any functionality, but will introduce cases where -g affects the generated code. I'll be fixing that. llvm-svn: 93811
* Canonicalize -1 - x to ~x.Evan Cheng2010-01-181-0/+3
| | | | | | | | | | Instcombine does this but apparently there are situations where this pattern will escape the optimizer and / or created by isel. Here is a case that's seen in JavaScriptCore: %t1 = sub i32 0, %a %t2 = add i32 %t1, -1 The dag combiner pattern: ((c1-A)+c2) -> (c1+c2)-A will fold it to -1 - %a. llvm-svn: 93773
* When checking for sret-demotion, it needs to use legal types. When using ↵Kenneth Uildriks2010-01-161-11/+41
| | | | | | the return value of an sret-demoted call, it needs to use possibly illegal types that match the declared Type of the callee. llvm-svn: 93667
* Add some debug routines to SelectionDAG to dump full DAGs.David Greene2010-01-152-1/+44
| | | | | | | | | | | print/dumpWithDepth allows one to dump a DAG up to N levels deep. dump/printWithFullDepth prints the whole DAG, subject to a depth limit on 100 in the default case (to prevent infinite recursion). Have CannotYetSelect to a dumpWithFullDepth so it is clearer exactly what the non-matching DAG looks like. llvm-svn: 93538
* Improve llvm.dbg.declare intrinsic by referring directly to the storage in ↵Victor Hernandez2010-01-151-2/+0
| | | | | | | | | its first argument, via function-local metadata (instead of via a bitcast). This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare. It also strips old llvm.dbg.declare intrinsics that did not pass metadata as the first argument. llvm-svn: 93531
* Revert r93504 because older uses of llvm.dbg.declare intrinsics need to be ↵Victor Hernandez2010-01-151-0/+2
| | | | | | auto-upgraded llvm-svn: 93515
* Improve llvm.dbg.declare intrinsic by referring directly to the storage in ↵Victor Hernandez2010-01-151-2/+0
| | | | | | | | its first argument, via function-local metadata (instead of via a bitcast). This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare. llvm-svn: 93504
* fix 80-column violationsJim Grosbach2010-01-151-12/+14
| | | | llvm-svn: 93487
* Fix a codegen abort seen in 483.xalancbmk.Dan Gohman2010-01-141-0/+3
| | | | llvm-svn: 93417
* Update a partially obsolete comment.Dan Gohman2010-01-121-1/+1
| | | | llvm-svn: 93228
* Fix a typo in a comment.Dan Gohman2010-01-121-1/+1
| | | | llvm-svn: 93227
* Avoid adding PHI arguments for a predecessor that has gone away when a ↵Jakob Stoklund Olesen2010-01-111-14/+19
| | | | | | | | BRCOND was constant folded. This fixes PR5980. llvm-svn: 93184
* Disable transformation of select of two loads to a select of address and ↵Mon P Wang2010-01-111-28/+41
| | | | | | | | then a load if the loads are not in the default address space because the transformation discards src value info. llvm-svn: 93180
* Revert an earlier change to SIGN_EXTEND_INREG for vectors. The VTSDNodeDan Gohman2010-01-097-67/+107
| | | | | | | | | | really does need to be a vector type, because TargetLowering::getOperationAction for SIGN_EXTEND_INREG uses that type, and it needs to be able to distinguish between vectors and scalars. Also, fix some more issues with legalization of vector casts. llvm-svn: 93043
* Dan pointed out checking whether a node is dead by comparing its opcode to ↵Evan Cheng2010-01-091-8/+26
| | | | | | ISD::DELETED_NODE is not safe. Use a DAGUpdateListener to remove dead nodes from work list instead. llvm-svn: 93031
* ReplaceAllUsesOfValueWith may delete other nodes that the one being ↵Evan Cheng2010-01-081-1/+2
| | | | | | replaced. Do not delete dead nodes again. llvm-svn: 92988
* Fix rdar://7517201, a regression introduced by r92849.Chris Lattner2010-01-071-1/+1
| | | | | | | | | | When folding a and(any_ext(load)) both the any_ext and the load have to have only a single use. This removes the anyext-uses.ll testcase which started failing because it is unreduced and unclear what it is testing. llvm-svn: 92950
* factor this code better and reduce nesting at the sameChris Lattner2010-01-071-61/+41
| | | | | | time, no functionality change. llvm-svn: 92948
* APInt'fy TargetLowering::SimplifySetCC to fix PR5963.Evan Cheng2010-01-071-15/+15
| | | | llvm-svn: 92943
* Use pop_back_val instead of back()+pop_back.Benjamin Kramer2010-01-071-7/+4
| | | | llvm-svn: 92918
* Comment.Evan Cheng2010-01-061-0/+3
| | | | llvm-svn: 92850
* Teach dag combine to fold the following transformation more aggressively:Evan Cheng2010-01-064-65/+210
| | | | | | | | | | (OP (trunc x), (trunc y)) -> (trunc (OP x, y)) Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel. This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places. llvm-svn: 92849
* The previous code could potentially cause a cycle. Allow ordering w.r.t. a 0 ↵Bill Wendling2010-01-061-2/+2
| | | | | | order. llvm-svn: 92810
* Only check the ordering if there is an ordering for each nodes.Bill Wendling2010-01-061-2/+2
| | | | llvm-svn: 92807
* Add a semi-primitive form of scheduling via the "SDNode ordering" to theBill Wendling2010-01-051-0/+12
| | | | | | bottom-up scheduler. We prefer the lower order number. llvm-svn: 92806
* Don't assign the shift the same type as the variable being shifted. This couldBill Wendling2010-01-051-1/+3
| | | | | | result in illegal types for the SHL operator. llvm-svn: 92797
* Don't use the ISD::NodeType enum for SDNode opcodes, as CodeGenDan Gohman2010-01-051-12/+12
| | | | | | | uses several kinds of opcode values which are not declared within that enum. This fixes PR5946. llvm-svn: 92794
* Avoid going through the LLVMContext for type equality where it's safe to ↵Benjamin Kramer2010-01-053-7/+6
| | | | | | dereference the type pointer. llvm-svn: 92726
* Delete renaming use of dead dbg intrinsics.Devang Patel2010-01-052-12/+0
| | | | | | | | | Intrinsic::dbg_stoppoint Intrinsic::dbg_region_start Intrinsic::dbg_region_end Intrinsic::dbg_func_start llvm-svn: 92672
* Change errs() to dbgs().David Greene2010-01-051-19/+19
| | | | llvm-svn: 92597
* Change errs() to dbgs().David Greene2010-01-051-4/+4
| | | | llvm-svn: 92581
* Change errs() to dbgs().David Greene2010-01-051-8/+8
| | | | llvm-svn: 92580
OpenPOWER on IntegriCloud