This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Improve additions involving SP on Thumb-1


On Tue, 2010-07-20 at 01:36 +0200, Bernd Schmidt wrote:
> Thumb-1 supports a range of up to 1020 for add insns of the form
> 
>   add rn, sp, #1020
> 
> If the constant is somewhat larger, we can do it with a sequence of two
> adds, which is better than the available alternatives:
> 
> -       ldr     r4, .L64+12
> -       add     r4, r4, sp
> +       add     r4, sp, #1020
> +       add     r4, r4, #224
> 
> or
> 
> -       mov     r0, #156
> -       lsl     r0, r0, #3
> -       add     r0, r0, sp
> +       add     r0, sp, #1020
> +       add     r0, r0, #228
> 
> It's conceivable that we might even prefer a three-insn add sequence
> over either of these alternatives, but the following patch doesn't do this.
> 
> Regression tested on arm-linux, with one extra timeout (which comes and
> goes - it went away vs. baseline for a different set of compiler flags).
>  Ok?
> 
> 
> Bernd

Please also update the list of multi-list constants in the comment near
the start of constraints.md.

OK with that change.

R.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]