From patchwork Thu Feb 10 19:58:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 51025 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CAB8F385842C for ; Thu, 10 Feb 2022 20:03:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CAB8F385842C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1644523404; bh=4JD/D9cETRR18sm564rsErRuG/3uHz3QYN4+ytrBydA=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=bxFj3LUtiCPEp4WFus1aeKsVkmVS8s8QUviqCPPCR2rctRqc7NK/PsVyYHwka4YO8 bH5f9/6e9/xq/PVnam6tys3essyRaxRjT9VAaOmwIcETpfgnO7ZlfZ2vlBP4yiKYaN BE4CpFokOBb6pf61/tTKCVFaTKVCPA9IcmHdw9JA= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) by sourceware.org (Postfix) with ESMTPS id 2F8B03858C2C for ; Thu, 10 Feb 2022 19:58:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2F8B03858C2C Received: by mail-oi1-x229.google.com with SMTP id u3so7120555oiv.12 for ; Thu, 10 Feb 2022 11:58:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4JD/D9cETRR18sm564rsErRuG/3uHz3QYN4+ytrBydA=; b=NmJ3FvYPR4ECxGqO51azI4WtwDNwmxXGaOVFLaVeZkJXVLepsyPmqVmzmrROSN4zlW L/RbS2FL51tXcJTexgj8cGYIQELAU1GpC/wmN/T1KcsKfblCOMWMBNhlOGyC3qFTtBZv i1WFwvVWZ5BcK/jrbbkqle9wR3SQTVMG5QWxwMJTDSVt6ioMLiMVbqSn5nYVPK1SsJT8 K7lVYxmYl9jgAUPNONp5WimldLqs7prlhfAdv7Vjh4/XAUTseRK/d3Ty8QYQ0y/+XGpa dH2bkfoC7e/5Vh5GpVJyJXpzY92dhp44a3F+ebpFXKK+dFk9OeoSzed6EHcfXpLzfXIN DaFg== X-Gm-Message-State: AOAM530ELtTAuYmaMbXtTfTanbMEulnwphHwQJct9Y5r9QlsTW+R8jmv JNkqPnOh6ZmZaKXutCsu6f+hZ4yTtT2LzQ== X-Google-Smtp-Source: ABdhPJx38SuCtsHTKY+WXjZeosf4roSr4DLlwZQQld8p2a6ZiRlnnKYxWJhF6ezO48m4DG5uWR5bfQ== X-Received: by 2002:a05:6808:1a22:: with SMTP id bk34mr1680411oib.301.1644523133360; Thu, 10 Feb 2022 11:58:53 -0800 (PST) Received: from birita.. ([2804:431:c7ca:733:a925:765e:3799:3d34]) by smtp.gmail.com with ESMTPSA id bg34sm8859219oob.14.2022.02.10.11.58.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Feb 2022 11:58:53 -0800 (PST) To: libc-alpha@sourceware.org, Wilco Dijkstra , "H . J . Lu" , Noah Goldstein Subject: [PATCH 07/12] Remove bzero optimization Date: Thu, 10 Feb 2022 16:58:33 -0300 Message-Id: <20220210195838.1036012-8-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220210195838.1036012-1-adhemerval.zanella@linaro.org> References: <20220210195838.1036012-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" The symbol is not present in current POSIX specification and compiler already generates memset call. --- sysdeps/sparc/sparc32/bzero.c | 1 - sysdeps/sparc/sparc32/memset.S | 37 ++++++++----------- sysdeps/sparc/sparc32/sparcv9/bzero.c | 1 - .../sparc/sparc32/sparcv9/multiarch/bzero.c | 1 - .../sparc32/sparcv9/multiarch/memset-ultra1.S | 1 - sysdeps/sparc/sparc64/bzero.c | 1 - sysdeps/sparc/sparc64/memset.S | 30 ++++++--------- sysdeps/sparc/sparc64/multiarch/bzero.c | 33 ----------------- .../sparc/sparc64/multiarch/ifunc-impl-list.c | 9 ----- .../sparc/sparc64/multiarch/ifunc-memset.h | 2 +- .../sparc/sparc64/multiarch/memset-niagara1.S | 5 +-- .../sparc/sparc64/multiarch/memset-niagara4.S | 6 +-- .../sparc/sparc64/multiarch/memset-niagara7.S | 7 ---- .../sparc/sparc64/multiarch/memset-ultra1.S | 1 - 14 files changed, 30 insertions(+), 105 deletions(-) delete mode 100644 sysdeps/sparc/sparc32/bzero.c delete mode 100644 sysdeps/sparc/sparc32/sparcv9/bzero.c delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/bzero.c delete mode 100644 sysdeps/sparc/sparc64/bzero.c delete mode 100644 sysdeps/sparc/sparc64/multiarch/bzero.c diff --git a/sysdeps/sparc/sparc32/bzero.c b/sysdeps/sparc/sparc32/bzero.c deleted file mode 100644 index 37f0f6f993..0000000000 --- a/sysdeps/sparc/sparc32/bzero.c +++ /dev/null @@ -1 +0,0 @@ -/* bzero is in memset.S */ diff --git a/sysdeps/sparc/sparc32/memset.S b/sysdeps/sparc/sparc32/memset.S index d222fa7506..b1b67cb2d1 100644 --- a/sysdeps/sparc/sparc32/memset.S +++ b/sysdeps/sparc/sparc32/memset.S @@ -42,25 +42,6 @@ .text .align 4 -ENTRY(__bzero) - b 1f - mov %g0, %g3 - -3: cmp %o2, 3 - be 2f - stb %g3, [%o0] - - cmp %o2, 2 - be 2f - stb %g3, [%o0 + 0x01] - - stb %g3, [%o0 + 0x02] -2: sub %o2, 4, %o2 - add %o1, %o2, %o1 - b 4f - sub %o0, %o2, %o0 -END(__bzero) - ENTRY(memset) and %o1, 0xff, %g3 sll %g3, 8, %g2 @@ -73,7 +54,7 @@ ENTRY(memset) mov %o0, %g1 andcc %o0, 3, %o2 - bne 3b + bne 3f 4: andcc %o0, 4, %g0 be 2f @@ -146,7 +127,19 @@ ENTRY(memset) stb %g3, [%o0 + 6] 0: retl nop + +3: cmp %o2, 3 + be 2f + stb %g3, [%o0] + + cmp %o2, 2 + be 2f + stb %g3, [%o0 + 0x01] + + stb %g3, [%o0 + 0x02] +2: sub %o2, 4, %o2 + add %o1, %o2, %o1 + b 4b + sub %o0, %o2, %o0 END(memset) libc_hidden_builtin_def (memset) - -weak_alias (__bzero, bzero) diff --git a/sysdeps/sparc/sparc32/sparcv9/bzero.c b/sysdeps/sparc/sparc32/sparcv9/bzero.c deleted file mode 100644 index 37f0f6f993..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/bzero.c +++ /dev/null @@ -1 +0,0 @@ -/* bzero is in memset.S */ diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/bzero.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/bzero.c deleted file mode 100644 index cf6803ef44..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/bzero.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/memset-ultra1.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/memset-ultra1.S index 6038611134..2dda6f1ed6 100644 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/memset-ultra1.S +++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/memset-ultra1.S @@ -25,6 +25,5 @@ # define weak_alias(x, y) # define memset __memset_ultra1 -# define __bzero __bzero_ultra1 # include #endif diff --git a/sysdeps/sparc/sparc64/bzero.c b/sysdeps/sparc/sparc64/bzero.c deleted file mode 100644 index 37f0f6f993..0000000000 --- a/sysdeps/sparc/sparc64/bzero.c +++ /dev/null @@ -1 +0,0 @@ -/* bzero is in memset.S */ diff --git a/sysdeps/sparc/sparc64/memset.S b/sysdeps/sparc/sparc64/memset.S index a7f8361fa3..33ecbc93fe 100644 --- a/sysdeps/sparc/sparc64/memset.S +++ b/sysdeps/sparc/sparc64/memset.S @@ -31,6 +31,16 @@ stx source, [base - offset - 0x08]; \ stx source, [base - offset - 0x00]; +#define ZERO_BLOCKS(base, offset, source) \ + stx source, [base - offset - 0x38]; \ + stx source, [base - offset - 0x30]; \ + stx source, [base - offset - 0x28]; \ + stx source, [base - offset - 0x20]; \ + stx source, [base - offset - 0x18]; \ + stx source, [base - offset - 0x10]; \ + stx source, [base - offset - 0x08]; \ + stx source, [base - offset - 0x00]; + /* Well, memset is a lot easier to get right than bcopy... */ .text .align 32 @@ -174,22 +184,7 @@ ENTRY(memset) nop ba,pt %xcc, 18b ldd [%o0], %f0 -END(memset) -libc_hidden_builtin_def (memset) -#define ZERO_BLOCKS(base, offset, source) \ - stx source, [base - offset - 0x38]; \ - stx source, [base - offset - 0x30]; \ - stx source, [base - offset - 0x28]; \ - stx source, [base - offset - 0x20]; \ - stx source, [base - offset - 0x18]; \ - stx source, [base - offset - 0x10]; \ - stx source, [base - offset - 0x08]; \ - stx source, [base - offset - 0x00]; - - .text - .align 32 -ENTRY(__bzero) #ifndef USE_BPR srl %o1, 0, %o1 #endif @@ -307,6 +302,5 @@ ENTRY(__bzero) stb %g0, [%o0 - 1] 0: retl mov %o5, %o0 -END(__bzero) - -weak_alias (__bzero, bzero) +END(memset) +libc_hidden_builtin_def (memset) diff --git a/sysdeps/sparc/sparc64/multiarch/bzero.c b/sysdeps/sparc/sparc64/multiarch/bzero.c deleted file mode 100644 index 409d66a864..0000000000 --- a/sysdeps/sparc/sparc64/multiarch/bzero.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Multiple versions of bzero. SPARC64/Linux version. - All versions must be listed in ifunc-impl-list.c. - Copyright (C) 2017-2022 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 - . */ - -#if IS_IN (libc) -# define bzero __redirect_bzero -# include -# undef bzero - -# include - -# define SYMBOL_NAME bzero -# include "ifunc-memset.h" - -sparc_libc_ifunc_redirected (__redirect_bzero, __bzero, IFUNC_SELECTOR) -weak_alias (__bzero, bzero) - -#endif diff --git a/sysdeps/sparc/sparc64/multiarch/ifunc-impl-list.c b/sysdeps/sparc/sparc64/multiarch/ifunc-impl-list.c index 05926e605b..9be12f9130 100644 --- a/sysdeps/sparc/sparc64/multiarch/ifunc-impl-list.c +++ b/sysdeps/sparc/sparc64/multiarch/ifunc-impl-list.c @@ -61,15 +61,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __mempcpy_ultra3) IFUNC_IMPL_ADD (array, i, mempcpy, 1, __mempcpy_ultra1)); - IFUNC_IMPL (i, name, bzero, - IFUNC_IMPL_ADD (array, i, bzero, hwcap & HWCAP_SPARC_ADP, - __bzero_niagara7) - IFUNC_IMPL_ADD (array, i, bzero, hwcap & HWCAP_SPARC_CRYPTO, - __bzero_niagara4) - IFUNC_IMPL_ADD (array, i, bzero, hwcap & HWCAP_SPARC_BLKINIT, - __bzero_niagara1) - IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ultra1)); - IFUNC_IMPL (i, name, memset, IFUNC_IMPL_ADD (array, i, memset, hwcap & HWCAP_SPARC_ADP, __memset_niagara7) diff --git a/sysdeps/sparc/sparc64/multiarch/ifunc-memset.h b/sysdeps/sparc/sparc64/multiarch/ifunc-memset.h index 56893b6883..0a2f16b3f1 100644 --- a/sysdeps/sparc/sparc64/multiarch/ifunc-memset.h +++ b/sysdeps/sparc/sparc64/multiarch/ifunc-memset.h @@ -1,4 +1,4 @@ -/* Common definition for memset/bzero implementation. +/* Common definition for memset implementation. All versions must be listed in ifunc-impl-list.c. Copyright (C) 2017-2022 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/sparc/sparc64/multiarch/memset-niagara1.S b/sysdeps/sparc/sparc64/multiarch/memset-niagara1.S index 13432effc1..7865691eca 100644 --- a/sysdeps/sparc/sparc64/multiarch/memset-niagara1.S +++ b/sysdeps/sparc/sparc64/multiarch/memset-niagara1.S @@ -45,9 +45,6 @@ ENTRY(__memset_niagara1) sllx %o2, 32, %g1 ba,pt %XCC, 1f or %g1, %o2, %o2 -END(__memset_niagara1) - -ENTRY(__bzero_niagara1) clr %o2 1: # ifndef USE_BRP @@ -171,6 +168,6 @@ ENTRY(__bzero_niagara1) 90: retl mov %o3, %o0 -END(__bzero_niagara1) +END(__memset_niagara1) #endif diff --git a/sysdeps/sparc/sparc64/multiarch/memset-niagara4.S b/sysdeps/sparc/sparc64/multiarch/memset-niagara4.S index 1ccf24e516..d6fbd83009 100644 --- a/sysdeps/sparc/sparc64/multiarch/memset-niagara4.S +++ b/sysdeps/sparc/sparc64/multiarch/memset-niagara4.S @@ -39,10 +39,6 @@ ENTRY(__memset_niagara4) sllx %o2, 32, %g1 ba,pt %icc, 1f or %g1, %o2, %o4 -END(__memset_niagara4) - - .align 32 -ENTRY(__bzero_niagara4) clr %o4 1: cmp %o1, 16 ble %icc, .Ltiny @@ -118,6 +114,6 @@ ENTRY(__bzero_niagara4) bne,pt %icc, 1b add %o0, 0x30, %o0 ba,a,pt %icc, .Lpostloop -END(__bzero_niagara4) +END(__memset_niagara4) #endif diff --git a/sysdeps/sparc/sparc64/multiarch/memset-niagara7.S b/sysdeps/sparc/sparc64/multiarch/memset-niagara7.S index 491b203ff9..6fcbf56675 100644 --- a/sysdeps/sparc/sparc64/multiarch/memset-niagara7.S +++ b/sysdeps/sparc/sparc64/multiarch/memset-niagara7.S @@ -99,13 +99,6 @@ .text .align 32 -ENTRY(__bzero_niagara7) - /* bzero (dst, size) */ - mov %o1, %o2 - mov 0, %o1 - /* fall through into memset code */ -END(__bzero_niagara7) - ENTRY(__memset_niagara7) /* memset (src, c, size) */ mov %o0, %o5 /* copy sp1 before using it */ diff --git a/sysdeps/sparc/sparc64/multiarch/memset-ultra1.S b/sysdeps/sparc/sparc64/multiarch/memset-ultra1.S index e0d3424307..3c3add791e 100644 --- a/sysdeps/sparc/sparc64/multiarch/memset-ultra1.S +++ b/sysdeps/sparc/sparc64/multiarch/memset-ultra1.S @@ -25,6 +25,5 @@ # define weak_alias(x, y) # define memset __memset_ultra1 -# define __bzero __bzero_ultra1 # include #endif