Skip to content

Commit

Permalink
powerpc: Optimized strncat for POWER7/PPC64
Browse files Browse the repository at this point in the history
With 3eb3879 (Simplify strncat) the generic algorithms uses
strlen, strnlen, and memcpy.  This is faster than POWER7 current
implementation, especially for unaligned strings (where POWER7 code
uses byte-byte operations).

This patch removes the assembly implementation and uses a multiarch
specialization based on default algorithm calling optimized POWER7
symbols.
  • Loading branch information
Adhemerval Zanella committed Jan 13, 2015
1 parent 94c9680 commit 9f2f36e
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 270 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
2015-01-13 Adhemerval Zanella <azanella@linux.vnet.ibm.com>

* sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c: New file.
* sysdeps/powerpc/powerpc64/multiarch/strncat-power7.S: Remove file.
* sysdeps/powerpc/powerpc64/power7/strncat.S: Likewise.

* sysdeps/powerpc/powerpc64/multiarch/Makefile [sysdep_routines]: Add
strncat-power8 object.
* sysdeps/powerpc/powerpc64/multiarch/strcat.c (strcat): Add
Expand Down
42 changes: 0 additions & 42 deletions sysdeps/powerpc/powerpc64/multiarch/strncat-power7.S

This file was deleted.

31 changes: 31 additions & 0 deletions sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/* Copyright (C) 2015 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 <string.h>

#define STRNCAT __strncat_power7

extern __typeof (strncat) __strncat_power7 attribute_hidden;
extern __typeof (strlen) __strlen_power7 attribute_hidden;
extern __typeof (strnlen) __strnlen_power7 attribute_hidden;
extern __typeof (memcpy) __memcpy_power7 attribute_hidden;

#define strlen __strlen_power7
#define __strnlen __strnlen_power7
#define memcpy __memcpy_power7

#include <string/strncat.c>
228 changes: 0 additions & 228 deletions sysdeps/powerpc/powerpc64/power7/strncat.S

This file was deleted.

0 comments on commit 9f2f36e

Please sign in to comment.