summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* 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
* back out r75156 for now.Chris Lattner2009-07-091-47/+0
| | | | llvm-svn: 75160
* Add some classes to produce pretty-printed asm. We'll use theseDavid Greene2009-07-091-0/+47
| | | | | | | shortly to provide nicely printed comments and other goodies in asm files. llvm-svn: 75156
* Thread LLVMContext through MVT and related parts of SDISel.Owen Anderson2009-07-099-31/+43
| | | | llvm-svn: 75153
* Targets sometimes assign fixed stack object to spill certain callee-savedEvan Cheng2009-07-091-1/+6
| | | | | | | | | | registers based on dynamic conditions. For example, X86 EBP/RBP, when used as frame register has to be spilled in the first fixed object. It should inform PEI this so it doesn't get allocated another stack object. Also, it should not be spilled as other callee-saved registers but rather its spilling and restoring are being handled by emitPrologue and emitEpilogue. Avoid spilling it twice. llvm-svn: 75116
* Improved tracking of value number kills. VN kills are now representedLang Hames2009-07-096-42/+102
| | | | | | | | | | | | as an (index,bool) pair. The bool flag records whether the kill is a PHI kill or not. This code will be used to enable splitting of live intervals containing PHI-kills. A slight change to live interval weights introduced an extra spill into lsr-code-insertion (outside the critical sections). The test condition has been updated to reflect this. llvm-svn: 75097
* 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
* Use interators instead of counters for loops.Bill Wendling2009-07-081-16/+21
| | | | llvm-svn: 75046
* Push LLVMContext _back_ through IRBuilder.Owen Anderson2009-07-082-3/+3
| | | | llvm-svn: 75040
* Switch GlobalVariable ctors to a sane API, where *either* a context or a ↵Owen Anderson2009-07-081-5/+4
| | | | | | module is required. llvm-svn: 75025
* 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
* Push LLVMContext through GlobalVariables and IRBuilder.Owen Anderson2009-07-081-2/+2
| | | | llvm-svn: 74985
* 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
* Accidently dropped this while removing dead code in previous commit.Devang Patel2009-07-071-0/+1
| | | | llvm-svn: 74953
* Remove dead code.Devang Patel2009-07-072-32/+2
| | | | llvm-svn: 74949
* Have scoped mutexes take referenes instead of pointers.Owen Anderson2009-07-071-1/+1
| | | | llvm-svn: 74931
* Revert 74898. It broke several tests.Evan Cheng2009-07-071-9/+3
| | | | llvm-svn: 74925
* if the terminator is a branch depending upon the side effects of aSanjiv Gupta2009-07-071-3/+9
| | | | | | | | previous cmp; a copy can not be inserted here if the copy insn also has side effects. We don't have access to the attributes of copy insn here; so just play safe by finding a safe locations for branch terminators. llvm-svn: 74898
* Avoid adding a duplicate def. This fixes PR4478.Evan Cheng2009-07-061-2/+11
| | | | llvm-svn: 74857
* Fix the cmake build - patch by Xerxes Rånby.Duncan Sands2009-07-061-0/+1
| | | | llvm-svn: 74825
* Changed ELFCodeEmitter to inherit from ObjectCodeEmitterBruno Cardoso Lopes2009-07-064-131/+51
| | | | llvm-svn: 74821
* Cleanup MachO writer and code emitter. Fix 80 cols problems, remove extra ↵Bruno Cardoso Lopes2009-07-065-187/+206
| | | | | | spaces, shrink down includes and move some methods out-of-line llvm-svn: 74817
* Just forgot to include the two new filesBruno Cardoso Lopes2009-07-061-0/+142
| | | | llvm-svn: 74814
* Add the Object Code Emitter class. Original patch by Aaron Gray, I did someBruno Cardoso Lopes2009-07-067-255/+171
| | | | | | cleanup, removed some #includes and moved Object Code Emitter out-of-line. llvm-svn: 74813
* More LLVMContext-ification.Owen Anderson2009-07-051-1/+1
| | | | llvm-svn: 74807
* 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
* Factor some code out and support for Jump Table relocationsBruno Cardoso Lopes2009-07-034-42/+142
| | | | llvm-svn: 74760
* Simplify debug info intrisinc lowering.Devang Patel2009-07-022-162/+115
| | | | llvm-svn: 74733
* CMake build fixes, from Xerxes RanbyDouglas Gregor2009-07-022-1/+3
| | | | llvm-svn: 74720
* shrinking down #includesBruno Cardoso Lopes2009-07-025-67/+63
| | | | llvm-svn: 74718
* Remove getFunctionAlignment from TargetELFInfo and use new MachineFunction ↵Bruno Cardoso Lopes2009-07-021-4/+5
| | | | | | alignment method llvm-svn: 74686
* 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
* CommuteChangesDestination() should check if to-be-commuted instruction ↵Evan Cheng2009-07-011-16/+30
| | | | | | defines any register. Also teaches the default commuteInstruction() to commute instruction without definitions (e.g. X86::test / ARM::tsp). llvm-svn: 74602
* Remove special handling of implicit_def. Fix a couple more bugs in ↵Evan Cheng2009-07-013-51/+74
| | | | | | | | liveintervalanalysis and coalescer handling of implicit_def. Note, isUndef marker must be placed even on implicit_def def operand or else the scavenger will not ignore it. This is necessary because -O0 path does not use liveintervalanalysis, it treats implicit_def just like any other def. llvm-svn: 74601
* Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves ↵Evan Cheng2009-07-014-36/+104
| | | | | | the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details. llvm-svn: 74580
OpenPOWER on IntegriCloud