From patchwork Fri Jan 13 18:27:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 55414 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 A8F883881D09 for ; Fri, 13 Jan 2023 18:28:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A8F883881D09 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1673634480; bh=fASl2zLu0SQTj2aGf/ZCTackRSc5MymDNLVGZrHvsX0=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=HlQjz8pZrOrrjUkkm7eSL5AKqkuuXpe746lxidy3t0Uvn1NZapPPBxKonHK1umz1s Y0An1wVIAzeLNSAuQlm+bw0nZZ0JaRgBiJ7uajLTlsB+qy+iSYwPfUExS0LXNhc/mG IoICcjprgzfDQ7QOuJNEwgHMrBCay7fWbxzOiK74= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by sourceware.org (Postfix) with ESMTPS id 657573858425 for ; Fri, 13 Jan 2023 18:27:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 657573858425 Received: by mail-pj1-x1032.google.com with SMTP id b9-20020a17090a7ac900b00226ef160dcaso23464120pjl.2 for ; Fri, 13 Jan 2023 10:27:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fASl2zLu0SQTj2aGf/ZCTackRSc5MymDNLVGZrHvsX0=; b=ERdgkxlPkT0hULBF9PdQvbfdp5Q7w1mZa54E6G43rqejyU44N7dfdqzaC8AAqKenNA wUUBqx63ePT5MYrwKMSJVgPxMKuJowUZOymHL67VSMgl/S4r/WALuUUwfwmZEQ5Of4Y0 3ieZnNQCtyXFsRlJm9XjXgxXiWHlN8v5Lju08q080nyHDwuHOPhW6ZUSDY614/3LNcCJ Ljm0Vn8E5BR04XKQgHtD5NwM2PbAirtyqL+fig7I6hq1NJdj+YbawYwOFrKl7Za6leA3 +OphaAZbDRXmlGEjXFTqtYknYu/thJvfMhWJSFdH7Y56KCxRD7fRh4HPA4oDBo+erxFZ 828g== X-Gm-Message-State: AFqh2kqD/f1a7hgsfTmYBSKpAqCHOAkiJWS/qgv7JQtYA8G+8JLmzv1M g/i9qWdAVl6y5pp7/V4DG7OmNyKT0qg3IQxE X-Google-Smtp-Source: AMrXdXvX0FrZoPSyNF2DqY4FaBeXQKc/nOLxrpcg1wROhXZw/3Ytezd88XLITv8NiAKaE8fz/VNd2A== X-Received: by 2002:a17:902:c495:b0:193:ea7:52b8 with SMTP id n21-20020a170902c49500b001930ea752b8mr27236766plx.41.1673634456434; Fri, 13 Jan 2023 10:27:36 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id s17-20020a170902c65100b001927ebc40e2sm14443640pls.193.2023.01.13.10.27.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jan 2023 10:27:35 -0800 (PST) To: libc-alpha@sourceware.org Cc: adhemerval.zanella@linaro.org, goldstein.w.n@gmail.com Subject: [PATCH v8 00/17] Improve generic string routines Date: Fri, 13 Jan 2023 08:27:16 -1000 Message-Id: <20230113182733.1268668-1-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Richard Henderson via Libc-alpha From: Richard Henderson Reply-To: Richard Henderson Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Changes since v7: - Split string-fzc.h out of string-fzi.h, with all of the routines that are combinations of fza and fzi routines. - Fix missing find_t and shift_find() from alpha, arm, powerpc. - Use compiler builtins for arm and powerpc. - Define sh4 has_zero() via has_eq(), rather than reverse. r~ Adhemerval Zanella Netto (11): Parameterize op_t from memcopy.h Add string-maskoff.h generic header Add string vectorized find and detection functions string: Improve generic strlen string: Improve generic strnlen string: Improve generic strchr string: Improve generic strchrnul string: Improve generic strcmp string: Improve generic memchr string: Improve generic memrchr sh: Add string-fzb.h Richard Henderson (6): Parameterize OP_T_THRES from memcopy.h hppa: Add memcopy.h hppa: Add string-fzb.h and string-fzi.h alpha: Add string-fzb.h and string-fzi.h arm: Add string-fza.h powerpc: Add string-fza.h sysdeps/alpha/string-fza.h | 72 +++++++ sysdeps/alpha/string-fzb.h | 52 +++++ sysdeps/alpha/string-fzi.h | 62 ++++++ sysdeps/arm/armv6t2/string-fza.h | 85 ++++++++ sysdeps/generic/memcopy.h | 10 +- sysdeps/generic/string-extbyte.h | 37 ++++ sysdeps/generic/string-fza.h | 116 +++++++++++ sysdeps/generic/string-fzb.h | 49 +++++ sysdeps/generic/string-fzc.h | 91 +++++++++ sysdeps/generic/string-fzi.h | 71 +++++++ sysdeps/generic/string-maskoff.h | 73 +++++++ sysdeps/generic/string-opthr.h | 25 +++ sysdeps/generic/string-optype.h | 24 +++ sysdeps/hppa/memcopy.h | 42 ++++ sysdeps/hppa/string-fzb.h | 70 +++++++ sysdeps/hppa/string-fzc.h | 124 ++++++++++++ sysdeps/hppa/string-fzi.h | 63 ++++++ sysdeps/i386/memcopy.h | 3 - sysdeps/i386/string-opthr.h | 25 +++ sysdeps/m68k/memcopy.h | 3 - sysdeps/powerpc/power6/string-fza.h | 82 ++++++++ sysdeps/powerpc/powerpc32/power4/memcopy.h | 5 - sysdeps/powerpc/powerpc32/power6/string-fza.h | 1 + sysdeps/powerpc/powerpc64/power6/string-fza.h | 1 + sysdeps/sh/string-fzb.h | 59 ++++++ sysdeps/x86_64/x32/string-optype.h | 24 +++ string/memchr.c | 177 +++++----------- string/memcmp.c | 4 - string/memrchr.c | 190 +++--------------- string/strchr.c | 159 +-------------- string/strchrnul.c | 154 +++----------- string/strcmp.c | 118 +++++++++-- string/strlen.c | 87 ++------ string/strnlen.c | 137 +------------ sysdeps/i386/i686/multiarch/strnlen-c.c | 16 +- .../powerpc32/power4/multiarch/memchr-ppc32.c | 16 +- .../power4/multiarch/strchrnul-ppc32.c | 4 - .../power4/multiarch/strnlen-ppc32.c | 16 +- .../powerpc64/multiarch/memchr-ppc64.c | 9 +- sysdeps/s390/strchr-c.c | 13 +- sysdeps/s390/strchrnul-c.c | 2 - sysdeps/s390/strlen-c.c | 12 +- sysdeps/s390/strnlen-c.c | 16 +- 43 files changed, 1538 insertions(+), 861 deletions(-) create mode 100644 sysdeps/alpha/string-fza.h create mode 100644 sysdeps/alpha/string-fzb.h create mode 100644 sysdeps/alpha/string-fzi.h create mode 100644 sysdeps/arm/armv6t2/string-fza.h create mode 100644 sysdeps/generic/string-extbyte.h create mode 100644 sysdeps/generic/string-fza.h create mode 100644 sysdeps/generic/string-fzb.h create mode 100644 sysdeps/generic/string-fzc.h create mode 100644 sysdeps/generic/string-fzi.h create mode 100644 sysdeps/generic/string-maskoff.h create mode 100644 sysdeps/generic/string-opthr.h create mode 100644 sysdeps/generic/string-optype.h create mode 100644 sysdeps/hppa/memcopy.h create mode 100644 sysdeps/hppa/string-fzb.h create mode 100644 sysdeps/hppa/string-fzc.h create mode 100644 sysdeps/hppa/string-fzi.h create mode 100644 sysdeps/i386/string-opthr.h create mode 100644 sysdeps/powerpc/power6/string-fza.h create mode 100644 sysdeps/powerpc/powerpc32/power6/string-fza.h create mode 100644 sysdeps/powerpc/powerpc64/power6/string-fza.h create mode 100644 sysdeps/sh/string-fzb.h create mode 100644 sysdeps/x86_64/x32/string-optype.h