Anton Korobeynikov | f2a0cda | 2009-05-03 13:19:24 +0000 | [diff] [blame] | 1 | //===---------------------------------------------------------------------===// |
| 2 | // MSP430 backend. |
| 3 | //===---------------------------------------------------------------------===// |
| 4 | |
| 5 | DISCLAIMER: Thid backend should be considered as highly experimental. I never |
| 6 | seen nor worked with this MCU, all information was gathered from datasheet |
| 7 | only. The original intention of making this backend was to write documentation |
| 8 | of form "How to write backend for dummies" :) Thes notes hopefully will be |
| 9 | available pretty soon. |
| 10 | |
| 11 | Some things are incomplete / not implemented yet (this list surely is not |
| 12 | complete as well): |
| 13 | |
Anton Korobeynikov | f2a0cda | 2009-05-03 13:19:24 +0000 | [diff] [blame] | 14 | 1. Verify, how stuff is handling implicit zext with 8 bit operands (this might |
| 15 | be modelled currently in improper way - should we need to mark the superreg as |
| 16 | def for every 8 bit instruction?). |
| 17 | |
| 18 | 2. Libcalls: multiplication, division, remainder. Note, that calling convention |
| 19 | for libcalls is incomptible with calling convention of libcalls of msp430-gcc |
| 20 | (these cannot be used though due to license restriction). |
| 21 | |
| 22 | 3. Implement multiplication / division by constant (dag combiner hook?). |
| 23 | |
| 24 | 4. Implement non-constant shifts. |
| 25 | |
| 26 | 5. Implement varargs stuff. |
| 27 | |
| 28 | 6. Verify and fix (if needed) how's stuff playing with i32 / i64. |
| 29 | |
| 30 | 7. Implement floating point stuff (softfp?) |
| 31 | |
| 32 | 8. Implement instruction encoding for (possible) direct code emission in the |
| 33 | future. |
| 34 | |
| 35 | 9. Since almost all instructions set flags - implement brcond / select in better |
| 36 | way (currently they emit explicit comparison). |
| 37 | |
| 38 | 10. Handle imm in comparisons in better way (see comment in MSP430InstrInfo.td) |
| 39 | |
| 40 | 11. Implement hooks for better memory op folding, etc. |