[llvm-dev] [MSP430] Plans for MSP430 improvements

Anton Korobeynikov via llvm-dev
2021-08-15T17:33:38Z

Thanks, Josef!

Contributions to MSP430 are much appreciated and I will be happy to
review them (was on vacations recently and taming the backlog of
emails now).

On Sun, Aug 15, 2021 at 7:39 PM Jozef Lawrynowicz via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>
> Hi,
>
> I thought I would notify the LLVM community about some improvements to
> MSP430 support in LLVM/Clang that I'm planning to make.
>
> MCU support
> ============>   - Update MCU data to the latest version
>     + Currently only 161 MCUs are supported, but the latest version of
>       TI device data describes 609 MCUs.
>   - Store the CPU version of each MCU
>     + Currently only the hardware multiply version of each MCU is
>       stored; knowledge of the CPU supported by each MCU is required for
>       future updates.
>
> Support MSP430X code generation (small memory model only)
> ==========================================================>   - Support
the -mcpu=msp430x option in Clang
>     + This option is accepted by Clang, but doesn't do anything.
>       Plumbing is required so it enables the MSP430X feature in LLVM,
>       and passes the correct multilibs to the linker.
>   - Implement extended shift instructions
>     + MSP430X shift instructions such as RRAM and RRAX can shift by
>       more than one bit position in a single instruction.
>     + Currently, multiple shift instructions need to be emitted, each
>       shifting by one bit position.
>   - Implement extended PUSH/POP instructions
>     + PUSHM/POPM can push and pop multiple registers with a single
>       instruction.
>     + Currently, multiple PUSH/POP instructions need to be emitted, each
>       pushing or popping one register.
>   - Implement the RPT flag in the extension word
>     + The RPT flag describes how many times an instruction should be
>       repeated. Up to 16 repeats are supported, and the repeat count can
>       be hard-coded into the extension word, or stored in a register
>       described by the extension word.
>     + This is mainly used for encoding shifts by amounts not supported
>       by the more compact R**M instructions.
>
> Check correctness of code generation using the GCC testsuite
> =============================================================>   -
I've used the Embecosm "gcc-for-llvm-testing"[1] repository to run
a
>     subset of GCC's execution tests on MSP430, using the Binutils/GDB
>     simulator. So far it doesn't seem like anything is critically
>     broken, but I need to do a full run of the suite and analyze the
>     results.
>
> In addition to above, I've also implemented ELF object attributes,
> currently awaiting review here: <https://reviews.llvm.org/D107969>
>
> Thanks,
> Jozef
>
> [1] <https://github.com/embecosm/gcc-for-llvm-testing>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



--
With best regards, Anton Korobeynikov
Department of Statistical Modelling, Saint Petersburg State University