From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 0014D3858407; Sun, 13 Feb 2022 21:00:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0014D3858407 From: "Dave.Love at manchester dot ac.uk" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/103008] poor inlined builtin_fmod on x86_64 Date: Sun, 13 Feb 2022 21:00:37 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 11.2.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: Dave.Love at manchester dot ac.uk X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Feb 2022 21:00:38 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103008 --- Comment #15 from Dave.Love at manchester dot ac.uk --- "ubizjak at gmail dot com" writes: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103008 > > --- Comment #14 from Uro=C5=A1 Bizjak --- > Created attachment 52428 > --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D52428&action=3Dedit > Proposed patch > > The attached patch implements: > > fmod (a, p) =3D a - trunc (a/p) * p > drem (a, p) =3D a - roundeven (a/p) * p > > using SSE4 round instruction (and uses fnma when available). > > Timings with Polyhedron ac.f90 on IvyBridge-E, Fedora-34, glibc 2.33-21.f= c34 > > -Ofast: > 6,150082000 seconds user > > -Ofast -mno-80387: > 18,354654000 seconds user > > -Ofast -msse4: > 5,722511000 seconds user I realize I never made a Fortran bug report about this, and should do. (I think the gfortran intrinsic should avoid fmod anyway, and just use the standard's arithmetical definition of MOD without having to bother about errors.)=