forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
//===---------------------------------------------------------------------===//
 | 
						|
// MSP430 backend.
 | 
						|
//===---------------------------------------------------------------------===//
 | 
						|
 | 
						|
DISCLAIMER: Thid backend should be considered as highly experimental. I never
 | 
						|
seen nor worked with this MCU, all information was gathered from datasheet
 | 
						|
only. The original intention of making this backend was to write documentation
 | 
						|
of form "How to write backend for dummies" :) Thes notes hopefully will be
 | 
						|
available pretty soon.
 | 
						|
 | 
						|
Some things are incomplete / not implemented yet (this list surely is not
 | 
						|
complete as well):
 | 
						|
 | 
						|
1. Verify, how stuff is handling implicit zext with 8 bit operands (this might
 | 
						|
be modelled currently in improper way - should we need to mark the superreg as
 | 
						|
def for every 8 bit instruction?).
 | 
						|
 | 
						|
2. Libcalls: multiplication, division, remainder. Note, that calling convention
 | 
						|
for libcalls is incomptible with calling convention of libcalls of msp430-gcc
 | 
						|
(these cannot be used though due to license restriction).
 | 
						|
 | 
						|
3. Implement multiplication / division by constant (dag combiner hook?).
 | 
						|
 | 
						|
4. Implement non-constant shifts.
 | 
						|
 | 
						|
5. Implement varargs stuff.
 | 
						|
 | 
						|
6. Verify and fix (if needed) how's stuff playing with i32 / i64.
 | 
						|
 | 
						|
7. Implement floating point stuff (softfp?)
 | 
						|
 | 
						|
8. Implement instruction encoding for (possible) direct code emission in the
 | 
						|
future.
 | 
						|
 | 
						|
9. Since almost all instructions set flags - implement brcond / select in better
 | 
						|
way (currently they emit explicit comparison).
 | 
						|
 | 
						|
10. Handle imm in comparisons in better way (see comment in MSP430InstrInfo.td)
 | 
						|
 | 
						|
11. Implement hooks for better memory op folding, etc.
 |