| //===---------------------------------------------------------------------===// | 
 | // 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. |