42 lines · plain
1//===---------------------------------------------------------------------===//2// MSP430 backend.3//===---------------------------------------------------------------------===//4 5DISCLAIMER: This backend should be considered as highly experimental. I never6seen nor worked with this MCU, all information was gathered from datasheet7only. The original intention of making this backend was to write documentation8of form "How to write backend for dummies" :) Thes notes hopefully will be9available pretty soon.10 11Some things are incomplete / not implemented yet (this list surely is not12complete as well):13 141. Verify, how stuff is handling implicit zext with 8 bit operands (this might15be modelled currently in improper way - should we need to mark the superreg as16def for every 8 bit instruction?).17 182. Libcalls: multiplication, division, remainder. Note, that calling convention19for libcalls is incomptible with calling convention of libcalls of msp430-gcc20(these cannot be used though due to license restriction).21 223. Implement multiplication / division by constant (dag combiner hook?).23 244. Implement non-constant shifts.25 265. Implement varargs stuff.27 286. Verify and fix (if needed) how's stuff playing with i32 / i64.29 307. Implement floating point stuff (softfp?)31 328. Implement instruction encoding for (possible) direct code emission in the33future.34 359. Since almost all instructions set flags - implement brcond / select in better36way (currently they emit explicit comparison).37 3810. Handle imm in comparisons in better way (see comment in MSP430InstrInfo.td)39 4011. Implement hooks for better memory op folding, etc.41 42