summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MipsISelLowering.cpp
Commit message (Collapse)AuthorAgeFilesLines
* In the calling convention logic, ValVT is always a legal type,Duncan Sands2010-11-041-3/+3
| | | | | | | and as such can be represented by an MVT - the more complicated EVT is not needed. Use MVT for ValVT everywhere. llvm-svn: 118245
* Inside the calling convention logic LocVT is always a simpleDuncan Sands2010-11-031-2/+2
| | | | | | | | | | value type, so there is no point in passing it around using an EVT. Use the simpler MVT everywhere. Rather than trying to propagate this information maximally in all the code that using the calling convention stuff, I chose to do a mainly low impact change instead. llvm-svn: 118167
* Inline asm multiple alternative constraints development phase 2 - improved ↵John Thompson2010-10-291-0/+31
| | | | | | basic logic, added initial platform support. llvm-svn: 117667
* eliminate some uses of the getStore overload.Chris Lattner2010-09-211-3/+6
| | | | llvm-svn: 114453
* convert the targets off the non-MachinePointerInfo of getLoad.Chris Lattner2010-09-211-6/+10
| | | | llvm-svn: 114410
* Fix PR7174, a couple o Mips fixes:Bruno Cardoso Lopes2010-07-201-1/+1
| | | | | | | | | | | - Fix a typo for PIC check during jmp table lowering - Also fix the "first jump table basic block is not considered only reachable by fall through" problem, use this ad-hoc solution until I come up with something better. Patch by stetorvs@gmail.com llvm-svn: 108820
* Fix Mips PR7473. Patch by stetorvs@gmail.comBruno Cardoso Lopes2010-07-201-3/+3
| | | | llvm-svn: 108816
* Split the SDValue out of OutputArg so that SelectionDAG-independentDan Gohman2010-07-071-2/+4
| | | | | | code can do calling-convention queries. This obviates OutputArgReg. llvm-svn: 107786
* Propagate debug loc.Devang Patel2010-07-061-4/+4
| | | | llvm-svn: 107710
* Reapply r107655 with fixes; insert the pseudo instruction intoDan Gohman2010-07-061-16/+15
| | | | | | | the block before calling the expansion hook. And don't put EFLAGS in a mbb's live-in list twice. llvm-svn: 107691
* Revert r107655.Dan Gohman2010-07-061-15/+16
| | | | llvm-svn: 107668
* Fix a bunch of custom-inserter functions to handle the case whereDan Gohman2010-07-061-16/+15
| | | | | | the pseudo instruction is not at the end of the block. llvm-svn: 107655
* Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill ↵Evan Cheng2010-07-031-5/+5
| | | | | | slots so it's always false. llvm-svn: 107550
* Get rid of the EdgeMapping map. Instead, just check for BasicBlockDan Gohman2010-05-011-6/+2
| | | | | | changes before doing phi lowering for switches. llvm-svn: 102809
* Use const qualifiers with TargetLowering. This eliminates severalDan Gohman2010-04-171-16/+18
| | | | | | | | | | | | | const_casts, and it reinforces the design of the Target classes being immutable. SelectionDAGISel::IsLegalToFold is now a static member function, because PIC16 uses it in an unconventional way. There is more room for API cleanup here. And PIC16's AsmPrinter no longer uses TargetLowering. llvm-svn: 101635
* Move per-function state out of TargetLowering subclasses and intoDan Gohman2010-04-171-4/+8
| | | | | | MachineFunctionInfo subclasses. llvm-svn: 101634
* Add const qualifiers to CodeGen's use of LLVM IR constructs.Dan Gohman2010-04-151-2/+2
| | | | llvm-svn: 101334
* Remove an assumption of default arguments. This is in anticipation of aDavid Greene2010-02-151-8/+15
| | | | | | change to SelectionDAG build APIs. llvm-svn: 96233
* Add suport for VASTART on Mips.Bruno Cardoso Lopes2010-02-061-0/+19
| | | | llvm-svn: 95506
* First step towards varargs support in Mips:Bruno Cardoso Lopes2010-02-061-38/+117
| | | | | | | | - o32 cc must pass all arguments in A0...A3 and stack regardless if its type (but respect the alignment). - Store all variable arguments back to the caller stack. llvm-svn: 95500
* Revert 95130.Evan Cheng2010-02-021-1/+1
| | | | llvm-svn: 95160
* Pass callsite return type to TargetLowering::LowerCall and use that to check ↵Evan Cheng2010-02-021-1/+1
| | | | | | sibcall eligibility. llvm-svn: 95130
* Fix PR6144. Reload GP before the emission of CALLSEQ_END to guarantee the ↵Bruno Cardoso Lopes2010-01-301-5/+5
| | | | | | right reload order llvm-svn: 94915
* Eliminate target hook IsEligibleForTailCallOptimization.Evan Cheng2010-01-271-1/+3
| | | | | | | | | Target independent isel should always pass along the "tail call" property. Change target hook LowerCall's parameter "isTailCall" into a refernce. If the target decides it's impossible to honor the tail call request, it should set isTailCall to false to make target independent isel happy. llvm-svn: 94626
* eliminate the TargetLowering::UsesGlobalOffsetTable bool, which isChris Lattner2010-01-261-3/+0
| | | | | | | subsumed by TargetLowering::getJumpTableEncoding(). Change uses of it to be more specific. llvm-svn: 94529
* Support PIC loading of constant pool entriesBruno Cardoso Lopes2009-11-251-4/+12
| | | | llvm-svn: 89863
* Remove ISD::DEBUG_LOC and ISD::DBG_LABEL, which are no longer used.Dan Gohman2009-11-231-3/+0
| | | | | | | | Note that "hasDotLocAndDotFile"-style debug info was already broken; people wanting this functionality should implement it in the AsmPrinter/DwarfWriter code. llvm-svn: 89711
* We are not using DBG_STOPPOINT anymore.Devang Patel2009-11-211-1/+0
| | | | llvm-svn: 89536
* - Fix a small bug while handling target constant pools (one param was missing).Bruno Cardoso Lopes2009-11-161-1/+1
| | | | | | | | | | | | | | | - Add a smarter constant pool loading, instead of: lui $2, %hi($CPI1_0) addiu $2, $2, %lo($CPI1_0) lwc1 $f0, 0($2) Generate: lui $2, %hi($CPI1_0) lwc1 $f0, %lo($CPI1_0)($2) llvm-svn: 88886
* Add a bool flag to StackObjects telling whether they reference spillDavid Greene2009-11-121-5/+5
| | | | | | | | | | | | | slots. The AsmPrinter will use this information to determine whether to print a spill/reload comment. Remove default argument values. It's too easy to pass a wrong argument value when multiple arguments have default values. Make everything explicit to trap bugs early. Update all targets to adhere to the new interfaces.. llvm-svn: 87022
* Add a second ValueType argument to isFPImmLegal.Evan Cheng2009-10-281-1/+3
| | | | llvm-svn: 85361
* Do away with addLegalFPImmediate. Add a target hook isFPImmLegal which ↵Evan Cheng2009-10-271-3/+4
| | | | | | returns true if the fp immediate can be natively codegened by target. llvm-svn: 85281
* Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic ↵Evan Cheng2009-09-191-1/+4
| | | | | | blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks. llvm-svn: 82311
* Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that ↵Evan Cheng2009-09-181-1/+2
| | | | | | | | sdisel will use to properly complete phi nodes. Not functionality change yet. llvm-svn: 82273
* Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.Sandeep Patel2009-09-021-4/+4
| | | | llvm-svn: 80773
* Reapply 80278Bruno Cardoso Lopes2009-09-011-10/+22
| | | | | | | | Add MO flags to simplify the printing of relocations. Remove the support for printing large code model relocs (which aren't supported anyway). llvm-svn: 80691
* Revert 80278 for now, it caused a lot of MIPS tests to failBruno Cardoso Lopes2009-08-271-10/+5
| | | | llvm-svn: 80280
* Revamp our friend Mips :)Bruno Cardoso Lopes2009-08-271-5/+10
| | | | | | | | Add MO flags to simplify the printing of relocations. Remove the support for printing large code model relocs (which aren't supported anyway). llvm-svn: 80278
* reintroduce support for Mips "small" section handling. This is Chris Lattner2009-08-131-35/+5
| | | | | | | implemented somewhat differently than before, but it should have the same functionality and the previous testcase passes again. llvm-svn: 78900
* Restore some "small section" support code, reverting my patch from r76936.Chris Lattner2009-08-131-4/+41
| | | | llvm-svn: 78894
* Split EVT into MVT and EVT, the former representing _just_ a primitive type, ↵Owen Anderson2009-08-111-130/+130
| | | | | | | | while the latter is capable of representing either a primitive or an extended type. llvm-svn: 78713
* Rename MVT to EVT, in preparation for splitting SimpleValueType out into its ↵Owen Anderson2009-08-101-136/+136
| | | | | | own struct type. llvm-svn: 78610
* Start moving TargetLowering away from using full MVTs and towards ↵Owen Anderson2009-08-101-1/+1
| | | | | | SimpleValueType, which will simplify the privatization of IntegerType in the future. llvm-svn: 78584
* Major calling convention code refactoring.Dan Gohman2009-08-051-91/+65
| | | | | | | | | | | | | | | | | | | Instead of awkwardly encoding calling-convention information with ISD::CALL, ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering provides three virtual functions for targets to override: LowerFormalArguments, LowerCall, and LowerRet, which replace the custom lowering done on the special nodes. They provide the same information, but in a more immediately usable format. This also reworks much of the target-independent tail call logic. The decision of whether or not to perform a tail call is now cleanly split between target-independent portions, and the target dependent portion in IsEligibleForTailCallOptimization. This also synchronizes all in-tree targets, to help enable future refactoring and feature work. llvm-svn: 78142
* Remove -disable-mips-abicall and -enable-mips-absolute-call command-line Eli Friedman2009-08-031-5/+3
| | | | | | | | | | | | | options, which don't appear to be useful. -enable-mips-absolute-call is completely unused (and unless I'm mistaken, is supposed to have the same effect that -relocation-model=dynamic-no-pic should have), and -disable-mips-abicall appears to be effectively a synonym for -relocation-model=static. Adjust the few users of hasABICall to checks which seem more appropriate. Update MipsSubtarget, MipsTargetMachine, and MipselTargetMachine to synchronize with recent changes. llvm-svn: 77938
* Rip all of the global variable lowering logic out of TargetAsmInfo. SinceChris Lattner2009-07-281-7/+5
| | | | | | | | | | | | | | | | | | | | it is highly specific to the object file that will be generated in the end, this introduces a new TargetLoweringObjectFile interface that is implemented for each of ELF/MachO/COFF/Alpha/PIC16 and XCore. Though still is still a brutal and ugly refactoring, this is a major step towards goodness. This patch also: 1. fixes a bunch of dangling pointer problems in the PIC16 backend. 2. disables the TargetLowering copy ctor which PIC16 was accidentally using. 3. gets us closer to xcore having its own crazy target section flags and pic16 not having to shadow sections with its own objects. 4. fixes wierdness where ELF targets would set CStringSection but not CStringSection_. Factor the code better. 5. fixes some bugs in string lowering on ELF targets. llvm-svn: 77294
* remove more remnants of small section support.Chris Lattner2009-07-241-39/+1
| | | | llvm-svn: 76936
* Get rid of the Pass+Context magic.Owen Anderson2009-07-221-4/+4
| | | | llvm-svn: 76702
* One more operation expansion for MIPS, from test/CodeGen/Generic.Eli Friedman2009-07-171-1/+2
| | | | llvm-svn: 76149
* Expand a bunch of illegal operations on MIPS (found by Eli Friedman2009-07-171-0/+12
| | | | | | inspection and running over CodeGen/Generic). llvm-svn: 76146
OpenPOWER on IntegriCloud