summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Assume that we'll handle mangling the symbols earlier and just put theEric Christopher2010-05-172-11/+6
| | | | | | symbol to the file as we have it. Simplifies out tbss handling. llvm-svn: 103928
* Spill and kill all virtual registers across a call.Jakob Stoklund Olesen2010-05-171-56/+28
| | | | | | Debug code doesn't use callee saved registers anyway, and the code is simpler this way. Now spillVirtReg always kills, and the isKill parameter is not needed. llvm-svn: 103927
* Reduce hashtable probes by using DenseMap::insert() for lookup.Jakob Stoklund Olesen2010-05-171-48/+46
| | | | llvm-svn: 103926
* Make MBB a class member instead of passing it around everywhere.Jakob Stoklund Olesen2010-05-171-62/+62
| | | | llvm-svn: 103925
* Yes, if the redef is a copy, update the old val# with the copy. But make ↵Evan Cheng2010-05-171-8/+7
| | | | | | sure to clear the copy field if the redef is not a copy. llvm-svn: 103922
* No reason not to run the NEON domain croassing fix up pass in thumb2 mode.Evan Cheng2010-05-171-1/+1
| | | | llvm-svn: 103917
* Revert 103911; it broke a test that expects bitconvertDale Johannesen2010-05-161-4/+0
| | | | | | | | | <1xi64> -> i64 to work in MMX registers on hosts where -no-sse is the default (not mine). The right thing is to accept this and make i64->f64 conversions go through memory, but I don't have time right now. llvm-svn: 103914
* Make x86-64 64-bit bitconvert work when SSE is not available.Dale Johannesen2010-05-161-0/+4
| | | | | | | (This worked as of about 6 months ago and I didn't track down exactly what broke it; I think this fix is appropriate.) llvm-svn: 103911
* Chris said that the comment char should be escaped. Fix all the occurences ↵Anton Korobeynikov2010-05-164-28/+28
| | | | | | of "@" in *.td llvm-svn: 103903
* Add support for thiscall calling convention.Anton Korobeynikov2010-05-1610-3/+38
| | | | | | Patch by Charles Davis and Steven Watanabe! llvm-svn: 103902
* Generalize the ARM DAG combiner of mul with constants to all power-of-two cases.Anton Korobeynikov2010-05-161-34/+21
| | | | llvm-svn: 103901
* Model vst lane instructions with REG_SEQUENCE.Evan Cheng2010-05-161-7/+75
| | | | llvm-svn: 103898
* Fix uint64->{float, double} conversion to do rounding correctly in 32-bit.Dale Johannesen2010-05-152-24/+76
| | | | | | | | | | | | | | | | | The implementation in LegalizeIntegerTypes to handle this as sint64->float + appropriate power of 2 is subject to double rounding, considered incorrect by numerics people. Use this implementation only when it is safe. This leads to using library calls in some cases that produced inline code before, but it's correct now. (EVTToAPFloatSemantics belongs somewhere else, any suggestions?) Add a correctly rounding (though not particularly fast) conversion that uses X87 80-bit computations for x86-32. 7885399, 5901940. This shows up in gcc.c-torture/execute/ieee/rbug.c in the gcc testsuite on some platforms. llvm-svn: 103883
* Improve assertion messages.Dale Johannesen2010-05-151-3/+8
| | | | llvm-svn: 103882
* Some cheap DAG combine goodness for multiplication with a particular constant.Anton Korobeynikov2010-05-151-0/+71
| | | | | | This can be extended later on to handle more "complex" constants. llvm-svn: 103881
* "trap" pseudo-op turned out to be apple-local.Anton Korobeynikov2010-05-152-2/+8
| | | | | | Temporary emit it as raw bytes until it will be added to binutils as well. llvm-svn: 103878
* improve portability to systems that don't have round, patch byChris Lattner2010-05-151-4/+3
| | | | | | Evzen Muller! llvm-svn: 103877
* improve portability to systems that don't have powf/modf (e.g. solaris 9)Chris Lattner2010-05-154-5/+5
| | | | | | patch by Evzen Muller! llvm-svn: 103876
* Fix an GCC warning that seems to have actually caught a bug (!!!) inChandler Carruth2010-05-151-2/+2
| | | | | | | | a condition's grouping. Every other use of Allocatable.test(Hint) groups it the same way as it is indented, so move the parentheses to agree with that grouping. llvm-svn: 103869
* Model 128-bit vld lane with REG_SEQUENCE.Evan Cheng2010-05-151-19/+44
| | | | llvm-svn: 103868
* Calculate liveness on the fly for local registers.Jakob Stoklund Olesen2010-05-151-0/+31
| | | | | | | | When working top-down in a basic block, substituting physregs for virtregs, the use-def chains are kept up to date. That means we can recognize a virtreg kill by the use-def chain becoming empty. This makes the fast allocator independent of incoming kill flags. llvm-svn: 103866
* Teach the always inliner to release its inline cost estimates, like the basicNick Lewycky2010-05-151-0/+3
| | | | | | | inliner did in r103653. Why does the always inliner even bother with cost estimates anyways? llvm-svn: 103858
* Clean up, no functional change.Nick Lewycky2010-05-151-9/+9
| | | | llvm-svn: 103857
* v4i64 and v8i64 are only synthesizable when NEON is available.Evan Cheng2010-05-151-4/+6
| | | | llvm-svn: 103855
* Allow TargetLowering::getRegClassFor() to be called on illegal types. AlsoEvan Cheng2010-05-152-7/+17
| | | | | | | allow target to override it in order to map register classes to illegal but synthesizable types. e.g. v4i64, v8i64 for ARM / NEON. llvm-svn: 103854
* Model 64-bit lane vld with REG_SEQUENCE.Evan Cheng2010-05-151-6/+28
| | | | llvm-svn: 103851
* A partial re-def instruction may be a copy.Evan Cheng2010-05-151-1/+8
| | | | llvm-svn: 103850
* Teach two-address pass to do some coalescing while eliminating REG_SEQUENCEEvan Cheng2010-05-146-3/+192
| | | | | | | | | | | | | | | | | | | | | | | | | | instructions. e.g. %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1027<def> = EXTRACT_SUBREG %reg1026, 6 %reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5 ... %reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12 After REG_SEQUENCE is eliminated, we are left with: %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6 %reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5 The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger sub-register (or combined to be reg1026 itself as is the case here). If it is possible, it will be able to replace references of reg1026 with reg1029 + the larger sub-register index. llvm-svn: 103835
* Model VST*_UPD and VST*oddUPD pair with REG_SEQUENCE.Evan Cheng2010-05-141-25/+68
| | | | llvm-svn: 103833
* Fast ISel trivially coalesces away no-op casts, so check for this whenDan Gohman2010-05-141-4/+16
| | | | | | setting kill flags. llvm-svn: 103832
* Don't bother spilling before a returnJakob Stoklund Olesen2010-05-141-4/+13
| | | | llvm-svn: 103831
* RegAllocLocal can count copies tooJakob Stoklund Olesen2010-05-141-1/+4
| | | | llvm-svn: 103830
* SystemZ really does mean "has calls" and not just "adjusts stack." Go ahead andBill Wendling2010-05-141-5/+5
| | | | | | | | replace the check with the appropriate predicate. Modify the testcase to reflect the correct code. (It should be saving callee-saved registers on the stack allocated by the calling fuction.) llvm-svn: 103829
* Track allocatable instead of reserved regs, and never take an unallocatable ↵Jakob Stoklund Olesen2010-05-141-8/+10
| | | | | | hint. llvm-svn: 103828
* Don't set kill flags for instructions which the scheduler has cloned.Dan Gohman2010-05-142-20/+34
| | | | llvm-svn: 103827
* BR is a barrier.Dan Gohman2010-05-141-1/+1
| | | | llvm-svn: 103826
* Several tail call tests apparently rely upon this being "adjusts stack" insteadBill Wendling2010-05-141-1/+1
| | | | | | | of "has calls". That's probably wrong, but it needs further investigation. Revert to the original behavior until this is settled. llvm-svn: 103824
* Avoid scanning the long tail of physreg operands on callsJakob Stoklund Olesen2010-05-141-4/+9
| | | | llvm-svn: 103823
* Do not forget to mark prcessed arguments.Devang Patel2010-05-141-0/+1
| | | | llvm-svn: 103822
* Count coalesced copiesJakob Stoklund Olesen2010-05-141-0/+2
| | | | llvm-svn: 103821
* Allow virtreg redefines when verifying for RegAllocFastJakob Stoklund Olesen2010-05-141-1/+1
| | | | llvm-svn: 103820
* This should happen if there are no calls, not if it just doesn't adjust theBill Wendling2010-05-141-1/+1
| | | | | | stack. llvm-svn: 103813
* Revert r103804. The comment is correct.Bill Wendling2010-05-142-2/+2
| | | | llvm-svn: 103808
* Remove trailing whitespaceJim Grosbach2010-05-141-3/+3
| | | | llvm-svn: 103807
* 80 column and trailing whitespace cleanupJim Grosbach2010-05-141-24/+25
| | | | llvm-svn: 103806
* add cmd line option to leave dbgvalues in during post-RA sceduling. UsefulJim Grosbach2010-05-141-5/+14
| | | | | | while debugging what's mishandled about them in the post-RA pass. llvm-svn: 103805
* Fix comment.Bill Wendling2010-05-141-1/+1
| | | | llvm-svn: 103804
* Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe whatBill Wendling2010-05-1416-54/+69
| | | | | | | | | the variable actually tracks. N.B., several back-ends are using "HasCalls" as being synonymous for something that adjusts the stack. This isn't 100% correct and should be looked into. llvm-svn: 103802
* Lowering of atomic instructions can result in operands beingDan Gohman2010-05-141-1/+7
| | | | | | | used more than once. If ISel had put a kill flag on one of them, it's not valid to transfer the kill flag to each new instance. llvm-svn: 103799
* Add support to preserve type info for the variables that are removed by the ↵Devang Patel2010-05-143-16/+42
| | | | | | optimizer. llvm-svn: 103798
OpenPOWER on IntegriCloud