From 5905e7b3e29139dbef84c065ca39315485f497e1 Mon Sep 17 00:00:00 2001 From: Ondřej Bílka Date: Wed, 11 Sep 2013 17:07:38 +0200 Subject: Faster strchr implementation. --- sysdeps/x86_64/strchrnul.S | 41 +++-------------------------------------- 1 file changed, 3 insertions(+), 38 deletions(-) (limited to 'sysdeps/x86_64/strchrnul.S') diff --git a/sysdeps/x86_64/strchrnul.S b/sysdeps/x86_64/strchrnul.S index d8c345ba7d..bceeb61875 100644 --- a/sysdeps/x86_64/strchrnul.S +++ b/sysdeps/x86_64/strchrnul.S @@ -20,43 +20,8 @@ #include - - .text -ENTRY (__strchrnul) - movd %esi, %xmm1 - movq %rdi, %rcx - punpcklbw %xmm1, %xmm1 - andq $~15, %rdi - pxor %xmm2, %xmm2 - punpcklbw %xmm1, %xmm1 - orl $0xffffffff, %esi - movdqa (%rdi), %xmm0 - pshufd $0, %xmm1, %xmm1 - subq %rdi, %rcx - movdqa %xmm0, %xmm3 - leaq 16(%rdi), %rdi - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm3 - shl %cl, %esi - pmovmskb %xmm0, %edx - pmovmskb %xmm3, %ecx - orl %edx, %ecx - andl %esi, %ecx - jnz 1f - -2: movdqa (%rdi), %xmm0 - leaq 16(%rdi), %rdi - movdqa %xmm0, %xmm3 - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm3 - pmovmskb %xmm0, %edx - pmovmskb %xmm3, %ecx - orl %edx, %ecx - jz 2b - -1: bsfl %ecx, %edx - leaq -16(%rdi,%rdx), %rax - ret -END (__strchrnul) +#define strchr __strchrnul +#define AS_STRCHRNUL +#include "strchr.S" weak_alias (__strchrnul, strchrnul) -- cgit 1.4.1