Oleg Endo <oleg.e...@t-online.de> wrote:
> This patch does two things...
> 
> 1) The dynamic shift cost is set to be the same if HW dynamic shifts are
> available.  This improves code size for SH2A a little (-2 KByte on CSiBE
> for -m2a-single -O2).
> 
> 2) Improve code around library function calls for software dynamic
> shifts (logical right + left shifts only for now).
> For this I had to change the implementations of ashlsi3 and lshrsi3 in
> lib1funcs.S, but  the changes are backwards compatible with older
> binaries.  Due to the additional branch insn in the dyn shift functions
> they might be one or two cycles slower than the original, but this
> reduces the amount of clobbered regs and cuts 9.5 KByte in the CSiBE set
> (-m2 -ml -O2), which seems more beneficial to do on average.
> 
> Tested on rev. 190990 with
> make -k check RUNTESTFLAGS="--target_board=sh-sim
> \{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}"
> 
> and no new failures except for this one on SH2:
> 
> FAIL: gcc.dg/pr28402.c scan-assembler-not __[a-z]*si3
> 
> The reason for this is that now the middle-end will expand DImode shifts
> as SImode shifts instead of a DImode shift library call, because it sees
> the new SImode dynamic library call shift patterns for SH2.  I will have
> a look at this issue later to see if it is beneficial to do special
> handling of DImode shifts on SH2.
> 
> OK to install?

OK.

Regards,
        kaz

Reply via email to