Mesa (master): v3d: Move the "Find the ALU instruction generating our bool" out of bcsel.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 2 22:24:26 UTC 2019


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

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Dec 31 13:05:06 2018 -0800

v3d: Move the "Find the ALU instruction generating our bool" out of bcsel.

This will be reused for if statements.

---

 src/broadcom/compiler/nir_to_vir.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index 02ae6b20e2..ac3e103353 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -559,6 +559,14 @@ ntq_emit_comparison(struct v3d_compile *c,
         return true;
 }
 
+static struct nir_alu_instr *
+ntq_get_alu_parent(nir_src src)
+{
+        if (!src.is_ssa || src.ssa->parent_instr->type != nir_instr_type_alu)
+                return NULL;
+        return nir_instr_as_alu(src.ssa->parent_instr);
+}
+
 /**
  * Attempts to fold a comparison generating a boolean result into the
  * condition code for selecting between two values, instead of comparing the
@@ -567,12 +575,7 @@ ntq_emit_comparison(struct v3d_compile *c,
 static struct qreg ntq_emit_bcsel(struct v3d_compile *c, nir_alu_instr *instr,
                                   struct qreg *src)
 {
-        if (!instr->src[0].src.is_ssa)
-                goto out;
-        if (instr->src[0].src.ssa->parent_instr->type != nir_instr_type_alu)
-                goto out;
-        nir_alu_instr *compare =
-                nir_instr_as_alu(instr->src[0].src.ssa->parent_instr);
+        nir_alu_instr *compare = ntq_get_alu_parent(instr->src[0].src);
         if (!compare)
                 goto out;
 




More information about the mesa-commit mailing list