summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Split foldMemoryOperand into public non-virtual and protected virtualDan Gohman2008-12-031-0/+68
| | | | | | | parts, and add target-independent code to add/preserve MachineMemOperands. llvm-svn: 60488
* Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.Dan Gohman2008-12-031-3/+3
| | | | llvm-svn: 60487
* Only check that the result of the mapping was notDuncan Sands2008-12-031-0/+1
| | | | | | a new node if the node was actually remapped. llvm-svn: 60482
* Fix bug 3140.Rafael Espindola2008-12-031-0/+8
| | | | | | Print a single parameter .file directive if we have an ELF target. llvm-svn: 60480
* Add a sanity-check to tablegen to catch the case where isSimpleLoadDan Gohman2008-12-031-1/+1
| | | | | | | | | is set but mayLoad is not set. Fix all the problems this turned up. Change code to not use isSimpleLoad instead of mayLoad unless it really wants isSimpleLoad. llvm-svn: 60459
* Remove a (what appears to be) overly strict assertion. Here is what happened:Evan Cheng2008-12-021-1/+0
| | | | | | | | | | | 1. ppcf128 select is expanded to f64 select's. 2. f64 select operand 0 is an i1 truncate, it's promoted to i32 zero_extend. 3. f64 select is updated. It's changed back to a "NewNode" and being re-analyzed. 4. f64 select operands are being processed. Operand 0 is a "NewNode". It's being expunged out of ReplacedValues map. 5. ExpungeNode tries to remap f64 select and notice it's a "NewNode" and assert. Duncan, please take a look. Thanks. llvm-svn: 60443
* Non-functional change: make custom lowering for truncate stylisticallyScott Michel2008-12-021-5/+12
| | | | | | consistent with the way it's generally done in other places. llvm-svn: 60439
* Fix a typo in a comment.Dan Gohman2008-12-021-1/+1
| | | | llvm-svn: 60434
* Add support for folding spills into preceding defs when doing pre-alloc ↵Owen Anderson2008-12-021-27/+101
| | | | | | splitting. llvm-svn: 60433
* One more transformation.Dale Johannesen2008-12-021-0/+8
| | | | llvm-svn: 60432
* make it possible to custom lower TRUNCATE (needed for the CellSPU target)Tilmann Scheller2008-12-021-0/+5
| | | | llvm-svn: 60409
* Removed some unnecessary code in widening.Mon P Wang2008-12-021-115/+9
| | | | llvm-svn: 60406
* Fix PR3124: overly strict assert.Evan Cheng2008-12-021-2/+4
| | | | llvm-svn: 60392
* Add a few more transformations.Dale Johannesen2008-12-021-0/+24
| | | | llvm-svn: 60391
* Expand getVTList, getNodeValueTypes, and SelectNodeTo to handle more value ↵Bill Wendling2008-12-011-0/+33
| | | | | | types. llvm-svn: 60381
* There are no longer any places that require aDuncan Sands2008-12-013-18/+26
| | | | | | | | MERGE_VALUES node with only one operand, so get rid of special code that only existed to handle that possibility. llvm-svn: 60349
* Change the interface to the type legalization methodDuncan Sands2008-12-015-72/+34
| | | | | | | | | | | ReplaceNodeResults: rather than returning a node which must have the same number of results as the original node (which means mucking around with MERGE_VALUES, and which is also easy to get wrong since SelectionDAG folding may mean you don't get the node you expect), return the results in a vector. llvm-svn: 60348
* Followup to r60283: optimize arbitrary width signed divisions as well Eli Friedman2008-11-301-71/+34
| | | | | | as unsigned divisions. Same caveats as before. llvm-svn: 60284
* Fix for PR2164: allow transforming arbitrary-width unsigned divides intoEli Friedman2008-11-301-95/+65
| | | | | | | | | | | multiplies. Some more cleverness would be nice, though. It would be nice if we could do this transformation on illegal types. Also, we would prefer a narrower constant when possible so that we can use a narrower multiply, which can be cheaper. llvm-svn: 60283
* APIntify a test which is potentially unsafe otherwise, and fix the Eli Friedman2008-11-301-3/+10
| | | | | | | | | nearby FIXME. I'm not sure what the right way to fix the Cell test was; if the approach I used isn't okay, please let me know. llvm-svn: 60277
* Silence a warning.Nick Lewycky2008-11-271-1/+1
| | | | | | | Despite changing the order of evaluation, this doesn't actually change the meaning of the statement. llvm-svn: 60177
* Removing redundant semicolons. No functionality change.Sanjiv Gupta2008-11-271-2/+2
| | | | llvm-svn: 60149
* Avoid inserting noop's in the middle of a loop.Evan Cheng2008-11-271-1/+7
| | | | llvm-svn: 60141
* Add a missing case in visitADD.Dale Johannesen2008-11-271-0/+3
| | | | llvm-svn: 60137
* Allow custom lowering of ADDE/ADDC/SUBE/SUBC operations.Sanjiv Gupta2008-11-261-6/+36
| | | | llvm-svn: 60102
* LiveRanges are represented as half-open ranges. Fix the findLiveInMBBs codeDan Gohman2008-11-261-1/+1
| | | | | | | and the LiveInterval.h top-level comment and accordingly. This fixes blocks having spurious live-in registers in boundary cases. llvm-svn: 60092
* A simplification for checking whether the signs of the operands and sum ↵Bill Wendling2008-11-251-15/+14
| | | | | | differ. Thanks, Duncan. llvm-svn: 60043
* Suppress warnings.Dan Gohman2008-11-251-7/+7
| | | | llvm-svn: 60041
* Now with the correct type for the 0.Bill Wendling2008-11-251-1/+1
| | | | llvm-svn: 60016
* Get rid of unused variable.Bill Wendling2008-11-251-1/+0
| | | | llvm-svn: 60015
* Hacker's Delight says, "Signed integer overflow of addition occurs if and onlyBill Wendling2008-11-251-4/+48
| | | | | | | if the operands have the same sign and the sum has sign opposite to that of the operands." llvm-svn: 60014
* Initial support for anti-dependence breaking. Currently this code does notDan Gohman2008-11-253-261/+643
| | | | | | | | | introduce any new spilling; it just uses unused registers. Refactor the SUnit topological sort code out of the RRList scheduler and make use of it to help with the post-pass scheduler. llvm-svn: 59999
* - Make lowering of "add with overflow" customizable by back-ends.Bill Wendling2008-11-242-18/+29
| | | | | | | - Mark "add with overflow" as having a custom lowering for X86. Give it a null lowering representation for now. llvm-svn: 59971
* Check in the rest of this change. The isAntiDep flag needs to be passedDan Gohman2008-11-242-2/+2
| | | | | | | to removePred because an SUnit can both data-depend and anti-depend on the same SUnit. llvm-svn: 59969
* Pass the isAntiDep argument.Dan Gohman2008-11-241-1/+1
| | | | llvm-svn: 59968
* Run post-RA scheduling after branch folding, as it tends toDan Gohman2008-11-241-4/+7
| | | | | | obscure tail-merging opportunities. llvm-svn: 59967
* Minor fix debug for register allocation debug output.Matthijs Kooijman2008-11-242-4/+4
| | | | llvm-svn: 59961
* If the type legalizer actually legalized anythingDuncan Sands2008-11-244-195/+234
| | | | | | | | | | | | | (this doesn't happen that often, since most code does not use illegal types) then follow it by a DAG combiner run that is allowed to generate illegal operations but not illegal types. I didn't modify the target combiner code to distinguish like this between illegal operations and illegal types, so it will not produce illegal operations as well as not producing illegal types. llvm-svn: 59960
* Eliminate some unused variable compile time warnings.Evan Cheng2008-11-243-0/+9
| | | | llvm-svn: 59952
* Add support for llvm.uadd.with.overflow.Bill Wendling2008-11-241-5/+5
| | | | llvm-svn: 59926
* Rename SetCCResultContents to BooleanContents. InDuncan Sands2008-11-235-23/+23
| | | | | | | practice these booleans are mostly produced by SetCC, however the concept is more general. llvm-svn: 59911
* Added check to avoid generating extract subvector beyond the end of the ↵Mon P Wang2008-11-231-1/+2
| | | | | | vector when normalizing vector shuffles. llvm-svn: 59900
* Make a convenient helper for printing offsets.Anton Korobeynikov2008-11-221-0/+7
| | | | llvm-svn: 59872
* Cleanup of the [SU]ADDO type legalization code. Patch by Duncan!Bill Wendling2008-11-223-22/+24
| | | | | | | | | | "It simplifies the type legalization part a bit, and produces better code by teaching SelectionDAG about the extra bits in an i8 SADDO/UADDO node. In essence, I spontaneously decided that on x86 this i8 boolean result would be either 0 or 1, and on other platforms 0/1 or 0/-1, depending on whether the platform likes it's boolean zero extended or sign extended." llvm-svn: 59864
* - Move conversion of [SU]ADDO from DAG combiner into legalizer.Bill Wendling2008-11-224-38/+53
| | | | | | - Add "promote integer type" stuff to the legalizer for these nodes. llvm-svn: 59847
* Silence unused variable warnings.Devang Patel2008-11-213-0/+4
| | | | llvm-svn: 59841
* Correctly set the isCtrl flag for chain dependencies.Dan Gohman2008-11-211-4/+4
| | | | llvm-svn: 59837
* Update comments.Dan Gohman2008-11-211-9/+9
| | | | llvm-svn: 59836
* Update comments.Dan Gohman2008-11-211-3/+3
| | | | llvm-svn: 59834
* reapply Sanjiv's patch to genericize memcpy/memset/memmove to take anChris Lattner2008-11-212-18/+9
| | | | | | arbitrary integer width for the count. llvm-svn: 59823
OpenPOWER on IntegriCloud