about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc32/power7/strcasecmp.S
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
committerZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
commit5046dbb4a7eba5eccfd258f92f4735c9ffc8d069 (patch)
tree4470480d904b65cf14ca524f96f79eca818c3eaf /sysdeps/powerpc/powerpc32/power7/strcasecmp.S
parent199fc19d3aaaf57944ef036e15904febe877fc93 (diff)
downloadglibc-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.S129
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)