summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* For post-regalloc scheduling, remove the instructions from the blockDan Gohman2008-11-141-0/+6
| | | | | | before re-inserting them. llvm-svn: 59281
* Check in the correct version of the patch in r59279.Dan Gohman2008-11-141-1/+1
| | | | llvm-svn: 59280
* Debug printing for SUnits that carry MachineInstrs.Dan Gohman2008-11-141-10/+17
| | | | llvm-svn: 59279
* Initial support for carrying MachineInstrs in SUnits.Dan Gohman2008-11-142-4/+27
| | | | llvm-svn: 59278
* Change DOTGraphTraits<ScheduleDAG*>::getGraphName how to find the name ofDan Gohman2008-11-131-1/+1
| | | | | | the current function on its own, rather than relying on the SelectionDAG. llvm-svn: 59277
* Remove the FlaggedNodes member from SUnit. Instead of requiring each SUnitDan Gohman2008-11-136-59/+49
| | | | | | | | | | to carry a SmallVector of flagged nodes, just calculate the flagged nodes dynamically when they are needed. The local-liveness change is due to a trivial scheduling change where the scheduler arbitrary decision differently. llvm-svn: 59273
* Don't allow the restore point to be placed after terminators. With this change,Owen Anderson2008-11-131-2/+2
| | | | | | | MultiSource/Applications is clean with the prealloc splitter. Some failures remain in SPEC. llvm-svn: 59267
* Make the Node member of SUnit private, and add accessors.Dan Gohman2008-11-136-47/+47
| | | | llvm-svn: 59264
* Change ScheduleDAG's DAG member from a reference to a pointer, to prepareDan Gohman2008-11-136-48/+48
| | | | | | for the possibility of scheduling without a SelectionDAG being present. llvm-svn: 59263
* Use find_first/find_next to iterate through all the set bits in aDan Gohman2008-11-132-12/+11
| | | | | | BitVector, instead of manually testing each bit. llvm-svn: 59246
* Implement stack protectors as function attributes: "ssp" and "sspreq".Bill Wendling2008-11-132-29/+13
| | | | llvm-svn: 59202
* Move the code that inserts X87 FP_REG_KILL instructions from aDan Gohman2008-11-121-3/+0
| | | | | | | | special-purpose hook to a new pass. Also, add check to see if any x87 virtual registers are used, to avoid doing any work in the common case that no x87 code is needed. llvm-svn: 59190
* Fix unsigned char->ppcf128 conversion.Dale Johannesen2008-11-121-3/+8
| | | | llvm-svn: 59150
* Do the LiveVariables update before printing the instruction inDan Gohman2008-11-121-1/+2
| | | | | | | the debug output, so that the updated liveness flags are reflected in the debug output. llvm-svn: 59147
* Remove some debugging code made redundant by the change to doDan Gohman2008-11-121-8/+0
| | | | | | | coalescing as a separate pass rather than inside of LiveIntervalAnalysis. llvm-svn: 59146
* Simplify SplitVecRes_EXTRACT_SUBVECTOR. This meansDuncan Sands2008-11-121-20/+12
| | | | | | | | | | | | that it no longer handles non-power-of-two vectors. However it previously only handled them sometimes, depending on obscure numerical relationships between the index and vector type. For example, for a vector of length 6, it would succeed if and only if the index was an even multiple of 6. I consider this more confusing than useful. llvm-svn: 59122
* Correct some thinkos in the expansion of ADD/SUBDuncan Sands2008-11-121-6/+7
| | | | | | | when the target does not support ADDC/SUBC. This fixes PR3044. llvm-svn: 59120
* Fix the testb optimization so x86 also bootstraps.Dale Johannesen2008-11-121-3/+1
| | | | | | Reenable test. llvm-svn: 59101
* Don't walk into predecessors in which the vreg is not live when doing ↵Owen Anderson2008-11-111-0/+2
| | | | | | | | shrinkwrapping. This lets several failing tests get farther along, but doesn't completely fix any of them. llvm-svn: 59086
* In ScheduleDAGRRList::CopyAndMoveSuccessors, create the SUnit for the loadDan Gohman2008-11-111-17/+17
| | | | | | | | | before creating the SUnit for the operation that it was unfolded from. This allows each SUnit to have all of its predecessor SUnits available at the time it is created. I don't know yet if this will be absolutely required, but it is a little tidier to do it this way. llvm-svn: 59083
* Avoid relying on the SelectionDAG for initializing the MachineFunction andDan Gohman2008-11-111-3/+3
| | | | | | TargetLoweringInfo variables for the scheduler. llvm-svn: 59082
* Change the scheduler accessor methods to accept an explicit TargetMachineDan Gohman2008-11-114-10/+16
| | | | | | | argument instead of taking the SelectionDAG's TargetMachine. This is needed for some upcoming scheduler changes. llvm-svn: 59055
* Fix for PR3040:Bill Wendling2008-11-111-18/+35
| | | | | | | | | The CC was changed, but wasn't checked to see if it was legal if the DAG combiner was being run after legalization. Threw in a couple of checks just to make sure that it's okay. As far as the PR is concerned, no back-end target actually exhibited this problem, so there isn't an associated testcase. llvm-svn: 59035
* Cleaned up and fix bugs in convert_rndsat nodeMon P Wang2008-11-112-18/+39
| | | | llvm-svn: 59025
* Small simplification. Use the iterator already present as the insertion point.Bill Wendling2008-11-101-4/+3
| | | | llvm-svn: 59008
* Temporarily revert r58979 and related patch. It's causing a failure in X86 ↵Bill Wendling2008-11-101-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | bootstrap: Comparing stages 2 and 3 warning: ./cc1-checksum.o differs warning: ./cc1obj-checksum.o differs warning: ./cc1objplus-checksum.o differs warning: ./cc1plus-checksum.o differs Bootstrap comparison failure! ./alias.o differs ./alloc-pool.o differs ./attribs.o differs ./bb-reorder.o differs ./bitmap.o differs ./build/errors.o differs ./build/genattrtab.o differs ./build/genautomata.o differs ./build/genemit.o differs ./build/genextract.o differs ... -bw llvm-svn: 59003
* - Make sure that we don't over-increment the iterator when going through theBill Wendling2008-11-101-7/+8
| | | | | | | basic blocks. - Minor code clean-up. llvm-svn: 59002
* Added CONVERT_RNDSAT (conversion with rounding and saturation) SDNode toMon P Wang2008-11-106-2/+236
| | | | | | | support targets that support these conversions. Users should avoid using this node as the current targets don't generating code for it. llvm-svn: 59001
* Fix PR2667: add soft float support for sint_to_fp/uint_to_fpDuncan Sands2008-11-102-15/+25
| | | | | | | where the argument is an apint, or smaller than the minimum size for which there is a libcall (i32). llvm-svn: 58994
* Tweak some comments.Duncan Sands2008-11-102-5/+4
| | | | llvm-svn: 58993
* Small cleanups. No functionality change intended!Duncan Sands2008-11-102-16/+8
| | | | llvm-svn: 58992
* When promoting the result of fp_to_uint/fp_to_sint,Duncan Sands2008-11-101-10/+15
| | | | | | | | | | | | | | | | | | inform the optimizers that the result must be zero/ sign extended from the smaller type. For example, if a fp to unsigned i16 is promoted to fp to i32, then we are allowed to assume that the extra 16 bits are zero (because the result of fp to i16 is undefined if the result does not fit in an i16). This is quite aggressive, but should help the optimizers produce better code. This requires correcting a test which thought that fp_to_uint is some kind of truncation, which it is not: in the testcase (which does fp to i1), either the fp value converts to 0 or 1 or the result is undefined, which is quite different to truncation. llvm-svn: 58991
* Really fix testb optimization on big-endian.Dale Johannesen2008-11-101-5/+8
| | | | | | Fixes ppc32 bootstrap. llvm-svn: 58979
* Added support for the following definition of shufflevector Mon P Wang2008-11-106-22/+244
| | | | | | <result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask> llvm-svn: 58964
* eliminate a couple more uses of utohexstr.Chris Lattner2008-11-101-6/+10
| | | | llvm-svn: 58963
* Use utohex_buffer instead of utohexstr to avoid creating a temporaryChris Lattner2008-11-101-1/+3
| | | | | | string in the .ll and .s printers. llvm-svn: 58962
* Fix an over aggressive assumption that struct decls will have a pointer toChris Lattner2008-11-101-1/+1
| | | | | | | an array that is empty. Instead of requiring this array, allow a null pointer. This shrinks all forward references of structs. llvm-svn: 58959
* Temporarily revert 58825, which breaks PPC bootstrap.Dale Johannesen2008-11-091-1/+3
| | | | | | xs llvm-svn: 58930
* Temporary revert my last commit: it seems it's triggering some subtle bug in ↵Anton Korobeynikov2008-11-081-7/+0
| | | | | | | | backend and breaks llvm-gcc llvm-svn: 58926
* Try to produce better code when scalarizing VSETCC.Duncan Sands2008-11-081-8/+26
| | | | llvm-svn: 58920
* Factor out offset printing code into generic AsmPrinter.Anton Korobeynikov2008-11-081-0/+7
| | | | | | | FIXME: it seems, that most of targets don't support offsets wrt CPI/GlobalAddress', was it intentional? llvm-svn: 58917
* Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ↵Evan Cheng2008-11-082-6/+6
| | | | | | ptr. llvm-svn: 58897
* Make testb optimization work on big-endian targets.Dale Johannesen2008-11-081-1/+4
| | | | llvm-svn: 58874
* Make FP tests requiring two compares work on PPC (PR 642).Dale Johannesen2008-11-071-2/+2
| | | | | | | | | | This is Chris' patch from the PR, modified to realize that SETUGT/SETULT occur legitimately with integers, plus two fixes in LegalizeDAG to pass a valid result type into LegalizeSetCC. The argument of TLI.getSetCCResultType is ignored on PPC, but I think I'm following usage elsewhere. llvm-svn: 58871
* Sign-extend rather than zero-extend when promotingDuncan Sands2008-11-071-6/+19
| | | | | | | | | | | | | | | | the condition for a BRCOND, according to what is returned by getSetCCResultContents. Since all targets return the same thing (ZeroOrOneSetCCResult), this should be harmless! The point is that all over the place the result of SETCC is fed directly into BRCOND. On machines for which getSetCCResultContents returns ZeroOrNegativeOneSetCCResult, this is a sign-extended boolean. So it seems dangerous to also feed BRCOND zero-extended booleans in some circumstances - for example, when promoting the condition. llvm-svn: 58861
* Fix unsigned->ppcf128 conversion.Dale Johannesen2008-11-071-0/+3
| | | | llvm-svn: 58856
* Refactor code that adjusts the offsets of stack objects.Bill Wendling2008-11-071-79/+34
| | | | llvm-svn: 58829
* When we're doing a compare of load-AND-constant to 0Dale Johannesen2008-11-071-0/+46
| | | | | | | | | (e.g. a bitfield test) narrow the load as much as possible. The has the potential to avoid unnecessary partial-word load-after-store conflicts, which cause stalls on several targets. Also a size win on x86 (testb vs testl). llvm-svn: 58825
* - Modify the stack protector algorithm so that the stack slot is allocated inBill Wendling2008-11-072-39/+33
| | | | | | | | | LLVM IR code and not in the selection DAG ISel. This is a cleaner solution. - Fix the heuristic for determining if protectors are necessary. The previous one wasn't checking the proper type size. llvm-svn: 58824
* Remove unneeded header file.Bill Wendling2008-11-061-1/+0
| | | | llvm-svn: 58823
OpenPOWER on IntegriCloud