diff options
author | Zack Weinberg <zackw@panix.com> | 2017-06-08 15:39:03 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2017-06-08 15:39:03 -0400 |
commit | 5046dbb4a7eba5eccfd258f92f4735c9ffc8d069 (patch) | |
tree | 4470480d904b65cf14ca524f96f79eca818c3eaf /sysdeps/powerpc/powerpc32/power7/strcasecmp.S | |
parent | 199fc19d3aaaf57944ef036e15904febe877fc93 (diff) | |
download | glibc-zack/build-layout-experiment.tar.gz glibc-zack/build-layout-experiment.tar.xz glibc-zack/build-layout-experiment.zip |
Prepare for radical source tree reorganization. zack/build-layout-experiment
All top-level files and directories are moved into a temporary storage directory, REORG.TODO, except for files that will certainly still exist in their current form at top level when we're done (COPYING, COPYING.LIB, LICENSES, NEWS, README), all old ChangeLog files (which are moved to the new directory OldChangeLogs, instead), and the generated file INSTALL (which is just deleted; in the new order, there will be no generated files checked into version control).
Diffstat (limited to 'sysdeps/powerpc/powerpc32/power7/strcasecmp.S')
-rw-r--r-- | sysdeps/powerpc/powerpc32/power7/strcasecmp.S | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/sysdeps/powerpc/powerpc32/power7/strcasecmp.S b/sysdeps/powerpc/powerpc32/power7/strcasecmp.S deleted file mode 100644 index 964875a13b..0000000000 --- a/sysdeps/powerpc/powerpc32/power7/strcasecmp.S +++ /dev/null @@ -1,129 +0,0 @@ -/* Optimized strcasecmp implementation for PowerPC32. - Copyright (C) 2011-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include <locale-defines.h> - -/* int [r3] strcasecmp (const char *s1 [r3], const char *s2 [r4] ) - - or if defined USE_IN_EXTENDED_LOCALE_MODEL: - - int [r3] strcasecmp_l (const char *s1 [r3], const char *s2 [r4], - __locale_t loc [r5]) */ - -#ifndef STRCMP -# define __STRCMP __strcasecmp -# define STRCMP strcasecmp -#endif - -ENTRY (__STRCMP) - -#define rRTN r3 /* Return value */ -#define rSTR1 r5 /* 1st string */ -#define rSTR2 r4 /* 2nd string */ -#define rLOCARG r5 /* 3rd argument: locale_t */ -#define rCHAR1 r6 /* Byte read from 1st string */ -#define rCHAR2 r7 /* Byte read from 2nd string */ -#define rADDR1 r8 /* Address of tolower(rCHAR1) */ -#define rADDR2 r12 /* Address of tolower(rCHAR2) */ -#define rLWR1 r8 /* Byte tolower(rCHAR1) */ -#define rLWR2 r12 /* Byte tolower(rCHAR2) */ -#define rTMP r0 -#define rGOT r9 /* Address of the Global Offset Table */ -#define rLOC r11 /* Default locale address */ - - cmpw cr7, r3, r4 -#ifndef USE_IN_EXTENDED_LOCALE_MODEL -# ifdef SHARED - mflr rTMP - bcl 20,31,.L1 -.L1: mflr rGOT - addis rGOT, rGOT, _GLOBAL_OFFSET_TABLE_-.L1@ha - addi rGOT, rGOT, _GLOBAL_OFFSET_TABLE_-.L1@l - lwz rLOC, __libc_tsd_LOCALE@got@tprel(rGOT) - add rLOC, rLOC, __libc_tsd_LOCALE@tls - lwz rLOC, 0(rLOC) - mtlr rTMP -# else - lis rTMP,_GLOBAL_OFFSET_TABLE_@ha - la rLOC,_GLOBAL_OFFSET_TABLE_@l(rTMP) - lwz rLOC, __libc_tsd_LOCALE@got@tprel(rGOT) - add rLOC, rLOC, __libc_tsd_LOCALE@tls - lwz rLOC, 0(rLOC) -# endif /* SHARED */ -#else - mr rLOC, rLOCARG -#endif - mr rSTR1, rRTN - lwz rLOC, LOCALE_CTYPE_TOLOWER(rLOC) - li rRTN, 0 - beqlr cr7 - - /* Unrolling loop for POWER: loads are done with 'lbz' plus - offset and string descriptors are only updated in the end - of loop unrolling. */ - -L(loop): - lbz rCHAR1, 0(rSTR1) /* Load char from s1 */ - lbz rCHAR2, 0(rSTR2) /* Load char from s2 */ - sldi rADDR1, rCHAR1, 2 /* Calculate address for tolower(*s1) */ - sldi rADDR2, rCHAR2, 2 /* Calculate address for tolower(*s2) */ - lwzx rLWR1, rLOC, rADDR1 /* Load tolower(*s1) */ - lwzx rLWR2, rLOC, rADDR2 /* Load tolower(*s2) */ - cmpwi cr7, rCHAR1, 0 /* *s1 == '\0' ? */ - subf. r3, rLWR2, rLWR1 - bnelr - beqlr cr7 - lbz rCHAR1, 1(rSTR1) - lbz rCHAR2, 1(rSTR2) - sldi rADDR1, rCHAR1, 2 - sldi rADDR2, rCHAR2, 2 - lwzx rLWR1, rLOC, rADDR1 - lwzx rLWR2, rLOC, rADDR2 - cmpwi cr7, rCHAR1, 0 - subf. r3, rLWR2, rLWR1 - bnelr - beqlr cr7 - lbz rCHAR1, 2(rSTR1) - lbz rCHAR2, 2(rSTR2) - sldi rADDR1, rCHAR1, 2 - sldi rADDR2, rCHAR2, 2 - lwzx rLWR1, rLOC, rADDR1 - lwzx rLWR2, rLOC, rADDR2 - cmpwi cr7, rCHAR1, 0 - subf. r3, rLWR2, rLWR1 - bnelr - beqlr cr7 - lbz rCHAR1, 3(rSTR1) - lbz rCHAR2, 3(rSTR2) - /* Increment both string descriptors */ - addi rSTR1, rSTR1, 4 - addi rSTR2, rSTR2, 4 - sldi rADDR1, rCHAR1, 2 - sldi rADDR2, rCHAR2, 2 - lwzx rLWR1, rLOC, rADDR1 - lwzx rLWR2, rLOC, rADDR2 - cmpwi cr7, rCHAR1, 0 - subf. r3, rLWR2, rLWR1 - bnelr - bne cr7,L(loop) - blr -END (__STRCMP) - -weak_alias (__STRCMP, STRCMP) -libc_hidden_builtin_def (__STRCMP) |