summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
Commit message (Collapse)AuthorAgeFilesLines
* Mirror how Fast ISel determines if a region.end intrinsic is the end of anBill Wendling2009-05-081-15/+12
| | | | | | | | | inlined function or the end of a function. Before, this was never executing the "inlined" version of the Record method. This will become important once the inlined Dwarf writer patch lands. llvm-svn: 71268
* Factor out cycle-finder code and make it generic.Anton Korobeynikov2009-05-081-0/+116
| | | | llvm-svn: 71241
* Do not emit bit tests if target does not support natively left shiftAnton Korobeynikov2009-05-081-0/+4
| | | | llvm-svn: 71240
* Properly expand libcalls for urem / srem. Also make code more straightforward.Anton Korobeynikov2009-05-081-29/+40
| | | | llvm-svn: 71238
* TypoAnton Korobeynikov2009-05-081-1/+1
| | | | llvm-svn: 71237
* Revert 71165. It did more than just revert 71158 and it introducedDan Gohman2009-05-072-7/+4
| | | | | | several regressions. The problem due to 71158 is now fixed. llvm-svn: 71176
* Temporarily revert r71158. It was causing a failure during a full bootstrap:Bill Wendling2009-05-072-4/+7
| | | | | | | | | | | | | | | | | | | | | checking for bcopy... no checking for getc_unlocked... Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511. /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decUtility.c:360: internal compiler error: Abort trap Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://developer.apple.com/bugreporter> for instructions. make[4]: *** [decUtility.o] Error 1 make[4]: *** Waiting for unfinished jobs.... Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511. /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decNumber.c:5591: internal compiler error: Abort trap Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://developer.apple.com/bugreporter> for instructions. make[4]: *** [decNumber.o] Error 1 make[3]: *** [all-stage2-libdecnumber] Error 2 make[3]: *** Waiting for unfinished jobs.... llvm-svn: 71165
* Make DwarfWriter::RecordInlinedFnStart more like the other DwarfWriter's ↵Argyrios Kyrtzidis2009-05-072-12/+10
| | | | | | | | | | | methods: -Have it return a label ID -Remove the unused Instruction parameter No functionality change. llvm-svn: 71132
* Do not use register as base ptr of pre- and post- inc/dec load / store nodes.Evan Cheng2009-05-061-1/+4
| | | | llvm-svn: 71098
* Add generic expansion of SUB when ADD and XORDuncan Sands2009-05-061-8/+12
| | | | | | are legal. Based on a patch by Micah Villmow. llvm-svn: 71078
* Move getInstrOperandRegClass from the scheduler to TargetInstrInfo.Evan Cheng2009-05-051-14/+0
| | | | llvm-svn: 70950
* Make DBG_STOPPOINT nodes, and therefore DBG_LABEL labels, get a DebugLoc, so ↵Chris Lattner2009-05-042-6/+8
| | | | | | | | | that it shows up in -print-machineinstrs. This doesn't appear to affect anything, but it was weird for some DBG_LABELs to have DebugLocs but not all of them. llvm-svn: 70921
* -Remove the DwarfWriter::RecordSourceLine calls from the instruction selectors.Argyrios Kyrtzidis2009-05-042-11/+4
| | | | | | | | -Depend on DebugLocs for source line info. (Comes with Regression-Be-Gone(tm)) llvm-svn: 70871
* Revert r70803 for now, it causes a regression.Argyrios Kyrtzidis2009-05-032-2/+9
| | | | llvm-svn: 70811
* -Remove the DwarfWriter::RecordSourceLine calls from the instruction selectors.Argyrios Kyrtzidis2009-05-032-9/+2
| | | | | | -Depend on DebugLocs for source line info. llvm-svn: 70803
* Fix typoAnton Korobeynikov2009-05-031-1/+1
| | | | llvm-svn: 70770
* Properly handle sdiv / udiv / srem / urem libcallsAnton Korobeynikov2009-05-032-7/+15
| | | | llvm-svn: 70764
* Proper name 16 bit libcallsAnton Korobeynikov2009-05-031-4/+4
| | | | llvm-svn: 70750
* Add libcall expansion for 16 and 128 bit mulsAnton Korobeynikov2009-05-031-0/+4
| | | | llvm-svn: 70749
* -Move the DwarfWriter::ValidDebugInfo check to a static ↵Argyrios Kyrtzidis2009-05-032-108/+116
| | | | | | | | DIDescriptor::ValidDebugInfo -Create DebugLocs without the need to have a DwarfWriter around llvm-svn: 70682
* Allow CONCAT_VECTORS nodes to be legal or have custom lowering for some targets.Bob Wilson2009-05-012-14/+38
| | | | | | Changes to take advantage of this will come later. llvm-svn: 70560
* Make DebugLoc independent of DwarfWriter.Argyrios Kyrtzidis2009-04-303-42/+24
| | | | | | | | -Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable* -Remove DwarfWriter::getOrCreateSourceID -Make necessary changes for the above (fix callsites, etc.) llvm-svn: 70520
* Move helper functions for optimizing division by constant into the APIntJay Foad2009-04-301-101/+2
| | | | | | class. llvm-svn: 70488
* fix a regression handling indirect results: these need to be consideredChris Lattner2009-04-301-8/+13
| | | | | | | | memory operands otherwise the writebacks get lost when the inline asm doesn't otherwise have side effects. This fixes rdar://6839427, though clang really shouldn't generate these anymore. llvm-svn: 70455
* Instead of passing in an unsigned value for the optimization level, use an enum,Bill Wendling2009-04-299-32/+35
| | | | | | | which better identifies what the optimization is doing. And is more flexible for future uses. llvm-svn: 70440
* Fix infinite recursion in the C++ code which handles movddup by making it ↵Nate Begeman2009-04-291-2/+2
| | | | | | unnecessary. llvm-svn: 70425
* Update comment, replace theoretically impossible check with an assert.Nate Begeman2009-04-291-3/+1
| | | | llvm-svn: 70391
* Implement review feedback for vector shuffle work.Nate Begeman2009-04-296-96/+105
| | | | llvm-svn: 70372
* Add a public method called getAddressSpace() to the GlobalAddressSDNode.Sanjiv Gupta2009-04-291-0/+7
| | | | llvm-svn: 70366
* Disable the load-shrinking optimization from looking atChris Lattner2009-04-291-3/+6
| | | | | | | | | | | anything larger than 64-bits, avoiding a crash. This should really be fixed to use APInts, though type legalization happens to help us out and we get good code on the attached testcase at least. This fixes rdar://6836460 llvm-svn: 70360
* Second attempt:Bill Wendling2009-04-299-56/+58
| | | | | | | | | | | | Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'll change the JIT with a follow-up patch. llvm-svn: 70343
* Move getSubRegisterRegClass from ScheduleDagSDNodesEmit.cpp to a ↵Jakob Stoklund Olesen2009-04-281-14/+3
| | | | | | | | | | TargetRegisterClass method. Also make the method non-asserting. It will return NULL when given an invalid subreg index. The method is needed by an upcoming patch. llvm-svn: 70296
* r70270 isn't ready yet. Back this out. Sorry for the noise.Bill Wendling2009-04-289-58/+56
| | | | llvm-svn: 70275
* Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want toBill Wendling2009-04-289-56/+58
| | | | | | | | | | | use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'm not 100% sure if it's necessary to change it there... llvm-svn: 70270
* Now that PR2957 is resolved, remove a bunch ofDuncan Sands2009-04-274-90/+4
| | | | | | no-longer needed workarounds. llvm-svn: 70234
* 2nd attempt, fixing SSE4.1 issues and implementing feedback from duncan.Nate Begeman2009-04-275-449/+363
| | | | | | | | | | | | | | PR2957 ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. llvm-svn: 70225
* When transforming sext(trunc(load(x))) into sext(smaller load(x)),Dan Gohman2009-04-271-1/+1
| | | | | | | the trunc is directly replaced with the smaller load, so don't try to create a new sext node. This fixes PR4050. llvm-svn: 70179
* Refactor the code to grab the low and high parts of a valueDan Gohman2009-04-254-126/+38
| | | | | | using EXTRACT_ELEMENT into a utility function. llvm-svn: 70056
* Add a top-level comment about DAGCombiner's role in the compiler.Dan Gohman2009-04-251-0/+4
| | | | llvm-svn: 70052
* Fix PR 4057, a crash doing float->char const folding.Dale Johannesen2009-04-241-3/+4
| | | | | | | | This particular one is undefined behavior (although this isn't related to the crash), so it will no longer do it at compile time, which seems better. llvm-svn: 69990
* Revert 69952. Causes testsuite failures on linux x86-64.Rafael Espindola2009-04-245-353/+447
| | | | llvm-svn: 69967
* PR2957Nate Begeman2009-04-245-447/+353
| | | | | | | | | | | | | | ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next. llvm-svn: 69952
* Instead of requiring TLI.LowerCallTo to return an ISD::BUILD_PAIR,Dan Gohman2009-04-241-60/+118
| | | | | | | | use ISD::EXTRACT_ELEMENT. SelectionDAG has a special fast-path for the cast of an EXTRACT_ELEMENT with a BUILD_PAIR operand, for the common case. llvm-svn: 69948
* Factor out a bit of code that appears in several places into aDan Gohman2009-04-233-14/+16
| | | | | | utility function. llvm-svn: 69937
* Handle Void types in ComputeValueVTs. This doesn't currently occur,Dan Gohman2009-04-231-0/+3
| | | | | | | but this change makes the code more general and easier to adapt for new purposes. llvm-svn: 69935
* Make X86's copyRegToReg able to handle copies to and from subclasses.Dan Gohman2009-04-201-25/+0
| | | | | | | This makes the extra copyRegToReg calls in ScheduleDAGSDNodesEmit.cpp unnecessary. Derived from a patch by Jakob Stoklund Olesen. llvm-svn: 69635
* Simplify this code. getConstant knows how to makeDan Gohman2009-04-201-10/+3
| | | | | | broadcasted vector constants. llvm-svn: 69634
* Revise my previous change 68996 as suggested by Duncan.Bob Wilson2009-04-203-9/+5
| | | | llvm-svn: 69607
* Now that BUILD_VECTOR operands are allowed to beDuncan Sands2009-04-191-9/+6
| | | | | | | | bigger than the vector element type, turn checking of the operand type back on again, appropriately adjusted. llvm-svn: 69516
* Fix PR3898, which manifests as failures on are an Xcore,Chris Lattner2009-04-181-1/+1
| | | | | | patch by Jakob Stoklund Olesen! llvm-svn: 69472
OpenPOWER on IntegriCloud