Mesa (master): aco: handle VOP3 modifiers when combining a constant comparison's NaN test

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jan 13 14:07:17 UTC 2020


Module: Mesa
Branch: master
Commit: 7ce244b7d1b22023a43c7ca4bb8bac30c699147c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7ce244b7d1b22023a43c7ca4bb8bac30c699147c

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Wed Dec 11 16:57:11 2019 +0000

aco: handle VOP3 modifiers when combining a constant comparison's NaN test

No pipeline-db changes

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-By: Timur Kristóf <timur.kristof at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3081>

---

 src/amd/compiler/aco_optimizer.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp
index 71353aae80b..6b46cb44494 100644
--- a/src/amd/compiler/aco_optimizer.cpp
+++ b/src/amd/compiler/aco_optimizer.cpp
@@ -1345,6 +1345,12 @@ bool combine_constant_comparison_ordering(opt_ctx &ctx, aco_ptr<Instruction>& in
    if (prop_nan0 != prop_nan1)
       return false;
 
+   if (nan_test->isVOP3()) {
+      VOP3A_instruction *vop3 = static_cast<VOP3A_instruction*>(nan_test);
+      if (vop3->neg[0] != vop3->neg[1] || vop3->abs[0] != vop3->abs[1] || vop3->opsel == 1 || vop3->opsel == 2)
+         return false;
+   }
+
    int constant_operand = -1;
    for (unsigned i = 0; i < 2; i++) {
       if (cmp->operands[i].isTemp() && original_temp_id(ctx, cmp->operands[i].getTemp()) == prop_nan0) {



More information about the mesa-commit mailing list