summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine/i386/memchr.S
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/machine/i386/memchr.S')
-rw-r--r--newlib/libc/machine/i386/memchr.S114
1 files changed, 0 insertions, 114 deletions
diff --git a/newlib/libc/machine/i386/memchr.S b/newlib/libc/machine/i386/memchr.S
deleted file mode 100644
index 7639685be..000000000
--- a/newlib/libc/machine/i386/memchr.S
+++ /dev/null
@@ -1,114 +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 (memchr)
- SOTYPE_FUNCTION(memchr)
-
-SYM (memchr):
- pushl ebp
- movl esp,ebp
- pushl edi
- movzbl 12(ebp),eax
- movl 16(ebp),ecx
- movl 8(ebp),edi
-
- xorl edx,edx
- testl ecx,ecx
- jz L20
-
-#ifdef __OPTIMIZE_SIZE__
-
- cld
- repnz
- scasb
-
- setnz dl
- decl edi
-
-#else /* !__OPTIMIZE_SIZE__ */
-/* Do byte-wise checks until string is aligned. */
- testl $3,edi
- je L5
- cmpb (edi),al
- je L15
- incl edi
- decl ecx
- je L20
-
- testl $3,edi
- je L5
- cmpb (edi),al
- je L15
- incl edi
- decl ecx
- je L20
-
- testl $3,edi
- je L5
- cmpb (edi),al
- je L15
- incl edi
- decl ecx
- je L20
-
-/* Create a mask, then check a word at a time. */
-L5:
- movb al,ah
- movl eax,edx
- sall $16,edx
- orl edx,eax
- pushl ebx
-
- .p2align 4,,7
-L8:
- subl $4,ecx
- jc L9
- movl (edi),edx
- addl $4,edi
- xorl eax,edx
- leal -16843009(edx),ebx
- notl edx
- andl edx,ebx
- testl $-2139062144,ebx
- je L8
-
- subl $4,edi
-
-L9:
- popl ebx
- xorl edx,edx
- addl $4,ecx
- je L20
-
-/* Final byte-wise checks. */
- .p2align 4,,7
-L10:
- cmpb (edi),al
- je L15
- incl edi
- decl ecx
- jne L10
-
- xorl edi,edi
-
-#endif /* !__OPTIMIZE_SIZE__ */
-
-L15:
- decl edx
- andl edi,edx
-L20:
- movl edx,eax
-
- leal -4(ebp),esp
- popl edi
- leave
- ret