This is the mail archive of the gcc-bugs@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]

[Bug target/50814] New: SH Target: SHAD / SHLD instructions not used on SH2A


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...


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