OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [arch/] [sparc/] [lib/] [strncmp.S] - Rev 1773

Go to most recent revision | Compare with Previous | Blame | View Log

/* $Id: strncmp.S,v 1.1.1.1 2004-04-15 01:33:09 phoenix Exp $
 * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
 *            generic strncmp routine.
 */

#include <asm/cprefix.h>

        .text
        .align 4
        .global C_LABEL(__strncmp), C_LABEL(strncmp)
C_LABEL(__strncmp):
C_LABEL(strncmp):
        mov     %o0, %g3
        mov     0, %o3

        cmp     %o2, 3
        ble     7f
         mov    0, %g2

        sra     %o2, 2, %o4
        ldub    [%g3], %o3

0:
        ldub    [%o1], %g2
        add     %g3, 1, %g3
        and     %o3, 0xff, %o0

        cmp     %o0, 0
        be      8f
         add    %o1, 1, %o1

        cmp     %o0, %g2
        be,a    1f
         ldub   [%g3], %o3

        retl
         sub    %o0, %g2, %o0

1:
        ldub    [%o1], %g2
        add     %g3,1, %g3
        and     %o3, 0xff, %o0

        cmp     %o0, 0
        be      8f
         add    %o1, 1, %o1

        cmp     %o0, %g2
        be,a    1f
         ldub   [%g3], %o3

        retl
         sub    %o0, %g2, %o0

1:
        ldub    [%o1], %g2
        add     %g3, 1, %g3
        and     %o3, 0xff, %o0

        cmp     %o0, 0
        be      8f
         add    %o1, 1, %o1

        cmp     %o0, %g2
        be,a    1f
         ldub   [%g3], %o3

        retl
         sub    %o0, %g2, %o0

1:
        ldub    [%o1], %g2
        add     %g3, 1, %g3
        and     %o3, 0xff, %o0

        cmp     %o0, 0
        be      8f
         add    %o1, 1, %o1

        cmp     %o0, %g2
        be      1f
         add    %o4, -1, %o4

        retl
         sub    %o0, %g2, %o0

1:

        cmp     %o4, 0
        bg,a    0b
         ldub   [%g3], %o3

        b       7f
         and    %o2, 3, %o2

9:
        ldub    [%o1], %g2
        add     %g3, 1, %g3
        and     %o3, 0xff, %o0

        cmp     %o0, 0
        be      8f
         add    %o1, 1, %o1

        cmp     %o0, %g2
        be      7f
         add    %o2, -1, %o2

8:
        retl
         sub    %o0, %g2, %o0

7:
        cmp     %o2, 0
        bg,a    9b
         ldub   [%g3], %o3

        and     %g2, 0xff, %o0
        retl
         sub    %o3, %o0, %o0

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.