http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57177



             Bug #: 57177

           Summary: [SH] Improve integer division

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: enhancement

          Priority: P3

         Component: target

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: olege...@gcc.gnu.org

            Target: sh*-*-*





Currently integer division on SH is implemented with some optimized library

functions for 32 bit division only.  There are some data type combinations

where a more efficient implementation could be used.

E.g. "uint8_t / uint8_t -> uint8_t" can be implemented as:



        extu.b  r4,r4

        extu.b  r5,r5

        div0u

        shll8   r5

        div1    r5,r4

        div1    r5,r4

        div1    r5,r4

        div1    r5,r4

        div1    r5,r4

        div1    r5,r4

        div1    r5,r4

        div1    r5,r4

        rotcl   r4

        extu.b  r4,r0



which should be faster for such cases as the current division functions.

Some other interesting cases:

32 bit / 16 bit -> 16 bit

64 bit / 32 bit -> 32 bit

16 bit / 16 bit -> 16 bit



Small sequence such as above could also be expanded directly instead of using

library function calls.

Reply via email to