summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't bother doing latency calculations in the "fast" scheduler.Dan Gohman2008-11-171-15/+5
| | | | llvm-svn: 59461
* Use SUnit's CycleBound field instead of duplicating it inDan Gohman2008-11-171-8/+9
| | | | | | a side-car datastructure llvm-svn: 59458
* Don't produce ADDC/ADDE when expanding SHL unless they are legalRichard Osborne2008-11-171-1/+2
| | | | | | for the target. This fixes PR3080. llvm-svn: 59450
* Don't use the isPending flag to mean what the isAvailable flag means.Dan Gohman2008-11-172-2/+2
| | | | llvm-svn: 59445
* Fixed legalization of CONVERT_RNDSAT for integers.Mon P Wang2008-11-172-24/+16
| | | | llvm-svn: 59432
* Improved shuffle normalization to avoid using extract/build when weMon P Wang2008-11-161-96/+122
| | | | | | | can extract using different indexes for two vectors. Added a few tests for vector shuffles. llvm-svn: 59399
* When splitting a SHUFFLE_VECTOR, try to have the resultDuncan Sands2008-11-151-38/+109
| | | | | | | | use SHUFFLE_VECTOR instead. If not practical, fall back to the old scheme of building the split result by hand using a BUILD_VECTOR. llvm-svn: 59361
* Add missing widen operations, fixed widening for extracting a subvector,Mon P Wang2008-11-151-16/+44
| | | | | | | and when loading/storing a widen vector, make sure that they are loaded and stored in consecutive order. llvm-svn: 59357
* Correct a comment.Dan Gohman2008-11-151-1/+1
| | | | llvm-svn: 59341
* Move ScheduleDAGList's LatencyPriorityQueue class out to a separate file.Dan Gohman2008-11-154-259/+291
| | | | llvm-svn: 59340
* Add support for building a ScheduleDAG from MachineInstrs. This is currentlyDan Gohman2008-11-141-0/+84
| | | | | | | fairly conservative; it doesn't do alias-analysis queries and it doesn't attempt to break anti-dependencies. llvm-svn: 59324
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* Temporarily revert 58825, which breaks PPC bootstrap.Dale Johannesen2008-11-091-1/+3
| | | | | | xs llvm-svn: 58930
* Try to produce better code when scalarizing VSETCC.Duncan Sands2008-11-081-8/+26
| | | | llvm-svn: 58920
* 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
* 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-071-8/+4
| | | | | | | | | 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
* Fixed scalarizing an extract subvector and prevent an infinite loopMon P Wang2008-11-061-3/+3
| | | | | | when simplify a vector. llvm-svn: 58820
* Emit label for llvm.dbg.func.start of the inlined function.Devang Patel2008-11-061-3/+8
| | | | llvm-svn: 58814
* Formating/comment changes - no functionality change.Duncan Sands2008-11-061-13/+8
| | | | llvm-svn: 58801
* - Rename stackprotector_{prologue,epilogue} to stackprotector_{create,check}.Bill Wendling2008-11-061-4/+2
| | | | | | | - Get rid of "HasStackProtector" in MachineFrameInfo. - Modify intrinsics to tell which are doing what with memory. llvm-svn: 58799
* Widening cleanupMon P Wang2008-11-063-21/+20
| | | | llvm-svn: 58796
OpenPOWER on IntegriCloud