1 /* strcmp with unaligned loads
2 Copyright (C) 2013-2015 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
23 ENTRY ( __strcmp_sse2_unaligned)
42 movzbl (%rdi, %rdx), %eax
43 movzbl (%rsi, %rdx), %edx
49 movdqu 16(%rdi), %xmm6
50 movdqu 16(%rsi), %xmm3
51 movdqu 32(%rdi), %xmm5
53 movdqu 32(%rsi), %xmm2
56 movdqu 48(%rdi), %xmm4
59 movdqu 48(%rsi), %xmm0
80 leaq (%rdi, %rdx), %rax
99 movdqu 16(%rdx), %xmm1
101 movdqa 16(%rax), %xmm3
103 movdqu 32(%rdx), %xmm5
106 movdqu 48(%rdx), %xmm6
108 movdqa 32(%rax), %xmm2
110 movdqa 48(%rax), %xmm3
140 movzbl (%rax, %rcx), %eax
141 movzbl (%rdx, %rcx), %edx
152 movdqa (%rdx, %r10), %xmm0
153 movdqa 16(%rdx, %r10), %xmm1
154 movdqu (%rax, %r10), %xmm2
155 movdqu 16(%rax, %r10), %xmm3
157 movdqa 32(%rdx, %r10), %xmm5
160 movdqa 48(%rdx, %r10), %xmm6
162 movdqu 32(%rax, %r10), %xmm2
163 movdqu 48(%rax, %r10), %xmm3
190 movzbl (%rax, %rcx), %eax
191 movzbl (%rdx, %rcx), %edx
201 je L(main_loop_header)
203 movzbl (%rdi, %rdx), %eax
204 movzbl (%rsi, %rdx), %ecx
206 jne L(cross_page_loop)
211 END (__strcmp_sse2_unaligned)