From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-f177.google.com (mail-yw1-f177.google.com [209.85.128.177]) by sourceware.org (Postfix) with ESMTPS id 7F1203858D1E for ; Wed, 1 Nov 2023 19:22:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F1203858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rtems.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7F1203858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=209.85.128.177 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698866537; cv=none; b=QfjG89eyyT46VCB3xZ5B8OJ59WF6LNlXUZZLg6nt2IxOv459jsHKZSPOXaRu4vgSMhEldZRSCL7iMOaiJcQzVB7+U+S6tRMjPkarB0yZEfnL59rmLpcolzwVtDKff8zeepM3+WkC/21RPz1iw+w/LIUa9BtPYzxW5+o1+QyCMVM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698866537; c=relaxed/simple; bh=FoYH8zN27Qhm3N0BCSRaY04EIPzcUDR1AIw0rG5HDYU=; h=MIME-Version:From:Date:Message-ID:Subject:To; b=UTSyzEvfhvp+7tZo+6BFZSQQHJ/8lXNFr6xKMIC6GuBdOuT1wBd1XQI0MZUcAJNjfhs7mud8Ay4mHT4z8Thpdj7v1iKgZa2MrKXYI6cpZn4kW/eOES3+4s5UIh3ffFItOpVVYnVD9hJ+oAfwllGd8Y9+MXL6752htm415Uiq1rc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-yw1-f177.google.com with SMTP id 00721157ae682-5a877e0f0d8so11308217b3.1 for ; Wed, 01 Nov 2023 12:22:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698866526; x=1699471326; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lzcTau85piGkWyFpzEwdx9Uj9gJimk1AfbiR9EErK/8=; b=Oz+sw9g2LLiNNsF0+32cOuo75ZsGzs/S287KJCUJI+ImOKUZOnYTwUOcwJ09xDY5Ww TcxAR0vuLAxdbE/eJlIn/1FA6lGqvHg/f58JImJZVd2IBX1odHs0cCB+vBgHCPTJulQA 3X5yasf3pzy+GUoGkXWpwcQA2CaAFG+/IZBOqPRaHtz2Y61Zeo8EmUqPsk2UC6SQU7XS YmFDhkiiV4AjhYyiNKC1Po/c9dY/Zg/NPmla77bwgS0Hd/YohS1faHEFNLuJxY8670+h RwWHv7vXSGhJD6nWr/9quAVy0B2w5tAxfWGEKWzVtt73jpxCyq4eT8hWSk1IiZWGC/1J wb4w== X-Gm-Message-State: AOJu0YwYIqVSEvWPupS2ukFmuJ6775VbJtvffg/7z46hndgANGr1PCyO sfAbnO8sHDKUMUJs1dap394GVyycG1E= X-Google-Smtp-Source: AGHT+IE1aobnRsy5GUaSgEmpaj5f3iMbNI4ZSfxzDIWbj/KkaawAJHas+q4hP1UDCdpiUlBlEYIq2Q== X-Received: by 2002:a81:7807:0:b0:5b1:df82:9983 with SMTP id t7-20020a817807000000b005b1df829983mr4668318ywc.25.1698866525389; Wed, 01 Nov 2023 12:22:05 -0700 (PDT) Received: from mail-yw1-f176.google.com (mail-yw1-f176.google.com. [209.85.128.176]) by smtp.gmail.com with ESMTPSA id l202-20020a0de2d3000000b005a7b8fddfedsm317590ywe.41.2023.11.01.12.22.04 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 01 Nov 2023 12:22:04 -0700 (PDT) Received: by mail-yw1-f176.google.com with SMTP id 00721157ae682-59e88a28b98so1613067b3.1 for ; Wed, 01 Nov 2023 12:22:04 -0700 (PDT) X-Received: by 2002:a81:e30c:0:b0:5a7:ba02:9c9a with SMTP id q12-20020a81e30c000000b005a7ba029c9amr5253609ywl.2.1698866524480; Wed, 01 Nov 2023 12:22:04 -0700 (PDT) MIME-Version: 1.0 References: <20231027181833.28871-1-sebastian.huber@embedded-brains.de> In-Reply-To: Reply-To: joel@rtems.org From: Joel Sherrill Date: Wed, 1 Nov 2023 14:21:52 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2] aarch64: Remove duplicated optimized memmove() To: Sebastian Huber Cc: newlib@sourceware.org Content-Type: multipart/alternative; boundary="000000000000b66e5706091c2f80" X-Spam-Status: No, score=-3037.4 required=5.0 tests=BAYES_00,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000b66e5706091c2f80 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sebastian's patch is OK to push. Thanks. --joel On Fri, Oct 27, 2023 at 2:00=E2=80=AFPM Joel Sherrill wrot= e: > Based on a build and nm, memmove and memcpy are coming from the machine > optimized version and memmove.o is empty. > > The patch looks like it fixes the problem. The autotools stuff will need > regeneration after it is pushed. I couldn't do that when I tried. > > If someone can push it and regenerate, that would be very much appreciate= d. > > Thanks. > > --joel > > On Fri, Oct 27, 2023 at 1:18=E2=80=AFPM Sebastian Huber < > sebastian.huber@embedded-brains.de> wrote: > >> The optimized aarch64/memcpy.S already provides a memmove() >> implementation. >> --- >> >> v2: Rename memmove-stub.c in memmove.c to make the build system happy. >> >> newlib/Makefile.in | 42 ++--- >> newlib/libc/machine/aarch64/Makefile.inc | 3 +- >> newlib/libc/machine/aarch64/memmove.S | 155 ------------------ >> .../aarch64/{memmove-stub.c =3D> memmove.c} | 2 +- >> 4 files changed, 13 insertions(+), 189 deletions(-) >> delete mode 100644 newlib/libc/machine/aarch64/memmove.S >> rename newlib/libc/machine/aarch64/{memmove-stub.c =3D> memmove.c} (98%) >> >> diff --git a/newlib/Makefile.in b/newlib/Makefile.in >> index 4cb3534cc4..4f0b3bf644 100644 >> --- a/newlib/Makefile.in >> +++ b/newlib/Makefile.in >> @@ -594,8 +594,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 \ >> @@ -1847,7 +1846,6 @@ am__objects_51 =3D libc/ssp/libc_a-chk_fail.$(OBJE= XT) >> \ >> @HAVE_LIBC_MACHINE_AARCH64_TRUE@ >> libc/machine/aarch64/libc_a-memcmp.$(OBJEXT) \ >> @HAVE_LIBC_MACHINE_AARCH64_TRUE@ >> libc/machine/aarch64/libc_a-memcpy-stub.$(OBJEXT) \ >> @HAVE_LIBC_MACHINE_AARCH64_TRUE@ >> libc/machine/aarch64/libc_a-memcpy.$(OBJEXT) \ >> -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ >> libc/machine/aarch64/libc_a-memmove-stub.$(OBJEXT) \ >> @HAVE_LIBC_MACHINE_AARCH64_TRUE@ >> libc/machine/aarch64/libc_a-memmove.$(OBJEXT) \ >> @HAVE_LIBC_MACHINE_AARCH64_TRUE@ >> libc/machine/aarch64/libc_a-memrchr-stub.$(OBJEXT) \ >> @HAVE_LIBC_MACHINE_AARCH64_TRUE@ >> libc/machine/aarch64/libc_a-memrchr.$(OBJEXT) \ >> @@ -8022,9 +8020,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) >> @@ -12738,7 +12733,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@ >> @@ -16709,20 +16703,6 @@ libc/machine/aarch64/libc_a-memcpy.obj: >> libc/machine/aarch64/memcpy.S >> @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) >> $(depcomp) @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/machine/aarch64/memcpy.S'; then $(CYGPATH_W) >> 'libc/machine/aarch64/memcpy.S'; else $(CYGPATH_W) >> '$(srcdir)/libc/machine/aarch64/memcpy.S'; fi` >> >> -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) $(CCASFLA= GS) >> -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 `test -f >> 'libc/machine/aarch64/memmove.S' || echo >> '$(srcdir)/'`libc/machine/aarch64/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/aarch64/memmove.S' >> object=3D'libc/machine/aarch64/libc_a-memmove.o' libtool=3Dno @AMDEPBACK= SLASH@ >> -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) >> $(depcomp) @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/machine/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) $(CCASFLA= GS) >> -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/machine/aarch64/memmove.S'; else $(CYGPATH_W) >> '$(srcdir)/libc/machine/aarch64/memmove.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/aarch64/memmove.S' >> object=3D'libc/machine/aarch64/libc_a-memmove.obj' libtool=3Dno @AMDEPBA= CKSLASH@ >> -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=3D$(DEPDIR) $(CCASDEPMODE) >> $(depcomp) @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) $(CCASFLA= GS) >> -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 `test -f >> 'libc/machine/aarch64/memrchr.S' || echo >> '$(srcdir)/'`libc/machine/aarch64/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 >> @@ -32993,19 +32973,19 @@ libc/machine/aarch64/libc_a-memcpy-stub.obj: >> libc/machine/aarch64/memcpy-stub.c >> @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) >> $(depcomp) @AMDEPBACKSLASH@ >> @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) >> $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) >> $(libc_a_CFLAGS) $(CFLAGS) -c -o >> libc/machine/aarch64/libc_a-memcpy-stub.obj `if test -f >> 'libc/machine/aarch64/memcpy-stub.c'; then $(CYGPATH_W) >> 'libc/machine/aarch64/memcpy-stub.c'; else $(CYGPATH_W) >> '$(srcdir)/libc/machine/aarch64/memcpy-stub.c'; fi` >> >> -libc/machine/aarch64/libc_a-memmove-stub.o: >> libc/machine/aarch64/memmove-stub.c >> -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) >> $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT >> libc/machine/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/machine/aarch64/memmove-stub.c >> -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) >> libc/machine/aarch64/$(DEPDIR)/libc_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' libtool=3Dno >> @AMDEPBACKSLASH@ >> +libc/machine/aarch64/libc_a-memmove.o: libc/machine/aarch64/memmove.c >> +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) >> $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -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 `test -f >> 'libc/machine/aarch64/memmove.c' || echo >> '$(srcdir)/'`libc/machine/aarch64/memmove.c >> +@am__fastdepCC_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__fastdepCC_FALSE@ >> $(AM_V_CC)source=3D'libc/machine/aarch64/memmove.c' >> object=3D'libc/machine/aarch64/libc_a-memmove.o' libtool=3Dno @AMDEPBACK= SLASH@ >> @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) >> $(depcomp) @AMDEPBACKSLASH@ >> -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) >> $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) >> $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove-stu= b.o >> `test -f 'libc/machine/aarch64/memmove-stub.c' || echo >> '$(srcdir)/'`libc/machine/aarch64/memmove-stub.c >> +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) >> $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) >> $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.o >> `test -f 'libc/machine/aarch64/memmove.c' || echo >> '$(srcdir)/'`libc/machine/aarch64/memmove.c >> >> -libc/machine/aarch64/libc_a-memmove-stub.obj: >> libc/machine/aarch64/memmove-stub.c >> -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) >> $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT >> libc/machine/aarch64/libc_a-memmove-stub.obj -MD -MP -MF >> libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Tpo -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-stub.c'; else $(CYGPATH_W) >> '$(srcdir)/libc/machine/aarch64/memmove-stub.c'; fi` >> -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) >> libc/machine/aarch64/$(DEPDIR)/libc_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' libtool=3Dno >> @AMDEPBACKSLASH@ >> +libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.c >> +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) >> $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -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.c'; then $(CYGPATH_W) >> 'libc/machine/aarch64/memmove.c'; else $(CYGPATH_W) >> '$(srcdir)/libc/machine/aarch64/memmove.c'; fi` >> +@am__fastdepCC_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__fastdepCC_FALSE@ >> $(AM_V_CC)source=3D'libc/machine/aarch64/memmove.c' >> object=3D'libc/machine/aarch64/libc_a-memmove.obj' libtool=3Dno @AMDEPBA= CKSLASH@ >> @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) >> $(depcomp) @AMDEPBACKSLASH@ >> -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) >> $(DEFAULT_INCLUDES) $(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-stub.c'; else $(CYGPATH_W) >> '$(srcdir)/libc/machine/aarch64/memmove-stub.c'; fi` >> +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) >> $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) >> $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.obj >> `if test -f 'libc/machine/aarch64/memmove.c'; then $(CYGPATH_W) >> 'libc/machine/aarch64/memmove.c'; else $(CYGPATH_W) >> '$(srcdir)/libc/machine/aarch64/memmove.c'; fi` >> >> libc/machine/aarch64/libc_a-memrchr-stub.o: >> libc/machine/aarch64/memrchr-stub.c >> @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) >> $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT >> libc/machine/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/machine/aarch64/memrchr-stub.c >> diff --git a/newlib/libc/machine/aarch64/Makefile.inc >> b/newlib/libc/machine/aarch64/Makefile.inc >> index c749b0d575..1068d88ce8 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/aarch64/memmove.S >> deleted file mode 100644 >> index 597a8c8e9e..0000000000 >> --- 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 >> the >> - documentation and/or other materials provided with the >> distribution. >> - * Neither the name of the Linaro nor the >> - names of its contributors may be used to endorse or promote >> products >> - derived from this software without specific prior written >> permission. >> - >> - 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, 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. >> */ >> - >> -/* >> - * 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 t= he >> - * 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 >> IMPLIED >> - * 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, >> 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. >> - */ >> - >> -/* 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 remaini= ng >> - 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/machine/aarch64/memmove.c >> similarity index 98% >> rename from newlib/libc/machine/aarch64/memmove-stub.c >> rename to newlib/libc/machine/aarch64/memmove.c >> index 8fa4ab9387..bc8255fb8b 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 >> -- >> 2.35.3 >> >> --000000000000b66e5706091c2f80--