On 6/4/19 7:17 AM, Jozef Lawrynowicz wrote:
> This patch implements 64-bit shifts in assembly code. Previously, generic C
> library code from libgcc would be used to perform the shifts, which was much
> more costly in terms of code size.
> 
> I observed 700 PASS->FAIL regressions from the GCC testsuite alone when these
> 64-bit shifts were implemented incorrectly, hence I've assumed there is
> already adequate test coverage that shifts operate correctly, and I have not
> added new tests to verify their correct execution.
> 
> For the following program, the below code size reduction is observed:
>   long long a;
> 
>   int
>   main (void)
>   {
>     a = a >> 4;
>     return 0;
>   }
> 
> With shift patch 3:
>    text    data     bss     dec     hex filename
>     670      12      26     708     2c4 a.out
> With new patch:
>    text    data     bss     dec     hex filename
>     512      12      26     550     226 a.out
> 
> Ok for trunk?
> 
> 
> 0004-MSP430-Implement-64-bit-shifts-in-assembly-code.patch
> 
> From 3b34b3d005ea63b37cf6a277395a048e55d854b2 Mon Sep 17 00:00:00 2001
> From: Jozef Lawrynowicz <joze...@mittosystems.com>
> Date: Mon, 13 May 2019 17:55:27 +0100
> Subject: [PATCH 4/4] MSP430: Implement 64-bit shifts in assembly code
> 
> gcc/ChangeLog
> 
> 2019-06-04  Jozef Lawrynowicz  <joze...@mittosystems.com>
> 
>       * config/msp430/msp430.c (msp430_expand_helper): Setup arguments which
>       describe how to perform MSPABI compliant 64-bit shift.
>       * config/msp430/msp430.md (ashldi3): New define_expand.
>       (ashrdi3): New define_expand.
>       (lshrdi3): New define_expand.
> 
> libgcc/ChangeLog
> 
> 2019-06-04  Jozef Lawrynowicz  <joze...@mittosystems.com>
> 
>       * config/msp430/slli.S (__mspabi_sllll): New library function for
>       performing a logical left shift of a 64-bit value.
>       (__mspabi_srall): New library function for
>       performing a arithmetic right shift of a 64-bit value.
>       (__mspabi_srlll): New library function for
>       performing a logical right shift of a 64-bit value.
> 
> gcc/testsuite/ChangeLog
> 
> 2019-06-04  Jozef Lawrynowicz  <joze...@mittosystems.com>
> 
>       * gcc.target/msp430/mspabi_sllll.c: New test.
>       * gcc.target/msp430/mspabi_srall.c: New test.
>       * gcc.target/msp430/mspabi_srlll.c: New test.
Going to assume your assembly routines are correct :-)

OK
jeff

Reply via email to