[PATCH][MSP430][0/4] Reduce code size when performing bit shifts
Jozef Lawrynowicz
jozef.l@mittosystems.com
Tue Jun 4 13:03:00 GMT 2019
The following series of patches reduces the code size of MSP430 programs that
make use of bit shifts.
The MSP430 does not have a native instruction for shifting integers, but in
some cases the native rotate instruction can be substituted. In other cases,
assembly code in libgcc is used to emulate the shift.
Successfully regtested the changes with the GCC and G++ testsuites for
msp430-elf, in both the small and large memory models.
I've included some details about the achieved code size reduction in the
individual patch submissions.
Ok for trunk?
jozefl (4):
Put libgcc shift functions in their own sections
Emulate 16-bit shifts with rotate insn when src operand is originally in
memory
Disable performance optimal library code shifts when optimizing for size
Implement 64-bit shifts in assembly code
gcc/config/msp430/msp430.c | 13 ++++-
gcc/config/msp430/msp430.md | 66 ++++++++++++++++++----
gcc/testsuite/gcc.target/msp430/emulate-slli.c | 15 +++++
gcc/testsuite/gcc.target/msp430/emulate-srai.c | 15 +++++
gcc/testsuite/gcc.target/msp430/emulate-srli.c | 15 +++++
gcc/testsuite/gcc.target/msp430/mspabi_sllll.c | 10 ++++
gcc/testsuite/gcc.target/msp430/mspabi_srall.c | 10 ++++
gcc/testsuite/gcc.target/msp430/mspabi_srlll.c | 10 ++++
.../gcc.target/msp430/size-optimized-shifts.c | 26 +++++++++
libgcc/config/msp430/slli.S | 41 +++++++++++++-
libgcc/config/msp430/srai.S | 42 +++++++++++++-
libgcc/config/msp430/srli.S | 43 +++++++++++++-
12 files changed, 286 insertions(+), 20 deletions(-)
More information about the Gcc-patches
mailing list