OSDN Git Service

sparc: remove sparc64/sparcv9 code
[uclinux-h8/uClibc.git] / libc / string / sparc / sparc64 / memchr.S
diff --git a/libc/string/sparc/sparc64/memchr.S b/libc/string/sparc/sparc64/memchr.S
deleted file mode 100644 (file)
index 6467f7f..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-/* memchr (str, ch, n) -- Return pointer to first occurrence of CH in STR less
-   than N.
-   For SPARC v9.
-   Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
-                  Jakub Jelinek <jj@ultra.linux.cz>.
-   This version is developed using the same algorithm as the fast C
-   version which carries the following introduction:
-   Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
-   with help from Dan Sahlin (dan@sics.se) and
-   commentary by Jim Blandy (jimb@ai.mit.edu);
-   adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
-   and implemented by Roland McGrath (roland@ai.mit.edu).
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <asm/asi.h>
-#ifndef XCC
-#define XCC xcc
-#define USE_BPR
-       .register       %g2, #scratch
-       .register       %g3, #scratch
-#endif
-
-       /* Normally, this uses
-          ((xword - 0x0101010101010101) & 0x8080808080808080) test
-          to find out if any byte in xword could be zero. This is fast, but
-          also gives false alarm for any byte in range 0x81-0xff. It does
-          not matter for correctness, as if this test tells us there could
-          be some zero byte, we check it byte by byte, but if bytes with
-          high bits set are common in the strings, then this will give poor
-          performance. You can #define EIGHTBIT_NOT_RARE and the algorithm
-          will use one tick slower, but more precise test
-          ((xword - 0x0101010101010101) & (~xword) & 0x8080808080808080),
-          which does not give any false alarms (but if some bits are set,
-          one cannot assume from it which bytes are zero and which are not).
-          It is yet to be measured, what is the correct default for glibc
-          in these days for an average user.
-        */
-
-       .text
-       .align          32
-ENTRY(memchr)
-       and             %o1, 0xff, %o1                  /* IEU0         Group           */
-#ifdef USE_BPR
-       brz,pn          %o2, 12f                        /* CTI+IEU1                     */
-#else
-       tst             %o2                             /* IEU1                         */
-       be,pn           %XCC, 12f                       /* CTI                          */
-#endif
-        sll            %o1, 8, %g3                     /* IEU0         Group           */
-       add             %o0, %o2, %o2                   /* IEU1                         */
-
-       sethi           %hi(0x01010101), %g1            /* IEU0         Group           */
-       or              %g3, %o1, %g3                   /* IEU1                         */
-       ldub            [%o0], %o3                      /* Load                         */
-       sllx            %g3, 16, %g5                    /* IEU0         Group           */
-
-       or              %g1, %lo(0x01010101), %g1       /* IEU1                         */
-       sllx            %g1, 32, %g2                    /* IEU0         Group           */
-       or              %g3, %g5, %g3                   /* IEU1                         */
-       sllx            %g3, 32, %g5                    /* IEU0         Group           */
-
-       cmp             %o3, %o1                        /* IEU1                         */
-       be,pn           %xcc, 13f                       /* CTI                          */
-        or             %g1, %g2, %g1                   /* IEU0         Group           */
-       andcc           %o0, 7, %g0                     /* IEU1                         */
-
-       bne,a,pn        %icc, 21f                       /* CTI                          */
-        add            %o0, 1, %o0                     /* IEU0         Group           */
-       ldx             [%o0], %o3                      /* Load         Group           */
-       sllx            %g1, 7, %g2                     /* IEU0                         */
-
-       or              %g3, %g5, %g3                   /* IEU1                         */
-1:     add             %o0, 8, %o0                     /* IEU0         Group           */
-       xor             %o3, %g3, %o4                   /* IEU1                         */
-                                                       /* %g1 = 0101010101010101       *
-                                                        * %g2 = 8080088080808080       *
-                                                        * %g3 =  c c c c c c c c       *
-                                                        * %o3 =      value             *
-                                                        * %o4 =   value XOR c          */
-2:     cmp             %o0, %o2                        /* IEU1         Group           */
-
-       bg,pn           %XCC, 11f                       /* CTI                          */
-        ldxa           [%o0] ASI_PNF, %o3              /* Load                         */
-       sub             %o4, %g1, %o5                   /* IEU0         Group           */
-       add             %o0, 8, %o0                     /* IEU1                         */
-#ifdef EIGHTBIT_NOT_RARE
-       andn            %o5, %o4, %o5                   /* IEU0         Group           */
-#endif
-
-       andcc           %o5, %g2, %g0                   /* IEU1         Group           */
-       be,a,pt         %xcc, 2b                        /* CTI                          */
-        xor            %o3, %g3, %o4                   /* IEU0                         */
-       srlx            %o4, 56, %g5                    /* IEU0                         */
-
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 3f                        /* CTI                          */
-        srlx           %o4, 48, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-
-       be,pn           %icc, 4f                        /* CTI                          */
-        srlx           %o4, 40, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 5f                        /* CTI                          */
-
-        srlx           %o4, 32, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 6f                        /* CTI                          */
-        srlx           %o4, 24, %g5                    /* IEU0                         */
-
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 7f                        /* CTI                          */
-        srlx           %o4, 16, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-
-       be,pn           %icc, 8f                        /* CTI                          */
-        srlx           %o4, 8, %g5                     /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 9f                        /* CTI                          */
-
-        andcc          %o4, 0xff, %g0                  /* IEU1         Group           */
-       bne,pt          %icc, 2b                        /* CTI                          */
-        xor            %o3, %g3, %o4                   /* IEU0                         */
-       retl                                            /* CTI+IEU1     Group           */
-
-        add            %o0, -9, %o0                    /* IEU0                         */
-
-       .align          16
-3:     retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -16, %o0                   /* IEU0                         */
-4:     retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -15, %o0                   /* IEU0                         */
-
-5:     retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -14, %o0                   /* IEU0                         */
-6:     retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -13, %o0                   /* IEU0                         */
-
-7:     retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -12, %o0                   /* IEU0                         */
-8:     retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -11, %o0                   /* IEU0                         */
-
-9:     retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -10, %o0                   /* IEU0                         */
-11:    sub             %o4, %g1, %o5                   /* IEU0         Group           */
-       sub             %o0, 8, %o0                     /* IEU1                         */
-
-       andcc           %o5, %g2, %g0                   /* IEU1         Group           */
-       be,pt           %xcc, 12f                       /* CTI                          */
-        sub            %o2, %o0, %o2                   /* IEU0                         */
-       tst             %o2                             /* IEU1         Group           */
-
-       be,pn           %XCC, 12f                       /* CTI                          */
-        srlx           %o4, 56, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 13f                       /* CTI                          */
-
-        cmp            %o2, 1                          /* IEU0                         */
-       be,pn           %XCC, 12f                       /* CTI          Group           */
-        srlx           %o4, 48, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-
-       be,pn           %icc, 14f                       /* CTI                          */
-        cmp            %o2, 2                          /* IEU1         Group           */
-       be,pn           %XCC, 12f                       /* CTI                          */
-        srlx           %o4, 40, %g5                    /* IEU0                         */
-
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 15f                       /* CTI                          */
-        cmp            %o2, 3                          /* IEU1         Group           */
-       be,pn           %XCC, 12f                       /* CTI                          */
-
-        srlx           %o4, 32, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 16f                       /* CTI                          */
-        cmp            %o2, 4                          /* IEU1         Group           */
-
-       be,pn           %XCC, 12f                       /* CTI                          */
-        srlx           %o4, 24, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 17f                       /* CTI                          */
-
-        cmp            %o2, 5                          /* IEU1         Group           */
-       be,pn           %XCC, 12f                       /* CTI                          */
-        srlx           %o4, 16, %g5                    /* IEU0                         */
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-
-       be,pn           %icc, 18f                       /* CTI                          */
-        cmp            %o2, 6                          /* IEU1         Group           */
-       be,pn           %XCC, 12f                       /* CTI                          */
-        srlx           %o4, 8, %g5                     /* IEU0                         */
-
-       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
-       be,pn           %icc, 19f                       /* CTI                          */
-        nop                                            /* IEU0                         */
-12:    retl                                            /* CTI+IEU1     Group           */
-
-        clr            %o0                             /* IEU0                         */
-       nop                                             /* Stub                         */
-13:    retl                                            /* CTI+IEU1     Group           */
-        nop                                            /* IEU0                         */
-
-14:    retl                                            /* CTI+IEU1     Group           */
-        add            %o0, 1, %o0                     /* IEU0                         */
-15:    retl                                            /* CTI+IEU1     Group           */
-        add            %o0, 2, %o0                     /* IEU0                         */
-
-16:    retl                                            /* CTI+IEU1     Group           */
-        add            %o0, 3, %o0                     /* IEU0                         */
-17:    retl                                            /* CTI+IEU1     Group           */
-        add            %o0, 4, %o0                     /* IEU0                         */
-
-18:    retl                                            /* CTI+IEU1     Group           */
-        add            %o0, 5, %o0                     /* IEU0                         */
-19:    retl                                            /* CTI+IEU1     Group           */
-        add            %o0, 6, %o0                     /* IEU0                         */
-
-21:    cmp             %o0, %o2                        /* IEU1                         */
-       be,pn           %XCC, 12b                       /* CTI                          */
-        sllx           %g1, 7, %g2                     /* IEU0         Group           */
-       ldub            [%o0], %o3                      /* Load                         */
-
-       or              %g3, %g5, %g3                   /* IEU1                         */
-22:    andcc           %o0, 7, %g0                     /* IEU1         Group           */
-       be,a,pn         %icc, 1b                        /* CTI                          */
-        ldx            [%o0], %o3                      /* Load                         */
-
-       cmp             %o3, %o1                        /* IEU1         Group           */
-       be,pn           %xcc, 23f                       /* CTI                          */
-        add            %o0, 1, %o0                     /* IEU0                         */
-       cmp             %o0, %o2                        /* IEU1         Group           */
-
-       bne,a,pt        %XCC, 22b                       /* CTI                          */
-        ldub           [%o0], %o3                      /* Load                         */
-       retl                                            /* CTI+IEU1     Group           */
-        clr            %o0                             /* IEU0                         */
-
-23:    retl                                            /* CTI+IEU1     Group           */
-        add            %o0, -1, %o0                    /* IEU0                         */
-END(memchr)
-
-libc_hidden_def(memchr)
-weak_alias(memchr,__ubp_memchr)