1 /* strchr with SSE2 without bsf
2 Copyright (C) 2011-2024 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 <https://www.gnu.org/licenses/>. */
19 #include <isa-level.h>
21 /* NB: atom builds with ISA level == 1 so no reason to hold onto this
23 #if ISA_SHOULD_BUILD (1)
26 # include "asm-syntax.h"
29 ENTRY (__strchr_sse2_no_bsf)
32 punpcklbw %xmm1, %xmm1
35 punpcklbw %xmm1, %xmm1
38 pshufd $0, %xmm1, %xmm1
76 /* There is a match. First find where NULL is. */
84 jz L(match_high_case2)
133 jnz L(match_case2_12)
174 jz L(match_high_case1)
282 END (__strchr_sse2_no_bsf)