* config/avr/avr-protos.h (avr_output_bld): New. (out_shift_with_cnt): Add t_len argument. * config/avr/avr.c (avr_num_arg_regs): Remove -mpack-args. (output_movqi, output_movhi, output_movsisf): Optimize loading any constant with exactly one bit set to NO_LD_REGS. (out_shift_with_cnt): Optimize output code for size or speed, depending on optimize_size. Handle small shift counts as well (if not hand-optimized in ?sh??i3_out). Shifts can be done with or without a scratch register, with help of __tmp_reg__ or __zero_reg__ if necessary. Add T_LEN argument to pass the length of TEMPLATE in words, return total insn length in *LEN. (ashlqi3_out, ashrqi3_out, lshrqi3_out): Change all calls to out_shift_with_cnt to work with the above change. (ashlhi3_out, ashlsi3_out, ashrhi3_out, ashrsi3_out, lshrhi3_out, lshrsi3_out): Likewise. Optimize more known shift count cases. Remove cases already well optimized in out_shift_with_cnt. (avr_output_bld): New function. * config/avr/avr.h (MASK_PACK_ARGS, TARGET_PACK_ARGS): Remove. (TARGET_SWITCHES): Remove -mpack-args backward compatibility. * config/avr/avr.md (*reload_inqi, *reload_inhi, *reload_insi): Add reload_completed to insn condition - only for peepholes. (ashlqi3, ashrqi3, lshrqi3): Correct insn length for shift counts in a register or memory. (ashlhi3, ashlsi3, ashrhi3, ashrsi3, lshrhi3, lshrsi3): Likewise. Do not require a scratch register. (*ashlhi3_const, *ashlsi3_const, *ashrhi3_const, *ashrsi3_const, *lshrhi3_const, *lshrsi3_const): New insns and matching peepholes. Optimize shifts by known count using a scratch register, but only if one is still available after register allocation. From-SVN: r36963
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
1750a | Loading commit data... | |
a29k | Loading commit data... | |
alpha | Loading commit data... | |
arc | Loading commit data... | |
arm | Loading commit data... | |
avr | Loading commit data... | |
c4x | Loading commit data... | |
clipper | Loading commit data... | |
convex | Loading commit data... | |
d30v | Loading commit data... | |
dsp16xx | Loading commit data... | |
elxsi | Loading commit data... | |
fr30 | Loading commit data... | |
h8300 | Loading commit data... | |
i370 | Loading commit data... | |
i386 | Loading commit data... | |
i860 | Loading commit data... | |
i960 | Loading commit data... | |
ia64 | Loading commit data... | |
m32r | Loading commit data... | |
m68hc11 | Loading commit data... | |
m68k | Loading commit data... | |
m88k | Loading commit data... | |
mcore | Loading commit data... | |
mips | Loading commit data... | |
mn10200 | Loading commit data... | |
mn10300 | Loading commit data... | |
msdos | Loading commit data... | |
ns32k | Loading commit data... | |
pa | Loading commit data... | |
pdp11 | Loading commit data... | |
pj | Loading commit data... | |
romp | Loading commit data... | |
rs6000 | Loading commit data... | |
sh | Loading commit data... | |
sparc | Loading commit data... | |
v850 | Loading commit data... | |
vax | Loading commit data... | |
we32k | Loading commit data... | |
winnt | Loading commit data... | |
README | Loading commit data... | |
aoutos.h | Loading commit data... | |
dbx.h | Loading commit data... | |
dbxcoff.h | Loading commit data... | |
dbxelf.h | Loading commit data... | |
elfos.h | Loading commit data... | |
float-c4x.h | Loading commit data... | |
float-i128.h | Loading commit data... | |
float-i32.h | Loading commit data... | |
float-i386.h | Loading commit data... | |
float-i64.h | Loading commit data... | |
float-m68k.h | Loading commit data... | |
float-sh.h | Loading commit data... | |
float-sparc.h | Loading commit data... | |
float-vax.h | Loading commit data... | |
fp-bit.c | Loading commit data... | |
fp-bit.h | Loading commit data... | |
freebsd.h | Loading commit data... | |
gnu.h | Loading commit data... | |
gofast.h | Loading commit data... | |
interix.h | Loading commit data... | |
libgcc-glibc.ver | Loading commit data... | |
libgloss.h | Loading commit data... | |
linux-aout.h | Loading commit data... | |
linux.h | Loading commit data... | |
lynx-ng.h | Loading commit data... | |
lynx.h | Loading commit data... | |
netbsd.h | Loading commit data... | |
netware.h | Loading commit data... | |
nextstep.c | Loading commit data... | |
nextstep.h | Loading commit data... | |
nextstep21.h | Loading commit data... | |
openbsd.h | Loading commit data... | |
psos.h | Loading commit data... | |
ptx4.h | Loading commit data... | |
rtems.h | Loading commit data... | |
svr3.h | Loading commit data... | |
svr4.h | Loading commit data... | |
t-freebsd | Loading commit data... | |
t-freebsd-thread | Loading commit data... | |
t-gnu | Loading commit data... | |
t-install-cpp | Loading commit data... | |
t-libc-ok | Loading commit data... | |
t-linux | Loading commit data... | |
t-linux-aout | Loading commit data... | |
t-linux-gnulibc1 | Loading commit data... | |
t-netbsd | Loading commit data... | |
t-openbsd | Loading commit data... | |
t-openbsd-thread | Loading commit data... | |
t-rtems | Loading commit data... | |
t-svr4 | Loading commit data... | |
tm-dwarf2.h | Loading commit data... | |
x-interix | Loading commit data... | |
x-linux | Loading commit data... | |
x-linux-aout | Loading commit data... | |
x-lynx | Loading commit data... | |
x-svr4 | Loading commit data... | |
xm-alloca.h | Loading commit data... | |
xm-freebsd.h | Loading commit data... | |
xm-gnu.h | Loading commit data... | |
xm-interix.h | Loading commit data... | |
xm-linux.h | Loading commit data... | |
xm-lynx.h | Loading commit data... | |
xm-openbsd.h | Loading commit data... | |
xm-std32.h | Loading commit data... | |
xm-svr3.h | Loading commit data... | |
xm-svr4.h | Loading commit data... |