summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
Commit message (Collapse)AuthorAgeFilesLines
...
* Propagate return result extension typeAnton Korobeynikov2009-07-161-0/+7
| | | | llvm-svn: 75925
* Move a few more convenience factory functions from Constant to LLVMContext.Owen Anderson2009-07-153-5/+9
| | | | llvm-svn: 75840
* Lexically order files in CMakeLists.txt files.Ted Kremenek2009-07-151-3/+3
| | | | llvm-svn: 75831
* Move EVER MORE stuff over to LLVMContext.Owen Anderson2009-07-141-1/+2
| | | | llvm-svn: 75703
* llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.Torok Edwin2009-07-1416-106/+106
| | | | | | | | | This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
* Begin the painful process of tearing apart the rat'ss nest that is ↵Owen Anderson2009-07-133-7/+13
| | | | | | | | | Constants.cpp and ConstantFold.cpp. This involves temporarily hard wiring some parts to use the global context. This isn't ideal, but it's the only way I could figure out to make this process vaguely incremental. llvm-svn: 75445
* remove llvm.part.set.* and llvm.part.select.*. They have never been Chris Lattner2009-07-121-8/+0
| | | | | | | | | | implemented in codegen, have no frontend to generate them, and are better implemented with pattern matching (like the ppc backend does to generate rlwimi/rlwinm etc). PR4543 llvm-svn: 75430
* Fix assert(0) conversion, as suggested by Chris.Torok Edwin2009-07-121-5/+8
| | | | llvm-svn: 75423
* Implement support for promotion of AND/OR/XOR on integer types.Jakob Stoklund Olesen2009-07-121-8/+19
| | | | | | The blackfin processor has a legal i16 type, but only logic operations on i32. llvm-svn: 75419
* Fix types in PromoteNode handling of CTPOP and friends.Jakob Stoklund Olesen2009-07-121-3/+3
| | | | llvm-svn: 75418
* assert(0) -> LLVM_UNREACHABLE.Torok Edwin2009-07-1113-60/+64
| | | | | | | | | Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. llvm-svn: 75379
* Convert more assert(0)+abort() -> LLVM_UNREACHABLE,Torok Edwin2009-07-1110-85/+84
| | | | | | and abort()/exit() -> llvm_report_error(). llvm-svn: 75363
* Fix up support for OptionalDefOperand when it defaults to an actual register ↵Evan Cheng2009-07-111-4/+16
| | | | | | def. I need this to get ready for major Thumb1 surgery. llvm-svn: 75328
* Use CreateStackStoreLoad helper in more places.Eli Friedman2009-07-112-36/+4
| | | | llvm-svn: 75320
* Fix an apparent copy-and-paste problem in an error message.Bob Wilson2009-07-091-1/+1
| | | | llvm-svn: 75197
* Make EXTRACT_VECTOR_ELT a bit more flexible in terms of the returned Eli Friedman2009-07-094-55/+24
| | | | | | | | | value. Adjust other code to deal with that correctly. Make DAGTypeLegalizer::PromoteIntRes_EXTRACT_VECTOR_ELT take advantage of this new flexibility to simplify the code and make it deal with unusual vectors (like <4 x i1>) correctly. Fixes PR3037. llvm-svn: 75176
* As Chris pointed out, we don't actually need to pass the context around here.Owen Anderson2009-07-092-3/+3
| | | | llvm-svn: 75161
* Thread LLVMContext through MVT and related parts of SDISel.Owen Anderson2009-07-099-31/+43
| | | | llvm-svn: 75153
* Make SelectionDAG::getVectorShuffle work properly for VECTOR_SHUFFLEDan Gohman2009-07-091-2/+2
| | | | | | | | nodes with operand types that differ from the result type. (This doesn't normally happen right now, because SelectionDAGLowering::visitShuffleVector normalizes vector shuffles.) llvm-svn: 75081
* Use common code for both ARM and Thumb-2 instruction and register info.David Goodwin2009-07-081-4/+9
| | | | llvm-svn: 75067
* Nowadays vectors are only split if they have an evenDuncan Sands2009-07-084-59/+47
| | | | | | | | number of elements. Make some simplifications based on this (in particular SplitVecRes_SETCC). Tighten up some checking while there. llvm-svn: 75050
* Remove trailing whitespace. Reorder some methodsDuncan Sands2009-07-085-59/+60
| | | | | | and cases alphabetically. No functionality change. llvm-svn: 75001
* Remove the vicmp and vfcmp instructions. Because we never had a release withNick Lewycky2009-07-082-31/+0
| | | | | | | these instructions, no autoupgrade or backwards compatibility support is provided. llvm-svn: 74991
* dag combine sext(setcc) -> vsetcc before legalize. To make this safe,Chris Lattner2009-07-081-1/+19
| | | | | | | | | VSETCC must define all bits, which is different than it was documented to before. Since all targets that implement VSETCC already have this behavior, and we don't optimize based on this, just change the documentation. We now get nice code for vec_compare.ll llvm-svn: 74978
* SelectionDAG::SignBitIsZero doesn't work right for vectors,Chris Lattner2009-07-071-0/+4
| | | | | | for now, conservatively return false. llvm-svn: 74969
* Operand of asm("call") (the callee function) is representedDale Johannesen2009-07-071-3/+16
| | | | | | | | | | as "X" constraint and "P" modifier on x86. Make this work. (Change may not be sufficient to fix it for non-Darwin, but I'm pretty sure it won't break anything.) gcc.apple/asm-block-32.c gcc.apple/asm-block-33.c llvm-svn: 74967
* add support for legalizing an icmp where the result is illegal (4xi1) butChris Lattner2009-07-071-7/+30
| | | | | | the input is legal (4 x i32) llvm-svn: 74964
* random code cleanups.Chris Lattner2009-07-071-27/+28
| | | | llvm-svn: 74962
* implement support for spliting and scalarizing vector setcc's. ThisChris Lattner2009-07-072-9/+24
| | | | | | | finishes off enough support for vector compares to get the icmp/fcmp version of 2008-07-23-VSetCC.ll passing. llvm-svn: 74961
* lower vector icmp/fcmp to ICMP/FCMP nodes with the right resultChris Lattner2009-07-071-2/+5
| | | | | | (vector of bool). llvm-svn: 74960
* ScalarizeVecRes_ShiftOp and ScalarizeVecRes_BinOp are the same,Chris Lattner2009-07-072-12/+1
| | | | | | eliminate the former. llvm-svn: 74959
* add support for vector legalizing of *_EXTEND.Chris Lattner2009-07-071-15/+50
| | | | llvm-svn: 74957
* Have scoped mutexes take referenes instead of pointers.Owen Anderson2009-07-071-1/+1
| | | | llvm-svn: 74931
* Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed ↵Tilmann Scheller2009-07-034-13/+14
| | | | | | | | | | | arguments in a vararg call. With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack. The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list. llvm-svn: 74764
* Simplify debug info intrisinc lowering.Devang Patel2009-07-022-162/+115
| | | | llvm-svn: 74733
* CMake build fixes, from Xerxes RanbyDouglas Gregor2009-07-021-0/+2
| | | | llvm-svn: 74720
* Simplify. Devang Patel2009-07-022-17/+17
| | | | llvm-svn: 74677
* Simplify. No intentional functionality change.Devang Patel2009-07-021-49/+36
| | | | llvm-svn: 74673
* Refactor. No functionality change.Devang Patel2009-07-011-10/+4
| | | | llvm-svn: 74659
* llvm.dbg.declare is always used for local variable's debug info.Devang Patel2009-07-011-4/+1
| | | | llvm-svn: 74625
* Add a bit IsUndef to MachineOperand. This indicates the def / use register ↵Evan Cheng2009-06-301-1/+1
| | | | | | | | | | operand is defined by an implicit_def. That means it can def / use any register and passes (e.g. register scavenger) can feel free to ignore them. The register allocator, when it allocates a register to a virtual register defined by an implicit_def, can allocate any physical register without worrying about overlapping live ranges. It should mark all of operands of the said virtual register so later passes will do the right thing. This is not the best solution. But it should be a lot less fragile to having the scavenger try to track what is defined by implicit_def. llvm-svn: 74518
* fix a typo that GCC should have caught that causes crashes with -view-*-dagsChris Lattner2009-06-271-1/+1
| | | | llvm-svn: 74364
* fix a really subtle bug in the cross section of aliases and TLS:Chris Lattner2009-06-261-9/+3
| | | | | | | | | | | the SelectionDAG::getGlobalAddress function properly looks through aliases to determine thread-localness, but then passes the GV* down to GlobalAddressSDNode::GlobalAddressSDNode which does not. Instead of passing down isTarget, just pass down the predetermined node opcode. This fixes some assertions with out of tree changes I'm working on. llvm-svn: 74325
* implement DOTGraphTraits<SelectionDAG*>::getNodeLabel in terms ofChris Lattner2009-06-261-138/+5
| | | | | | SDNode::print_details to eliminate a ton of near-duplicate code. llvm-svn: 74311
* dot graph viewing is apparently not using SDNode::print_details, this is bad,Chris Lattner2009-06-261-0/+7
| | | | | | but in the meantime lets print targetflags on node labels. llvm-svn: 74274
* propagate target operand flags from dag nodes into MachineOperands.Chris Lattner2009-06-261-4/+8
| | | | llvm-svn: 74273
* fit in 80 colsChris Lattner2009-06-261-5/+4
| | | | llvm-svn: 74270
* add targetflags to jump tables and constant pool entries.Chris Lattner2009-06-251-6/+24
| | | | llvm-svn: 74204
* allow setting target operand flags on TargetGlobalAddress nodes.Chris Lattner2009-06-251-6/+19
| | | | llvm-svn: 74203
* start bringing targetoperand flags into isel, first up, ExternalSymbol.Chris Lattner2009-06-251-7/+13
| | | | llvm-svn: 74199
OpenPOWER on IntegriCloud