vc4: Move follow_movs() to common QIR code.
authorEric Anholt <eric@anholt.net>
Wed, 10 Dec 2014 23:37:07 +0000 (15:37 -0800)
committerEric Anholt <eric@anholt.net>
Thu, 18 Dec 2014 03:05:52 +0000 (19:05 -0800)
I want this from other passes.

src/gallium/drivers/vc4/vc4_opt_algebraic.c
src/gallium/drivers/vc4/vc4_qir.c
src/gallium/drivers/vc4/vc4_qir.h

index ec526fb3d18f4e8dbe3fd3428e6891f508fd96a2..4376c7ba08f38ee6a79cf07e509677cdc3194a03 100644 (file)
@@ -59,19 +59,10 @@ dump_to(struct vc4_compile *c, struct qinst *inst)
         fprintf(stderr, "\n");
 }
 
-static struct qreg
-follow_movs(struct qinst **defs, struct qreg reg)
-{
-        while (reg.file == QFILE_TEMP && defs[reg.index]->op == QOP_MOV)
-                reg = defs[reg.index]->src[0];
-
-        return reg;
-}
-
 static bool
 is_zero(struct vc4_compile *c, struct qinst **defs, struct qreg reg)
 {
-        reg = follow_movs(defs, reg);
+        reg = qir_follow_movs(defs, reg);
 
         return (reg.file == QFILE_UNIF &&
                 c->uniform_contents[reg.index] == QUNIFORM_CONSTANT &&
@@ -81,7 +72,7 @@ is_zero(struct vc4_compile *c, struct qinst **defs, struct qreg reg)
 static bool
 is_1f(struct vc4_compile *c, struct qinst **defs, struct qreg reg)
 {
-        reg = follow_movs(defs, reg);
+        reg = qir_follow_movs(defs, reg);
 
         return (reg.file == QFILE_UNIF &&
                 c->uniform_contents[reg.index] == QUNIFORM_CONSTANT &&
index 49b79014c095e19f2b96e88d402cd0105f517ed1..d7251abda1c497c273acbb3230e5a6ce026abd73 100644 (file)
@@ -327,6 +327,15 @@ qir_remove_instruction(struct qinst *qinst)
         free(qinst);
 }
 
+struct qreg
+qir_follow_movs(struct qinst **defs, struct qreg reg)
+{
+        while (reg.file == QFILE_TEMP && defs[reg.index]->op == QOP_MOV)
+                reg = defs[reg.index]->src[0];
+
+        return reg;
+}
+
 void
 qir_compile_destroy(struct vc4_compile *c)
 {
index 46f4c12b22c54fdb5e9e960fb043e12f7e7a71a4..40c0d3d04dd68e118727a7d0bd742980a47886b0 100644 (file)
@@ -371,6 +371,7 @@ bool qir_has_side_effects(struct vc4_compile *c, struct qinst *inst);
 bool qir_depends_on_flags(struct qinst *inst);
 bool qir_writes_r4(struct qinst *inst);
 bool qir_reads_r4(struct qinst *inst);
+struct qreg qir_follow_movs(struct qinst **defs, struct qreg reg);
 
 void qir_dump(struct vc4_compile *c);
 void qir_dump_inst(struct vc4_compile *c, struct qinst *inst);