From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id A4EAD38582A9; Thu, 8 Feb 2024 11:38:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A4EAD38582A9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1707392298; bh=hxUW09qjlx7yW/BN6jRWVn6194ZPrSfqErlva5JYGIE=; h=From:To:Subject:Date:From; b=prSgh96h5iAko2pTyEw5beKImrYDm2rNKH0/pQ3XKCTGni4G8083R1M9gYnRtCQ3U Ql86TLoR9iDA6JrQFQ4vwtyM+pvWaJAAKsdyOIw+1teJOAO/jdnTtDJIQSmnZB3Aw1 s+bgthvCf+ij25MPzvexHmgT/WBxHwvAbqRcSlvc= From: "rdapp at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/113827] New: MrBayes benchmark redundant load Date: Thu, 08 Feb 2024 11:38:17 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: rdapp at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED 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: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter cc blocked target_milestone cf_gcctarget Message-ID: 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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D113827 Bug ID: 113827 Summary: MrBayes benchmark redundant load Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: rdapp at gcc dot gnu.org CC: juzhe.zhong at rivai dot ai, law at gcc dot gnu.org, pan2.li at intel dot com Blocks: 79704 Target Milestone: --- Target: riscv A hot block in the MrBayes benchmark (as used in the Phoronix testsuite) ha= s a redundant scalar load when vectorized. Minimal example, compiled with -march=3Drv64gcv -O3 int foo (float **a, float f, int n) { for (int i =3D 0; i < n; i++) { a[i][0] /=3D f; a[i][1] /=3D f; a[i][2] /=3D f; a[i][3] /=3D f; a[i] +=3D 4; } } GCC: .L3: ld a5,0(a0) vle32.v v1,0(a5) vfmul.vv v1,v1,v2 vse32.v v1,0(a5) addi a5,a5,16 sd a5,0(a0) addi a0,a0,8 bne a0,a4,.L3 The value of a5 doesn't change after the store to 0(a0). LLVM: .L3 vle32.v v8,(a1) addi a3,a1,16 sd a3,0(a2) vfdiv.vf v8,v8,fa5 addi a2,a2,8 vse32.v v8,(a1) bne a2,a0,.L3 Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D79704 [Bug 79704] [meta-bug] Phoronix Test Suite compiler performance issues=