From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by sourceware.org (Postfix) with ESMTPS id 30D663857814 for ; Thu, 21 Oct 2021 20:01:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 30D663857814 Received: by mail-pj1-x1029.google.com with SMTP id s61-20020a17090a69c300b0019f663cfcd1so4015541pjj.1 for ; Thu, 21 Oct 2021 13:01:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AoxqfRq5bBxBN3o71olsqBqzVcL/lZp3ydPXAy2pWh4=; b=FIluHgL59CqAwDld5c5rnIwU2I7Z2Bb1vMpyz0NTv6xksd6WZpYNA6uhM5OsczQfGs RDOJsLMDmeBXkd9iN+GgQGe32FJU7sZPPIi9Eo9EGxzoYxtoTc+5s7koS2QQpM7VaLb7 uIv0dzfotE9nDks+Qj98OM6JygboGozPeiXG+37Y0k/4jSe0pv155yxFB7YLeZZCSXGe zQWClQHoIa9z7+IHonQ3m1yKrG3pgpEVa3Vlc/PqsZP73wnN1ULn6ze7IFtgeXim8JHx t+6M0vUTgHbo44176zTr3vH6OA28F8lPSoGFzZAMD1xVBmVW1T5hIGfp0jr3bUWEjNME vl7A== X-Gm-Message-State: AOAM532t8qBG//EI4j5IhTtL1/X46lsAjxj6HM7bkb3P/DZSGo9jc+yw DkGzrH+JGe8sq/ygP5UxS1sc+MgPdmxdnmf701bBzgH2 X-Google-Smtp-Source: ABdhPJyJSIhPm9JHfl84Dl69vXgHElvYTn6QKYSQHAa2Nru0T6fdDH9zt35nEWAmwFZaeEfALnfw6HX3KfEAlelQc7A= X-Received: by 2002:a17:90a:6b0b:: with SMTP id v11mr9324182pjj.178.1634846483310; Thu, 21 Oct 2021 13:01:23 -0700 (PDT) MIME-Version: 1.0 References: <20210927203827.2852935-1-goldstein.w.n@gmail.com> <20210929151743.3351092-1-goldstein.w.n@gmail.com> <8ee11473-cdfd-3dbe-47a1-dffddc996b34@linaro.org> In-Reply-To: <8ee11473-cdfd-3dbe-47a1-dffddc996b34@linaro.org> From: Noah Goldstein Date: Thu, 21 Oct 2021 15:01:12 -0500 Message-ID: Subject: Re: [PATCH v7] String: Add support for __memcmpeq() ABI on all targets To: Adhemerval Zanella Cc: GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP 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-List-Received-Date: Thu, 21 Oct 2021 20:01:25 -0000 On Thu, Oct 21, 2021 at 2:33 PM Adhemerval Zanella wrote: > > > > On 29/09/2021 12:17, Noah Goldstein via Libc-alpha wrote: > > No bug. > > > > This commit adds support for __memcmpeq() as a new ABI for all > > targets. In this commit __memcmpeq() is implemented only as an alias > > to the corresponding targets memcmp() implementation. __memcmpeq() is > > added as a new symbol starting with GLIBC_2.35 and defined in string.h > > with comments explaining its behavior. Basic tests that it is callable > > and works where added in string/tester.c > > > > As discussed in the proposal "Add new ABI '__memcmpeq()' to libc" > > __memcmpeq() is essentially a reserved namespace for bcmp(). The means > > is shares the same specifications as memcmp() except the return value > > for non-equal byte sequences is any non-zero value. This is less > > strict than memcmp()'s return value specification and can be better > > optimized when a boolean return is all that is needed. > > > > __memcmpeq() is meant to only be called by compilers if they can prove > > that the return value of a memcmp() call is only used for its boolean > > value. > > > > Should we export memcmpeq() as a GNU extension as well? > > > All tests in string/tester.c passed. As well build succeeds on > > x86_64-linux-gnu target. > > This patch requires a NEWS entry for the new symbol and most likely > a manual entry to describe its semantic. My understanding is that since we are only exporting this symbol for compiler use (to optimize boolean use of 'memcmp()') we weren't planning to add a manual entry. > > I also think we should model a new testing based on test-memcmp.c > to check for multiple alignments and random inputs. In this patch __memcmpeq is always just memcmp which is tested. In my followup patch (once this one gets through) to add separate implementations for x86_64 I add tests. Would it be better to include those tests in this patchset?