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

Jozef Lawrynowicz via llvm-dev llvm-dev at lists.llvm.org
Mon Aug 16 01:07:21 PDT 2021


On Sun, Aug 15, 2021 at 10:33:38PM +0500, Anton Korobeynikov wrote:
> Thanks, Josef!

Hi Anton,

> 
> 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).

Thanks for offering to review the MSP430 patches, it's much appreciated.

Jozef

> 
> 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


More information about the llvm-dev mailing list