vc4: Stop being so clever in CMP handling.
authorEric Anholt <eric@anholt.net>
Mon, 25 Aug 2014 01:00:44 +0000 (18:00 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 4 Sep 2014 18:39:51 +0000 (11:39 -0700)
This kind of cleverness should be in a general merging-of-ADD-and-MUL
instruction scheduler, rather than individual opcodes.

src/gallium/drivers/vc4/vc4_qpu_emit.c

index 9f5ccdb0cf6011810bebe7aa89f68b7bd1bca09c..4e28ff7c3b809e63ea45ef329b911c8df2790b06 100644 (file)
@@ -369,30 +369,13 @@ vc4_generate_code(struct qcompile *c)
                         queue(c, qpu_a_MOV(qpu_ra(QPU_W_NOP), src[0]));
                         *last_inst(c) |= QPU_SF;
 
-                        if (dst.mux <= QPU_MUX_R3) {
-                                fixup_raddr_conflict(c, src[1], &src[2]);
-                                queue(c, qpu_inst(qpu_a_MOV(dst, src[1]),
-                                                  qpu_m_MOV(dst, src[2])));
-                                *last_inst(c) = qpu_set_cond_add(*last_inst(c),
-                                                                 QPU_COND_NS);
-                                *last_inst(c) = qpu_set_cond_mul(*last_inst(c),
-                                                                 QPU_COND_NC);
-                        } else {
-                                if (dst.mux == src[1].mux &&
-                                    dst.addr == src[1].addr) {
-                                        queue(c, qpu_a_MOV(dst, src[1]));
-
-                                        queue(c, qpu_a_MOV(dst, src[2]));
-                                        *last_inst(c) = qpu_set_cond_add(*last_inst(c),
-                                                                         QPU_COND_NC);
-                                } else {
-                                        queue(c, qpu_a_MOV(dst, src[2]));
+                        queue(c, qpu_a_MOV(dst, src[1]));
+                        *last_inst(c) = qpu_set_cond_add(*last_inst(c),
+                                                         QPU_COND_NS);
 
-                                        queue(c, qpu_a_MOV(dst, src[1]));
-                                        *last_inst(c) = qpu_set_cond_add(*last_inst(c),
-                                                                         QPU_COND_NS);
-                                }
-                        }
+                        queue(c, qpu_a_MOV(dst, src[2]));
+                        *last_inst(c) = qpu_set_cond_add(*last_inst(c),
+                                                         QPU_COND_NC);
                         break;
 
                 case QOP_SEQ: