From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by sourceware.org (Postfix) with ESMTPS id 7C7BD383557F for ; Wed, 14 Dec 2022 08:08:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7C7BD383557F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lj1-x229.google.com with SMTP id v11so5852471ljk.12 for ; Wed, 14 Dec 2022 00:08:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/aVwPhfQBrVzY1lE7TXr26t0wRiFqq9b7yR8ex3Nhmc=; b=U/Xl+H5BZytZiQ0qDu7f2cKsVBCoATjCHioriQaVec3CEfmZiiYlKdd5xE1ehsVBdA EZSxQYqn7o2ALITv9DjckL3A6x1XQ3ENHMR2msvtMg/iVbf3lWcH/JJQAEzXofRlA3bG NE0MWZ2SsBvW2UxmnxNv2t5Boz0f4kMQNB0qUbLtyuSzOBJq1X2k40E8Vn0CV6VvkJ4i xxMezOMxayVmtEG4av57LdXp2/GmixNU9G5cY3TPy8c2lpGYLWeg+g2Yk6vZjgkbCOkA 6VqiDTJRITBU81PK2cLpU+S7UQmxB02U69U8AyJCsTMhqKqe6OXGWHj5vIJSQ0DZw2e5 MIKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/aVwPhfQBrVzY1lE7TXr26t0wRiFqq9b7yR8ex3Nhmc=; b=UsithLdGa+GSyNeWLfDHLBglGjcD4c4eHK6dXrJljfD7AIkURTYwLCm3mRALGj9FcE qFQ/6Bu5V34dscp7UtB+4aFRVg98jpNpRJ6XXO9zkhitEf7FvsWkvdQftF4dSnTPJGuv V2t/NP7Pwrii/Q0AuH2JLM16XLzebFrS0+WyjJTSE/zIYcTTkSRJlPG0MgOAyd+gjlVz QVPuCSNgei2/geyiRnGJ55rSG8jIHsWzkngHN9BC96oTaJRLqKe60sz58nb7VTrTJDz4 ioxI6y4M4nLr3bvplfPhGf7k/PfF/qRnZFdVxOXeJPzQ+eyW2lE2JJL1HiNKmvTZi7YZ QCpA== X-Gm-Message-State: ANoB5pkwfvB0CWyTSQmhhWDi2TeUpICOlwcbJf6d0s2QuR0tSlstTEzS bHUiB3Lh0JTdf0gt26mCeGw2legf0/m0ir08bW8= X-Google-Smtp-Source: AA0mqf4udbzZoi9yCvvDhgJFsNNrcLnf2cfLA1Lkovg9rOGlRG0rmufZC5LJt08WZPTU/Lkqc/AoXzUtHIN7tT2QawU= X-Received: by 2002:a2e:b991:0:b0:27a:233e:1845 with SMTP id p17-20020a2eb991000000b0027a233e1845mr2819832ljp.297.1671005294790; Wed, 14 Dec 2022 00:08:14 -0800 (PST) MIME-Version: 1.0 References: <20221214021842.1015348-1-hongtao.liu@intel.com> In-Reply-To: <20221214021842.1015348-1-hongtao.liu@intel.com> From: Richard Biener Date: Wed, 14 Dec 2022 09:08:02 +0100 Message-ID: Subject: Re: [PATCH] [x86] x86: Don't add crtfastmath.o for -shared and add a new option -mdaz-ftz to enable FTZ and DAZ flags in MXCSR. To: liuhongt Cc: gcc-patches@gcc.gnu.org, crazylht@gmail.com, hjl.tools@gmail.com, ubizjak@gmail.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-7.0 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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Wed, Dec 14, 2022 at 3:21 AM liuhongt via Gcc-patches wrote: > > Don't add crtfastmath.o for -shared to avoid changing the MXCSR > register when loading a shared library. crtfastmath.o will be used > only when building executables. > > Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,}. > Ok for trunk? You reject negative -mdaz-ftz but wouldn't that be useful with -Ofast -mno-daz-ftz since there's otherwise no way to avoid that? Richard. > gcc/ChangeLog: > > PR target/55522 > PR target/36821 > * config/i386/gnu-user-common.h (GNU_USER_TARGET_MATHFILE_SPEC): > Link crtfastmath.o when -mdaz-ftz is specified, not link it > when -shared is specified. > * config/i386/i386.opt (mdaz-ftz): New option. > * doc/invoke.texi (x86 options): Document mftz-daz. > --- > gcc/config/i386/gnu-user-common.h | 2 +- > gcc/config/i386/i386.opt | 4 ++++ > gcc/doc/invoke.texi | 10 +++++++++- > 3 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/gcc/config/i386/gnu-user-common.h b/gcc/config/i386/gnu-user-common.h > index cab9be2bfb7..02e4a2192a4 100644 > --- a/gcc/config/i386/gnu-user-common.h > +++ b/gcc/config/i386/gnu-user-common.h > @@ -47,7 +47,7 @@ along with GCC; see the file COPYING3. If not see > > /* Similar to standard GNU userspace, but adding -ffast-math support. */ > #define GNU_USER_TARGET_MATHFILE_SPEC \ > - "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ > + "%{Ofast|ffast-math|funsafe-math-optimizations|mdaz-ftz:%{!shared:crtfastmath.o%s}} \ > %{mpc32:crtprec32.o%s} \ > %{mpc64:crtprec64.o%s} \ > %{mpc80:crtprec80.o%s}" > diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt > index fb4e57ada7c..8fd222db857 100644 > --- a/gcc/config/i386/i386.opt > +++ b/gcc/config/i386/i386.opt > @@ -420,6 +420,10 @@ mpc80 > Target RejectNegative > Set 80387 floating-point precision to 80-bit. > > +mdaz-ftz > +Target RejectNegative > +Set the FTZ and DAZ Flags. > + > mpreferred-stack-boundary= > Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg) > Attempt to keep stack aligned to this power of 2. > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index cb40b38b73a..670e3767fbd 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -1433,7 +1433,7 @@ See RS/6000 and PowerPC Options. > -m96bit-long-double -mlong-double-64 -mlong-double-80 -mlong-double-128 @gol > -mregparm=@var{num} -msseregparm @gol > -mveclibabi=@var{type} -mvect8-ret-in-mem @gol > --mpc32 -mpc64 -mpc80 -mstackrealign @gol > +-mpc32 -mpc64 -mpc80 -mdaz-ftz -mstackrealign @gol > -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol > -mcmodel=@var{code-model} -mabi=@var{name} -maddress-mode=@var{mode} @gol > -m32 -m64 -mx32 -m16 -miamcu -mlarge-data-threshold=@var{num} @gol > @@ -32752,6 +32752,14 @@ are enabled by default; routines in such libraries could suffer significant > loss of accuracy, typically through so-called ``catastrophic cancellation'', > when this option is used to set the precision to less than extended precision. > > +@item -mdaz-ftz > +@opindex mdaz-ftz > + > +the flush-to-zero (FTZ) and denormals-are-zero (DAZ) flags in the MXCSR register > +are used to control floating-point calculations.SSE and AVX instructions > +including scalar and vector instructions could benefit from enabling the FTZ > +and DAZ flags when @option{-mdaz-ftz} is specified. Maybe say that the MXCSR register is set at program start to achieve this when the flag is specified at _link_ time and say this switch is ignored when -shared is specified? > + > @item -mstackrealign > @opindex mstackrealign > Realign the stack at entry. On the x86, the @option{-mstackrealign} > -- > 2.27.0 >