[Bug target/50814] New: SH Target: SHAD / SHLD instructions not used on SH2A
oleg.endo@t-online.de
gcc-bugzilla@gcc.gnu.org
Thu Oct 20 20:48:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50814
Bug #: 50814
Summary: SH Target: SHAD / SHLD instructions not used on SH2A
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: oleg.endo@t-online.de
CC: kkojima@gcc.gnu.org
Target: sh2a-*-*
Although there are some insns (e.g. ashlsi3_sh2a) that are supposed to handle
dynamic shifts on SH2A, somehow the dynamic shift instructions SHAD and SHLD
are never generated, no matter what the shift amount is.
int x_shad_right (int y)
{
return y >> 15;
}
mov.l .L6,r1
sts.l pr,@-r15
jsr @r1
nop
mov r4,r0
lds.l @r15+,pr
rts/n
.align 2
.L6:
.long ___ashiftrt_r4_15
int x_shad_left (int y)
{
return y << 15;
}
mov r4,r0
shll8 r0
shlr r0
rts
shll8 r0
Using built-in specs.
COLLECT_GCC=sh-elf-gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/sh-elf/4.7.0/lto-wrapper
Target: sh-elf
Configured with: ../gcc-trunk/configure --target=sh-elf --prefix=/usr/local
--enable-languages=c,c++ --enable-multilib --disable-libssp --disable-nls
--disable-werror --enable-lto --with-newlib --with-gnu-as --with-gnu-ld
--with-system-zlib
Thread model: single
gcc version 4.7.0 20111020 (experimental) (GCC)
It is also not clear to me why SH2A seems to require different handling for
dynamic shifts than SH3 or SH4...
More information about the Gcc-bugs
mailing list