From f81f3c85e257e091c98264ba9eebba9407298033 Mon Sep 17 00:00:00 2001 From: Christoph Pillmayer Date: Fri, 29 Aug 2025 15:08:22 +0000 Subject: [PATCH] nir/opt_algebraic: Convert a + b + a to b + 2a This allows fusing into one FMA later. Reviewed-by: Georg Lehmann Part-of: --- src/amd/ci/traces-amd.yml | 2 +- src/compiler/nir/nir_opt_algebraic.py | 1 + src/freedreno/ci/traces-freedreno.yml | 4 ++-- src/gallium/drivers/virgl/ci/traces-virgl.yml | 2 +- src/gallium/drivers/zink/ci/traces-zink.yml | 8 ++++---- src/intel/ci/traces-iris.yml | 6 +++--- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/amd/ci/traces-amd.yml b/src/amd/ci/traces-amd.yml index 8a41ed3e6f8..a439387bd14 100644 --- a/src/amd/ci/traces-amd.yml +++ b/src/amd/ci/traces-amd.yml @@ -38,7 +38,7 @@ traces: checksum: 6cb8190a2ee4c335291914fbc70a8bb8 gputest/furmark-v2.trace: gl-radeonsi-stoney: - checksum: d9452b1aa606d61a51a80fb4644b7303 + checksum: 1b0894a0059e5cdb6aadb24a7d291e9f gputest/triangle-v2.trace: gl-radeonsi-stoney: checksum: 2d0527e7288a0fc31099404546dadbfb diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 7aae5cf4943..3827ce40a44 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -243,6 +243,7 @@ optimizations = [ (('~fadd', a, ('fadd', ('fneg', a), b)), b), (('fadd', ('fsat', a), ('fsat', ('fneg', a))), ('fsat', ('fabs', a))), (('fadd', a, a), ('fmul', a, 2.0)), + (('fadd(contract)', a, ('fadd(is_used_once)', a, b)), ('fadd', b, ('fmul', a, 2.0))), (('~fmul', a, 0.0), 0.0), # The only effect a*0.0 should have is when 'a' is infinity, -0.0 or NaN (('fmul(nsz,nnan)', 'a', 0.0), 0.0), diff --git a/src/freedreno/ci/traces-freedreno.yml b/src/freedreno/ci/traces-freedreno.yml index e78c0c362f6..045e3b42ef8 100644 --- a/src/freedreno/ci/traces-freedreno.yml +++ b/src/freedreno/ci/traces-freedreno.yml @@ -190,9 +190,9 @@ traces: freedreno-a530: checksum: 88188447495b819e5814368486deb0a0 freedreno-a618: - checksum: eb810bd258c06f873a2d9718c5209c6d + checksum: 709d72f86faa9b768495888b49cad086 zink-a618: - checksum: eefcef0b1167c1140c298f3908c31195 + checksum: ac00716889f247788292e838139bc2ac # gimark requires an environment var to work around a bug, disable for now # gputest/gimark-v2.trace: diff --git a/src/gallium/drivers/virgl/ci/traces-virgl.yml b/src/gallium/drivers/virgl/ci/traces-virgl.yml index c8bbfc3efc6..de87dd61a43 100644 --- a/src/gallium/drivers/virgl/ci/traces-virgl.yml +++ b/src/gallium/drivers/virgl/ci/traces-virgl.yml @@ -9,7 +9,7 @@ traces: checksum: f8eba0fec6e3e0af9cb09844bc73bdc8 gputest/furmark-v2.trace: gl-virgl: - checksum: e9013d2861ac60b5b80d759455a6f058 + checksum: 95b55f29d9f6dceb842386ea887861d4 gputest/triangle-v2.trace: gl-virgl: checksum: 7812de00011a3a059892e36cea19c696 diff --git a/src/gallium/drivers/zink/ci/traces-zink.yml b/src/gallium/drivers/zink/ci/traces-zink.yml index 2a07234ebf1..d5f610ac37c 100644 --- a/src/gallium/drivers/zink/ci/traces-zink.yml +++ b/src/gallium/drivers/zink/ci/traces-zink.yml @@ -67,13 +67,13 @@ traces: gputest/furmark-v2.trace: gl-zink-anv-adl: label: [no-perf] - checksum: 30649dc37efcf5dadc7b761769de51d7 + checksum: 2d3f45cda72a1f8a54fd115fb27ee8d6 gl-zink-anv-tgl: - checksum: 30649dc37efcf5dadc7b761769de51d7 + checksum: 2d3f45cda72a1f8a54fd115fb27ee8d6 zink-radv-vangogh: - checksum: d02c3021f720ae4b1023fc298f125581 + checksum: 6466543da6b14d7e35630c6ed3e90e5f zink-radv-gfx1201: - checksum: d02c3021f720ae4b1023fc298f125581 + checksum: 6466543da6b14d7e35630c6ed3e90e5f gputest/triangle-v2.trace: gl-zink-anv-adl: diff --git a/src/intel/ci/traces-iris.yml b/src/intel/ci/traces-iris.yml index 723c7043930..58a076be6a5 100644 --- a/src/intel/ci/traces-iris.yml +++ b/src/intel/ci/traces-iris.yml @@ -97,13 +97,13 @@ traces: checksum: 448886e3b24f6408e013ea13f7c96d28 gputest/furmark-v2.trace: gl-intel-apl: - checksum: 06f4222f7f5737f93ed1d191cbdc0798 + checksum: 54305eb5dd7fea9e34bd61567bbd4c08 gl-intel-glk: - checksum: 06f4222f7f5737f93ed1d191cbdc0798 + checksum: 54305eb5dd7fea9e34bd61567bbd4c08 gl-intel-amly: checksum: 06f4222f7f5737f93ed1d191cbdc0798 gl-intel-kbl: - checksum: 06f4222f7f5737f93ed1d191cbdc0798 + checksum: 54305eb5dd7fea9e34bd61567bbd4c08 gl-intel-whl: checksum: 06d587a2b934295da6ad874b750b9c9d gl-intel-cml: