[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r9655 - in /fsf/trunk/libc: ChangeLog stdlib/stdlib.h sysdeps/x86_64/multiarch/strlen.S
- To: commits@xxxxxxxxxx
- Subject: [commits] r9655 - in /fsf/trunk/libc: ChangeLog stdlib/stdlib.h sysdeps/x86_64/multiarch/strlen.S
- From: eglibc@xxxxxxxxxx
- Date: Thu, 14 Jan 2010 08:03:09 -0000
Author: eglibc
Date: Thu Jan 14 00:03:08 2010
New Revision: 9655
Log:
Import glibc-mainline for 2010-01-14
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/stdlib/stdlib.h
fsf/trunk/libc/sysdeps/x86_64/multiarch/strlen.S
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu Jan 14 00:03:08 2010
@@ -1,3 +1,15 @@
+2010-01-13 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * stdlib/stdlib.h: Parameter of unsetenv must not be NULL.
+
+2010-01-12 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/x86_64/multiarch/strlen.S: Unroll the loop.
+
+2010-01-13 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * stdlib/stdlib.h: Be a bit more relaxed about obsoleted mktemp symbol.
+
2010-01-12 Ulrich Drepper <drepper@xxxxxxxxxx>
* conform/data/complex.h-data: Test for POSIX2008.
Modified: fsf/trunk/libc/stdlib/stdlib.h
==============================================================================
--- fsf/trunk/libc/stdlib/stdlib.h (original)
+++ fsf/trunk/libc/stdlib/stdlib.h Thu Jan 14 00:03:08 2010
@@ -586,7 +586,7 @@
__THROW __nonnull ((2));
/* Remove the variable NAME from the environment. */
-extern int unsetenv (__const char *__name) __THROW;
+extern int unsetenv (__const char *__name) __THROW __nonnull ((1));
#endif
#ifdef __USE_MISC
@@ -597,8 +597,8 @@
#endif
-#if ((defined __USE_MISC || defined __USE_XOPEN_EXTENDED) \
- && !defined __USE_XOPEN2K) || defined __USE_GNU
+#if defined __USE_MISC \
+ || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K)
/* Generate a unique temporary file name from TEMPLATE.
The last six characters of TEMPLATE must be "XXXXXX";
they are replaced with a string that makes the file name unique.
Modified: fsf/trunk/libc/sysdeps/x86_64/multiarch/strlen.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/strlen.S (original)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/strlen.S Thu Jan 14 00:03:08 2010
@@ -46,28 +46,58 @@
__strlen_sse42:
cfi_startproc
CALL_MCOUNT
- pxor %xmm2, %xmm2
- movq %rdi, %rcx
+ pxor %xmm1, %xmm1
+ movl %edi, %ecx
movq %rdi, %r8
andq $~15, %rdi
- movdqa %xmm2, %xmm1
- pcmpeqb (%rdi), %xmm2
- orl $0xffffffff, %esi
- subq %rdi, %rcx
- shll %cl, %esi
- pmovmskb %xmm2, %edx
- andl %esi, %edx
- jnz 1f
+ xor %edi, %ecx
+ pcmpeqb (%rdi), %xmm1
+ pmovmskb %xmm1, %edx
+ shrl %cl, %edx
+ shll %cl, %edx
+ andl %edx, %edx
+ jnz L(less16bytes)
+ pxor %xmm1, %xmm1
-2: pcmpistri $0x08, 16(%rdi), %xmm1
- leaq 16(%rdi), %rdi
- jnz 2b
+ .p2align 4
+L(more64bytes_loop):
+ pcmpistri $0x08, 16(%rdi), %xmm1
+ jz L(more32bytes)
+ pcmpistri $0x08, 32(%rdi), %xmm1
+ jz L(more48bytes)
+
+ pcmpistri $0x08, 48(%rdi), %xmm1
+ jz L(more64bytes)
+
+ add $64, %rdi
+ pcmpistri $0x08, (%rdi), %xmm1
+ jnz L(more64bytes_loop)
leaq (%rdi,%rcx), %rax
subq %r8, %rax
ret
-1: subq %r8, %rdi
+ .p2align 4
+L(more32bytes):
+ leaq 16(%rdi,%rcx, 1), %rax
+ subq %r8, %rax
+ ret
+
+ .p2align 4
+L(more48bytes):
+ leaq 32(%rdi,%rcx, 1), %rax
+ subq %r8, %rax
+ ret
+
+ .p2align 4
+L(more64bytes):
+ leaq 48(%rdi,%rcx, 1), %rax
+ subq %r8, %rax
+ ret
+
+ .p2align 4
+L(less16bytes):
+ subq %r8, %rdi
bsfl %edx, %eax
addq %rdi, %rax
ret