1 /* Optimized strcasestr implementation for POWER8.
2 Copyright (C) 2016-2017 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/>. */
22 #define EALIGN(name, alignt, words) \
24 ENTRY_2(__strcasestr_power8) \
25 .align ALIGNARG(alignt); \
27 BODY_LABEL(__strcasestr_power8): \
29 LOCALENTRY(__strcasestr_power8)
34 TRACEBACK(__strcasestr_power8) \
35 END_2(__strcasestr_power8)
37 #undef libc_hidden_builtin_def
38 #define libc_hidden_builtin_def(name)
40 /* The following definitions are used in strcasestr optimization. */
42 /* strlen is used to calculate len of r4. */
43 #define STRLEN __strlen_power8
44 /* strnlen is used to check if len of r3 is more than r4. */
45 #define STRNLEN __strnlen_power7
46 /* strchr is used to check if first char of r4 is present in r3. */
47 #define STRCHR __strchr_power8
49 #include <sysdeps/powerpc/powerpc64/power8/strcasestr.S>