Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/machine/i386/strchr.S')
-rw-r--r--newlib/libc/machine/i386/strchr.S172
1 files changed, 0 insertions, 172 deletions
diff --git a/newlib/libc/machine/i386/strchr.S b/newlib/libc/machine/i386/strchr.S
deleted file mode 100644
index 1d98b8149..000000000
--- a/newlib/libc/machine/i386/strchr.S
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * ====================================================
- * Copyright (C) 1998, 2002, 2008 by Red Hat Inc. All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
- #include "i386mach.h"
-
- .global SYM (strchr)
- SOTYPE_FUNCTION(strchr)
-
-SYM (strchr):
-
- pushl ebp
- movl esp,ebp
- pushl edi
- pushl ebx
- xorl ebx,ebx
- movl 8(ebp),edi
- addb 12(ebp),bl
-
-#ifndef __OPTIMIZE_SIZE__
-/* Special case strchr(p,0). */
- je L25
-
-/* Do byte-wise checks until string is aligned. */
- test $3,edi
- je L5
- movl edi,eax
- movb (eax),cl
- testb cl,cl
- je L14
- cmpb bl,cl
- je L19
- incl edi
-
- test $3,edi
- je L5
- movl edi,eax
- movb (eax),cl
- testb cl,cl
- je L14
- cmpb bl,cl
- je L19
- incl edi
-
- test $3,edi
- je L5
- movl edi,eax
- movb (eax),cl
- testb cl,cl
- je L14
- cmpb bl,cl
- je L19
- incl edi
-
-/* create 4 byte mask which is just the desired byte repeated 4 times */
-L5:
- movl ebx,ecx
- sall $8,ebx
- subl $4,edi
- orl ecx,ebx
- movl ebx,edx
- sall $16,ebx
- orl edx,ebx
-
-/* loop performing 4 byte mask checking for 0 byte or desired byte */
- .p2align 4,,7
-L10:
- addl $4,edi
- movl (edi),ecx
- leal -16843009(ecx),edx
- movl ecx,eax
- notl eax
- andl eax,edx
- testl $-2139062144,edx
- jne L9
-
- xorl ebx,ecx
- leal -16843009(ecx),edx
- notl ecx
- andl ecx,edx
- testl $-2139062144,edx
- je L10
-#endif /* not __OPTIMIZE_SIZE__ */
-
-/* loop while (*s && *s++ != c) */
-L9:
- leal -1(edi),eax
- .p2align 4,,7
-L15:
- incl eax
- movb (eax),dl
- testb dl,dl
- je L14
- cmpb bl,dl
- jne L15
-
-L14:
-/* if (*s == c) return address otherwise return NULL */
- cmpb bl,(eax)
- je L19
- xorl eax,eax
-
-L19:
- leal -8(ebp),esp
- popl ebx
- popl edi
- leave
- ret
-
-#ifndef __OPTIMIZE_SIZE__
-/* Special case strchr(p,0). */
-#if 0
- /* Hideous performance on modern machines. */
-L25:
- cld
- movl $-1,ecx
- xor eax,eax
- repnz
- scasb
- leal -1(edi),eax
- jmp L19
-#endif
-L25:
-/* Do byte-wise checks until string is aligned. */
- test $3,edi
- je L26
- movl edi,eax
- movb (eax),cl
- testb cl,cl
- je L19
- incl edi
-
- test $3,edi
- je L26
- movl edi,eax
- movb (eax),cl
- testb cl,cl
- je L19
- incl edi
-
- test $3,edi
- je L26
- movl edi,eax
- movb (eax),cl
- testb cl,cl
- je L19
- incl edi
-
-L26:
- subl $4,edi
-
-/* loop performing 4 byte mask checking for desired 0 byte */
- .p2align 4,,7
-L27:
- addl $4,edi
- movl (edi),ecx
- leal -16843009(ecx),edx
- movl ecx,eax
- notl eax
- andl eax,edx
- testl $-2139062144,edx
- je L27
-
- jmp L9
-
-#endif /* !__OPTIMIZE_SIZE__ */