From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x143.google.com (mail-il1-x143.google.com [IPv6:2607:f8b0:4864:20::143]) by sourceware.org (Postfix) with ESMTPS id AFF6A3870854 for ; Thu, 28 May 2020 12:06:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org AFF6A3870854 Received: by mail-il1-x143.google.com with SMTP id 17so27330986ilj.3 for ; Thu, 28 May 2020 05:06:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ZZgwZhh5bEOg1URSW6vKrZRlTdWv6HOWh0kqQ+kDUgU=; b=bZzB72dK3piwRWknJVv+mFaakrD3zSsqM0JosRI2pwDTSMwhupKQ68hsVrCXBbSJj2 9Qjx3RJm+HGQeLAL86KzjdhgVnyGDgOTqrKKxQX/kuip/4B9UKhudBHuJeAK/5d0KbHY C8nVN/uvJUXgouImXufIoCKeXZnOfibmkAC53pDKFwtBFz/bRWCyiczIlqvEWd6LCG6I YXN748agPvpvfoyV7UGFenFci1aKZ2dtcvKB9aEANYDVl09uWdWStBLIgTjuQaqd4M6J bsDMrpI/xO+otR3+hPw3fNmlUWu6RUSr34zzkdUkeS3zW/ouG0QQ0Rpg1DlIkU0sayQt Xd+Q== X-Gm-Message-State: AOAM530APHEtWo39sZDlMAvZVZ2La5VhjSurprVEPZHmR6V7aAAAEhXE 5ypIJ6305G/LvXRH/A2sYXLADkOv0zEtZBYrisA= X-Google-Smtp-Source: ABdhPJyOhQMl1Dn/ZUUFPfpj2p9oykJQTNywrYJdGRd9m/xYVc4zbSjjd9uXxf1UeyVDigPFJtVyT6ewA5vMZNv+4cY= X-Received: by 2002:a92:cc4d:: with SMTP id t13mr2316274ilq.213.1590667568127; Thu, 28 May 2020 05:06:08 -0700 (PDT) MIME-Version: 1.0 References: <20200502150243.1347705-2-ibmibmibm.tw@gmail.com> In-Reply-To: <20200502150243.1347705-2-ibmibmibm.tw@gmail.com> From: "H.J. Lu" Date: Thu, 28 May 2020 05:05:32 -0700 Message-ID: Subject: Re: [PATCH v4 2/2] x86_64: roundeven with sse4.1 support To: Shen-Ta Hsieh Cc: GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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, 28 May 2020 12:06:10 -0000 On Sat, May 2, 2020 at 8:06 AM Shen-Ta Hsieh via Libc-alpha wrote: > > This patch adds support for the sse4.1 hardware floating point > roundeven. Do you have FSF paper on file? > Here is a benchmark result on my AMD Ryzen 9 3900X system: Since we don't know or may not care SSE4 machines without AVX, should we make it to AVX only? > * benchmark result before this commit > | | roundeven | roundevenf | > |------------|---------------|--------------| > | duration | 3.77783e+09 | 3.77792e+09 | > | iterations | 3.75706e+08 | 3.80448e+08 | > | max | 158.498 | 88.539 | > | min | 6.802 | 7.676 | > | mean | 10.0553 | 9.93018 | > > * benchmark result after this commit > | | roundeven | roundevenf | > |------------|---------------|---------------| > | duration | 3.77242e+09 | 3.77238e+09 | > | iterations | 5.18681e+08 | 5.2425e+08 | > | max | 127.338 | 172.102 | > | min | 7.03 | 7.03 | > | mean | 7.27311 | 7.19577 | > --- > sysdeps/x86_64/fpu/multiarch/Makefile | 5 +-- > sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c | 2 ++ > .../x86_64/fpu/multiarch/s_roundeven-sse4_1.S | 26 ++++++++++++++++ > sysdeps/x86_64/fpu/multiarch/s_roundeven.c | 31 +++++++++++++++++++ > sysdeps/x86_64/fpu/multiarch/s_roundevenf-c.c | 3 ++ > .../fpu/multiarch/s_roundevenf-sse4_1.S | 26 ++++++++++++++++ > sysdeps/x86_64/fpu/multiarch/s_roundevenf.c | 31 +++++++++++++++++++ > 7 files changed, 122 insertions(+), 2 deletions(-) > create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c > create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S > create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundeven.c > create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundevenf-c.c > create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S > create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundevenf.c > > diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile > index 3836574f48..7e3a3f78cb 100644 > --- a/sysdeps/x86_64/fpu/multiarch/Makefile > +++ b/sysdeps/x86_64/fpu/multiarch/Makefile > @@ -1,11 +1,12 @@ > ifeq ($(subdir),math) > libm-sysdep_routines += s_floor-c s_ceil-c s_floorf-c s_ceilf-c \ > s_rint-c s_rintf-c s_nearbyint-c s_nearbyintf-c \ > - s_trunc-c s_truncf-c > + s_roundeven-c s_roundevenf-c s_trunc-c s_truncf-c > > libm-sysdep_routines += s_ceil-sse4_1 s_ceilf-sse4_1 s_floor-sse4_1 \ > s_floorf-sse4_1 s_nearbyint-sse4_1 \ > - s_nearbyintf-sse4_1 s_rint-sse4_1 s_rintf-sse4_1 \ > + s_nearbyintf-sse4_1 s_roundeven-sse4_1 \ > + s_roundevenf-sse4_1 s_rint-sse4_1 s_rintf-sse4_1 \ > s_trunc-sse4_1 s_truncf-sse4_1 > > libm-sysdep_routines += e_exp-fma e_log-fma e_pow-fma s_atan-fma \ > diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c b/sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c > new file mode 100644 > index 0000000000..c7be43cb22 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c > @@ -0,0 +1,2 @@ > +#define __roundeven __roundeven_c > +#include > diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S > new file mode 100644 > index 0000000000..6db88a1649 > --- /dev/null > +++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S > @@ -0,0 +1,26 @@ > +/* Round to nearest integer value, rounding halfway cases to even. > + double version. > + Copyright (C) 2019 Free Software Foundation, Inc. Please replace all 2019 with 2020. -- H.J.