2 Copyright (C) 2011-2016 Free Software Foundation, Inc.
3 Contributed by Intel Corporation.
4 This file is part of the GNU C Library.
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
27 punpckldq %xmm1, %xmm1
29 punpckldq %xmm1, %xmm1
42 jnz L(unaligned_match1)
54 jnz L(prolog_find_zero_1)
76 jnz L(unaligned_match)
87 jnz L(prolog_find_zero)
90 lea (%rdi, %rcx), %rsi
92 /* Loop start on aligned string. */
142 jnz L(match_fourth_wchar)
144 jnz L(match_third_wchar)
146 jnz L(match_second_wchar)
162 jnz L(find_zero_in_first_wchar)
164 jnz L(find_zero_in_second_wchar)
166 jnz L(find_zero_in_third_wchar)
168 and $1 << 13 - 1, %rax
172 jnz L(match_fourth_wchar)
174 jnz L(match_third_wchar)
176 jnz L(match_second_wchar)
181 L(find_zero_in_first_wchar):
188 L(find_zero_in_second_wchar):
189 and $1 << 5 - 1, %rax
193 jnz L(match_second_wchar)
198 L(find_zero_in_third_wchar):
199 and $1 << 9 - 1, %rax
203 jnz L(match_third_wchar)
205 jnz L(match_second_wchar)
213 L(prolog_find_zero_1):
215 jnz L(prolog_find_zero_in_first_wchar)
217 jnz L(prolog_find_zero_in_second_wchar)
219 jnz L(prolog_find_zero_in_third_wchar)
221 and $1 << 13 - 1, %rax
225 jnz L(match_fourth_wchar)
227 jnz L(match_third_wchar)
229 jnz L(match_second_wchar)
234 L(prolog_find_zero_in_first_wchar):
241 L(prolog_find_zero_in_second_wchar):
242 and $1 << 5 - 1, %rax
246 jnz L(match_second_wchar)
251 L(prolog_find_zero_in_third_wchar):
252 and $1 << 9 - 1, %rax
256 jnz L(match_third_wchar)
258 jnz L(match_second_wchar)
263 L(match_second_wchar):
268 L(match_third_wchar):
273 L(match_fourth_wchar):