Commit Graph

25 Commits

Author SHA1 Message Date
Chris Lattner bf9ac228f7 make SectionForGlobal non-virtual, add a hook for pic16 to do its "address=" hack.
llvm-svn: 76989
2009-07-24 18:34:27 +00:00
Chris Lattner b68b506d84 start refactoring pic16 section selection logic.
llvm-svn: 76977
2009-07-24 17:13:27 +00:00
Daniel Dunbar 12368685d8 Switch to getNameStr().
llvm-svn: 76962
2009-07-24 08:24:36 +00:00
Chris Lattner ddf377df1a simplify code by making special case more obvious
llvm-svn: 76950
2009-07-24 04:59:43 +00:00
Chris Lattner ecaf7dedd2 more random whitespace cleanup, eliminate #define, avoid copying
vectors needlessly, doxygenify comments, improve constness, etc.

llvm-svn: 76585
2009-07-21 17:20:18 +00:00
Chris Lattner 2cd8f753c0 clean up some formatting, indent by 2 instead of 4.
llvm-svn: 76490
2009-07-20 22:23:48 +00:00
Chris Lattner d290543332 rename TargetAsmInfo::getASDirective -> getDataASDirective
llvm-svn: 76431
2009-07-20 17:12:46 +00:00
Duncan Sands 48d983c86e Avoid compiler warnings when assertions are turned off.
llvm-svn: 75269
2009-07-10 20:10:14 +00:00
Sanjiv Gupta 0a1e2787a0 pic16 doesn't have a Data64bitsDirective. Set it NULL explicitly to tell the generic code to not pick the default.
llvm-svn: 74839
2009-07-06 18:09:11 +00:00
Sanjiv Gupta b89d3db1fd Implement _CONFIG macro to allow users to se to configuration settings on the part.
Implement _section macro to allow users to place objects in specific sections.
Implement _address macro to allow users to place objects at a particular address.
Placing objects at a memory address:
crate a unique section name from varname, address, object type and put that section at specified address. Mark this section a full (size = banksize) so that other objects do not compete for it while placing objects to sections in AsmPrinter.

llvm-svn: 74822
2009-07-06 10:18:37 +00:00
Sanjiv Gupta ae028d48be Emit debug info for locals with proper scope.
llvm-svn: 72531
2009-05-28 18:24:11 +00:00
Sanjiv Gupta 4a71ae268b Run through the list of globals once and sectionize all types of globlas includeing declarations. Later emit them from their section lists.
llvm-svn: 71661
2009-05-13 15:13:17 +00:00
Sanjiv Gupta 83adfb4a9f Iterate over globals once and sectionize them into appropriate sections.
Later in asmprinter, go over thsese sections and print them.
Do not print empty sections.

llvm-svn: 71560
2009-05-12 17:07:27 +00:00
Sanjiv Gupta 258f851629 Changed lowering and asmprinter to use ABI Names class called PAN.
llvm-svn: 71386
2009-05-10 05:23:47 +00:00
Duncan Sands af9eaa830a Rename PaddedSize to AllocSize, in the hope that this
will make it more obvious what it represents, and stop
it being confused with the StoreSize.

llvm-svn: 71349
2009-05-09 07:06:46 +00:00
Sanjiv Gupta 89e72b9c4a Moved pic16 naming functions to correct place.
No functionality change.

llvm-svn: 71207
2009-05-08 04:50:14 +00:00
Evan Cheng a55d46100e Eliminate compiler warnings.
llvm-svn: 71149
2009-05-07 05:31:56 +00:00
Sanjiv Gupta 960ae0660b Emit banksel and movlp instructions.
Split large global data (both initialized and un-initialized) into multiple sections of <= 80 bytes.
Provide routines to manage PIC16 ABI naming conventions.

llvm-svn: 71073
2009-05-06 08:02:01 +00:00
Sanjiv Gupta 44ea053a49 Emit .line debug directives for stoppoints. The debug location is retrieved by the MachineInstr itself, rather than by custom handling the DBG_STOPPOINT nodes.
llvm-svn: 68602
2009-04-08 06:24:04 +00:00
Sanjiv Gupta 50aeb12d80 Made the common case of default address space directive as non-virtual for performance reasons. Provide a single virtual interface for directives of all sizes in non-default address spaces.
llvm-svn: 63521
2009-02-02 16:53:06 +00:00
Sanjiv Gupta 964a29f671 Enable emitting of constant values in non-default address space as well. The APIs emitting constants now take an additional parameter signifying the address space in which to emit. The APIs like getData8BitsDirective() etc are made virtual enabling targets to be able to define appropirate directivers for various sizes and address spaces.
llvm-svn: 63377
2009-01-30 04:25:10 +00:00
Sanjiv Gupta 45da8b779c Checking in conditionals, function call, arrays and libcalls implementation.
llvm-svn: 62174
2009-01-13 19:18:47 +00:00
Sanjiv Gupta 2ae21ee517 Added a more function PIC16 backend. However to get this working a patch in
ExpandIntegerOperand (LegalizeIntegerTypes.cpp) is needed which is yet to be reworked and submitted. 

llvm-svn: 59617
2008-11-19 11:00:54 +00:00
Dan Gohman ac41d9f5d8 Refactor various TargetAsmInfo subclasses' TargetMachine members away
adding a TargetMachine member to the base TargetAsmInfo class instead.

llvm-svn: 58624
2008-11-03 18:22:42 +00:00
Sanjiv Gupta 4394c2376c Adding files for Microchip's PIC16 target.
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
2008-05-13 09:02:57 +00:00