freedreno/a4xx: format updates
[mesa.git] / src / gallium / drivers / vc4 / vc4_opt_dead_code.c
index 94ab382500daea82774f401edc3641bce20d5a36..ffd42422de8c7fcfa34f7d808ea770fa8ebebca6 100644 (file)
@@ -43,7 +43,8 @@ dce(struct vc4_compile *c, struct qinst *inst)
                 qir_dump_inst(c, inst);
                 fprintf(stderr, "\n");
         }
-        qir_remove_instruction(inst);
+        assert(!inst->sf);
+        qir_remove_instruction(c, inst);
 }
 
 static bool
@@ -85,7 +86,7 @@ qir_opt_dead_code(struct vc4_compile *c)
         /* Whether we're eliminating texture setup currently. */
         bool dce_tex = false;
 
-        struct simple_node *node, *t;
+        struct list_head *node, *t;
         for (node = c->instructions.prev, t = node->prev;
              &c->instructions != node;
              node = t, t = t->prev) {
@@ -93,6 +94,7 @@ qir_opt_dead_code(struct vc4_compile *c)
 
                 if (inst->dst.file == QFILE_TEMP &&
                     !used[inst->dst.index] &&
+                    !inst->sf &&
                     (!qir_has_side_effects(c, inst) ||
                      inst->op == QOP_TEX_RESULT) &&
                     !has_nonremovable_reads(c, inst)) {
@@ -120,11 +122,16 @@ qir_opt_dead_code(struct vc4_compile *c)
 
                 if (qir_depends_on_flags(inst))
                         sf_used = true;
-                if (inst->op == QOP_SF) {
+                if (inst->sf) {
                         if (!sf_used) {
-                                dce(c, inst);
+                                if (debug) {
+                                        fprintf(stderr, "Removing SF on: ");
+                                        qir_dump_inst(c, inst);
+                                        fprintf(stderr, "\n");
+                                }
+
+                                inst->sf = false;
                                 progress = true;
-                                continue;
                         }
                         sf_used = false;
                 }