From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1921) id BF63D385840E; Tue, 21 Nov 2023 09:53:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BF63D385840E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1700560422; bh=EdLmMmfXaNRnYvlJmQj0h/yH/Y7zEur5xOkcCjUiJAQ=; h=From:To:Subject:Date:From; b=h5RT844s/riEgiK7E9pXu5kYTCpVMLY50qBvRbpq0RV8wkw3RcsHHciAmUx/9Nbg0 GuVUJoBeKfCMkVwz1NRoxRFjx7t0aqrEZl3S5NIN7geEEQStmUIm12pUhlliDSP6bG Qrqt37rB9xbPRzkd0yDCHE9bAYiEWYd5zwjKvnGE= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Sebastian Huber To: newlib-cvs@sourceware.org Subject: [newlib-cygwin] aarch64: Remove duplicated optimized memmove() X-Act-Checkin: newlib-cygwin X-Git-Author: Sebastian Huber X-Git-Refname: refs/heads/master X-Git-Oldrev: 61e52c4d60c57f520cd19de310260395add5ce97 X-Git-Newrev: 3cacedbbac5b2ab651fddcad1d5ce2acd1979b93 Message-Id: <20231121095342.BF63D385840E@sourceware.org> Date: Tue, 21 Nov 2023 09:53:42 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D3cacedbbac5= b2ab651fddcad1d5ce2acd1979b93 commit 3cacedbbac5b2ab651fddcad1d5ce2acd1979b93 Author: Sebastian Huber Date: Fri Oct 27 18:25:35 2023 +0200 aarch64: Remove duplicated optimized memmove() =20 The optimized aarch64/memcpy.S already provides a memmove() implementat= ion. Diff: --- newlib/Makefile.in | 42 ++---- newlib/libc/machine/aarch64/Makefile.inc | 3 +- newlib/libc/machine/aarch64/memmove.S | 155 -----------------= ---- .../machine/aarch64/{memmove-stub.c =3D> memmove.c} | 2 +- 4 files changed, 13 insertions(+), 189 deletions(-) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 644e595c9..9cbb4254e 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -602,8 +602,7 @@ check_PROGRAMS =3D @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcmp.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcpy-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcpy.S \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove-stub.c \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove.S \ +@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memset-stub.c \ @@ -1864,7 +1863,6 @@ am__objects_51 =3D libc/ssp/libc_a-chk_fail.$(OBJEXT)= \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcmp.$(OBJE= XT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcpy-stub.$= (OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcpy.$(OBJE= XT) \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove-stub.= $(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove.$(OBJ= EXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr-stub.= $(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr.$(OBJ= EXT) \ @@ -8058,9 +8056,6 @@ libc/machine/aarch64/libc_a-memcpy-stub.$(OBJEXT): \ libc/machine/aarch64/libc_a-memcpy.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) -libc/machine/aarch64/libc_a-memmove-stub.$(OBJEXT): \ - libc/machine/aarch64/$(am__dirstamp) \ - libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) libc/machine/aarch64/libc_a-memmove.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) @@ -12774,7 +12769,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a= -memcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a= -memcpy-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a= -memcpy.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a= -memmove-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a= -memmove.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a= -memrchr-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a= -memrchr.Po@am__quote@ @@ -16754,20 +16748,6 @@ libc/machine/aarch64/libc_a-memcpy.obj: libc/machi= ne/aarch64/memcpy.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) $(de= pcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_= INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(= CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memcpy.obj `if test -f 'libc/m= achine/aarch64/memcpy.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memcpy.S'= ; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memcpy.S'; fi` =20 -libc/machine/aarch64/libc_a-memmove.o: libc/machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(= INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -= MT libc/machine/aarch64/libc_a-memmove.o -MD -MP -MF libc/machine/aarch64/$= (DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.o `te= st -f 'libc/machine/aarch64/memmove.S' || echo '$(srcdir)/'`libc/machine/aa= rch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/= libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source=3D'libc/machine/aa= rch64/memmove.S' object=3D'libc/machine/aarch64/libc_a-memmove.o' libtool= =3Dno @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) $(de= pcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_= INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(= CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/machi= ne/aarch64/memmove.S' || echo '$(srcdir)/'`libc/machine/aarch64/memmove.S - -libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(= INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -= MT libc/machine/aarch64/libc_a-memmove.obj -MD -MP -MF libc/machine/aarch64= /$(DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.obj= `if test -f 'libc/machine/aarch64/memmove.S'; then $(CYGPATH_W) 'libc/mach= ine/aarch64/memmove.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/m= emmove.S'; fi` -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/= libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source=3D'libc/machine/aa= rch64/memmove.S' object=3D'libc/machine/aarch64/libc_a-memmove.obj' libtool= =3Dno @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) $(de= pcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_= INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(= CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/= machine/aarch64/memmove.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove= .S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.S'; fi` - libc/machine/aarch64/libc_a-memrchr.o: libc/machine/aarch64/memrchr.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(= INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -= MT libc/machine/aarch64/libc_a-memrchr.o -MD -MP -MF libc/machine/aarch64/$= (DEPDIR)/libc_a-memrchr.Tpo -c -o libc/machine/aarch64/libc_a-memrchr.o `te= st -f 'libc/machine/aarch64/memrchr.S' || echo '$(srcdir)/'`libc/machine/aa= rch64/memrchr.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/= libc_a-memrchr.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Po @@ -33164,19 +33144,19 @@ libc/machine/aarch64/libc_a-memcpy-stub.obj: libc= /machine/aarch64/memcpy-stub.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom= p) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDE= S) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c= -o libc/machine/aarch64/libc_a-memcpy-stub.obj `if test -f 'libc/machine/a= arch64/memcpy-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memcpy-stub.= c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memcpy-stub.c'; fi` =20 -libc/machine/aarch64/libc_a-memmove-stub.o: libc/machine/aarch64/memmove-s= tub.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDE= S) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machi= ne/aarch64/libc_a-memmove-stub.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)= /libc_a-memmove-stub.Tpo -c -o libc/machine/aarch64/libc_a-memmove-stub.o `= test -f 'libc/machine/aarch64/memmove-stub.c' || echo '$(srcdir)/'`libc/mac= hine/aarch64/memmove-stub.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/li= bc_a-memmove-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch64= /memmove-stub.c' object=3D'libc/machine/aarch64/libc_a-memmove-stub.o' libt= ool=3Dno @AMDEPBACKSLASH@ +libc/machine/aarch64/libc_a-memmove.o: libc/machine/aarch64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDE= S) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machi= ne/aarch64/libc_a-memmove.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc= _a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/m= achine/aarch64/memmove.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove= .c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/li= bc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch64= /memmove.c' object=3D'libc/machine/aarch64/libc_a-memmove.o' libtool=3Dno @= AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom= p) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDE= S) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c= -o libc/machine/aarch64/libc_a-memmove-stub.o `test -f 'libc/machine/aarch= 64/memmove-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove-stub.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDE= S) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c= -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/machine/aarch64/me= mmove.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove.c =20 -libc/machine/aarch64/libc_a-memmove-stub.obj: libc/machine/aarch64/memmove= -stub.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDE= S) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machi= ne/aarch64/libc_a-memmove-stub.obj -MD -MP -MF libc/machine/aarch64/$(DEPDI= R)/libc_a-memmove-stub.Tpo -c -o libc/machine/aarch64/libc_a-memmove-stub.o= bj `if test -f 'libc/machine/aarch64/memmove-stub.c'; then $(CYGPATH_W) 'li= bc/machine/aarch64/memmove-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machi= ne/aarch64/memmove-stub.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/li= bc_a-memmove-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch64= /memmove-stub.c' object=3D'libc/machine/aarch64/libc_a-memmove-stub.obj' li= btool=3Dno @AMDEPBACKSLASH@ +libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDE= S) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machi= ne/aarch64/libc_a-memmove.obj -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/li= bc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f = 'libc/machine/aarch64/memmove.c'; then $(CYGPATH_W) 'libc/machine/aarch64/m= emmove.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/li= bc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source=3D'libc/machine/aarch64= /memmove.c' object=3D'libc/machine/aarch64/libc_a-memmove.obj' libtool=3Dno= @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom= p) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDE= S) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c= -o libc/machine/aarch64/libc_a-memmove-stub.obj `if test -f 'libc/machine/= aarch64/memmove-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove-st= ub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove-stub.c'; f= i` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDE= S) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c= -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/machine/aarch= 64/memmove.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove.c'; else $(C= YGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.c'; fi` =20 libc/machine/aarch64/libc_a-memrchr-stub.o: libc/machine/aarch64/memrchr-s= tub.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDE= S) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machi= ne/aarch64/libc_a-memrchr-stub.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)= /libc_a-memrchr-stub.Tpo -c -o libc/machine/aarch64/libc_a-memrchr-stub.o `= test -f 'libc/machine/aarch64/memrchr-stub.c' || echo '$(srcdir)/'`libc/mac= hine/aarch64/memrchr-stub.c diff --git a/newlib/libc/machine/aarch64/Makefile.inc b/newlib/libc/machine= /aarch64/Makefile.inc index c749b0d57..1068d88ce 100644 --- a/newlib/libc/machine/aarch64/Makefile.inc +++ b/newlib/libc/machine/aarch64/Makefile.inc @@ -5,8 +5,7 @@ libc_a_SOURCES +=3D \ %D%/memcmp.S \ %D%/memcpy-stub.c \ %D%/memcpy.S \ - %D%/memmove-stub.c \ - %D%/memmove.S \ + %D%/memmove.c \ %D%/memrchr-stub.c \ %D%/memrchr.S \ %D%/memset-stub.c \ diff --git a/newlib/libc/machine/aarch64/memmove.S b/newlib/libc/machine/aa= rch64/memmove.S deleted file mode 100644 index 597a8c8e9..000000000 --- a/newlib/libc/machine/aarch64/memmove.S +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright (c) 2013, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are = met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in t= he - documentation and/or other materials provided with the distributi= on. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote produ= cts - derived from this software without specific prior written permiss= ion. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/* - * Copyright (c) 2015 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLI= ED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTA= L, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* Assumptions: - * - * ARMv8-a, AArch64, unaligned accesses - */ - -#if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) -/* See memmove-stub.c */ -#else - - .macro def_fn f p2align=3D0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -/* Parameters and result. */ -#define dstin x0 -#define src x1 -#define count x2 -#define srcend x3 -#define dstend x4 -#define tmp1 x5 -#define A_l x6 -#define A_h x7 -#define B_l x8 -#define B_h x9 -#define C_l x10 -#define C_h x11 -#define D_l x12 -#define D_h x13 -#define E_l count -#define E_h tmp1 - -/* All memmoves up to 96 bytes are done by memcpy as it supports overlaps. - Larger backwards copies are also handled by memcpy. The only remaining - case is forward large copies. The destination is aligned, and an - unrolled loop processes 64 bytes per iteration. -*/ - -def_fn memmove, 6 - sub tmp1, dstin, src - cmp count, 96 - ccmp tmp1, count, 2, hi - b.hs memcpy - - cbz tmp1, 3f - add dstend, dstin, count - add srcend, src, count - - /* Align dstend to 16 byte alignment so that we don't cross cache line - boundaries on both loads and stores. There are at least 96 bytes - to copy, so copy 16 bytes unaligned and then align. The loop - copies 64 bytes per iteration and prefetches one iteration ahead. */ - - and tmp1, dstend, 15 - ldp D_l, D_h, [srcend, -16] - sub srcend, srcend, tmp1 - sub count, count, tmp1 - ldp A_l, A_h, [srcend, -16] - stp D_l, D_h, [dstend, -16] - ldp B_l, B_h, [srcend, -32] - ldp C_l, C_h, [srcend, -48] - ldp D_l, D_h, [srcend, -64]! - sub dstend, dstend, tmp1 - subs count, count, 128 - b.ls 2f - nop -1: - stp A_l, A_h, [dstend, -16] - ldp A_l, A_h, [srcend, -16] - stp B_l, B_h, [dstend, -32] - ldp B_l, B_h, [srcend, -32] - stp C_l, C_h, [dstend, -48] - ldp C_l, C_h, [srcend, -48] - stp D_l, D_h, [dstend, -64]! - ldp D_l, D_h, [srcend, -64]! - subs count, count, 64 - b.hi 1b - - /* Write the last full set of 64 bytes. The remainder is at most 64 - bytes, so it is safe to always copy 64 bytes from the start even if - there is just 1 byte left. */ -2: - ldp E_l, E_h, [src, 48] - stp A_l, A_h, [dstend, -16] - ldp A_l, A_h, [src, 32] - stp B_l, B_h, [dstend, -32] - ldp B_l, B_h, [src, 16] - stp C_l, C_h, [dstend, -48] - ldp C_l, C_h, [src] - stp D_l, D_h, [dstend, -64] - stp E_l, E_h, [dstin, 48] - stp A_l, A_h, [dstin, 32] - stp B_l, B_h, [dstin, 16] - stp C_l, C_h, [dstin] -3: ret - - .size memmove, . - memmove -#endif diff --git a/newlib/libc/machine/aarch64/memmove-stub.c b/newlib/libc/machi= ne/aarch64/memmove.c similarity index 98% rename from newlib/libc/machine/aarch64/memmove-stub.c rename to newlib/libc/machine/aarch64/memmove.c index 8fa4ab938..bc8255fb8 100644 --- a/newlib/libc/machine/aarch64/memmove-stub.c +++ b/newlib/libc/machine/aarch64/memmove.c @@ -27,5 +27,5 @@ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) # include "../../string/memmove.c" #else -/* See memmove.S */ +/* See memcpy.S */ #endif