summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PIC16/PIC16ISelLowering.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowingDan Gohman2009-02-071-1/+1
| | | | | | ScheduleDAG's TLI member to use const. llvm-svn: 64018
* Get rid of the last non-DebugLoc versions of getNode!Dale Johannesen2009-02-071-7/+7
| | | | | | | | | | | | Many targets build placeholder nodes for special operands, e.g. GlobalBaseReg on X86 and PPC for the PIC base. There's no sensible way to associate debug info with these. I've left them built with getNode calls with explicit DebugLoc::getUnknownLoc operands. I'm not too happy about this but don't see a good improvement; I considered adding a getPseudoOperand or something, but it seems to me that'll just make it harder to read. llvm-svn: 63992
* Remove more non-DebugLoc getNode variants. UseDale Johannesen2009-02-061-3/+5
| | | | | | | | getCALLSEQ_{END,START} to permit passing no DebugLoc there. UNDEF doesn't logically have DebugLoc; add getUNDEF to encapsulate this. llvm-svn: 63978
* Remove more non-DebugLoc versions of getNode.Dale Johannesen2009-02-061-21/+28
| | | | llvm-svn: 63969
* Get rid of one more non-DebugLoc getNode andDale Johannesen2009-02-061-3/+3
| | | | | | | its corresponding getTargetNode. Lots of caller changes. llvm-svn: 63904
* Get rid of 3 non-DebugLoc getNode variants.Dale Johannesen2009-02-051-40/+51
| | | | llvm-svn: 63808
* Remove non-DebugLoc versions of getMergeValues, ZeroExtendInReg.Dale Johannesen2009-02-051-2/+3
| | | | llvm-svn: 63800
* Remove a few non-DebugLoc versions of node creationDale Johannesen2009-02-041-3/+3
| | | | | | functions. llvm-svn: 63703
* Make LowerCallTo and LowerArguments take a DebugLocDale Johannesen2009-01-301-3/+4
| | | | | | argument. Adjust all callers and overloaded versions. llvm-svn: 63444
* Use sublw for comparison with literals instead of subwf.Sanjiv Gupta2009-01-301-9/+11
| | | | llvm-svn: 63382
* Cleanup whitespace and comments, and tweak someDuncan Sands2009-01-211-6/+8
| | | | | | | prototypes, in operand type legalization. No functionality change. llvm-svn: 62680
* Implement LowerOperationWrapper for legalizer. Sanjiv Gupta2009-01-211-117/+131
| | | | | | Also a few signed comparison fixes. llvm-svn: 62665
* Checking in conditionals, function call, arrays and libcalls implementation.Sanjiv Gupta2009-01-131-127/+815
| | | | llvm-svn: 62174
* Change the interface to the type legalization methodDuncan Sands2008-12-011-41/+48
| | | | | | | | | | | ReplaceNodeResults: rather than returning a node which must have the same number of results as the original node (which means mucking around with MERGE_VALUES, and which is also easy to get wrong since SelectionDAG folding may mean you don't get the node you expect), return the results in a vector. llvm-svn: 60348
* Add include files needed when building withDuncan Sands2008-11-281-0/+1
| | | | | | gcc 4.4 (due to use of sprintf). llvm-svn: 60209
* Eliminate a compile time warning.Evan Cheng2008-11-271-1/+1
| | | | llvm-svn: 60145
* Emit declaration for globals and externs.Sanjiv Gupta2008-11-261-0/+23
| | | | | | Custom lower AND, OR, XOR bitwise operations. llvm-svn: 60098
* Added a more function PIC16 backend. However to get this working a patch inSanjiv Gupta2008-11-191-664/+575
| | | | | | ExpandIntegerOperand (LegalizeIntegerTypes.cpp) is needed which is yet to be reworked and submitted. llvm-svn: 59617
* Trim #includes.Dan Gohman2008-10-161-3/+0
| | | | llvm-svn: 57649
* Rename LoadX to LoadExt.Evan Cheng2008-10-141-3/+3
| | | | llvm-svn: 57526
* Rename ConstantSDNode::getValue to getZExtValue, for consistencyDan Gohman2008-09-121-6/+8
| | | | | | | with ConstantInt. This led to fixing a bug in TargetLowering.cpp using getValue instead of getAPIntValue. llvm-svn: 56159
* erect abstraction boundaries for accessing SDValue members, rename Val -> ↵Gabor Greif2008-08-281-8/+8
| | | | | | Node to reflect semantics llvm-svn: 55504
* disallow direct access to SDValue::ResNo, provide a getter insteadGabor Greif2008-08-261-1/+1
| | | | llvm-svn: 55394
* Rename SDOperand to SDValue.Dan Gohman2008-07-271-67/+67
| | | | llvm-svn: 54128
* Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminatingDan Gohman2008-07-011-1/+2
| | | | | | | | | | | | | | | | the need for a flavor operand, and add a new SDNode subclass, LabelSDNode, for use with them to eliminate the need for a label id operand. Change instruction selection to let these label nodes through unmodified instead of creating copies of them. Teach the MachineInstr emitter how to emit a MachineInstr directly from an ISD label node. This avoids the need for allocating SDNodes for the label id and flavor value, as well as SDNodes for each of the post-isel label, label id, and label flavor. llvm-svn: 52943
* Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect itsDan Gohman2008-06-301-1/+1
| | | | | | | | | | | | | | | | | purpose, and give it a custom SDNode subclass so that it doesn't need to have line number, column number, filename string, and directory string, all existing as individual SDNodes to be the operands. This was the only user of ISD::STRING, StringSDNode, etc., so remove those and some associated code. This makes stop-points considerably easier to read in -view-legalize-dags output, and reduces overhead (creating new nodes and copying std::strings into them) on code containing debugging information. llvm-svn: 52924
* Revert the SelectionDAG optimization that makesDuncan Sands2008-06-301-2/+2
| | | | | | | | | | | | | | | | | | it impossible to create a MERGE_VALUES node with only one result: sometimes it is useful to be able to create a node with only one result out of one of the results of a node with more than one result, for example because the new node will eventually be used to replace a one-result node using ReplaceAllUsesWith, cf X86TargetLowering::ExpandFP_TO_SINT. On the other hand, most users of MERGE_VALUES don't need this and for them the optimization was valuable. So add a new utility method getMergeValues for creating MERGE_VALUES nodes which by default performs the optimization. Change almost everywhere to use getMergeValues (and tidy some stuff up at the same time). llvm-svn: 52893
* Wrap MVT::ValueType in a struct to get type safetyDuncan Sands2008-06-061-3/+6
| | | | | | | | | | | | | | | | and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
* Silence warnings.Evan Cheng2008-05-141-2/+2
| | | | llvm-svn: 51129
* Detabification. Fixed indentation and spacing.Sanjiv Gupta2008-05-141-327/+290
| | | | | | | Changed cout to DOUT, and TODOs to FIXMEs. Other changes as per coding conventions. llvm-svn: 51105
* Adding files for Microchip's PIC16 target.Sanjiv Gupta2008-05-131-0/+801
A brief description about PIC16: =============================== PIC16 is an 8-bit microcontroller with only one 8-bit register which is the accumulator. All arithmetic/load/store operations are 8-bit only. The architecture has two address spaces: program and data. The program memory is divided into 2K pages and the data memory is divided into banks of 128 byte, with only 80 usable bytes, resulting in an non-contiguous data memory. It supports direct data memory access (by specifying the address as part of the instruction) and indirect data and program memory access (in an unorthodox fashion which utilize a 16 bit pointer register). Two classes of registers exist: (8-bit class which is only one accumulator) (16-bit class, which contains one or more 16 bit pointer(s)) llvm-svn: 51027
OpenPOWER on IntegriCloud