vc4: When doing algebraic optimization into a MOV, use the right MOV.
authorEric Anholt <eric@anholt.net>
Fri, 11 Dec 2015 06:02:30 +0000 (22:02 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 11 Dec 2015 20:21:22 +0000 (12:21 -0800)
If there were src unpacks, changing to the integer MOV instead of float
(for example) would change the unpack operation.

src/gallium/drivers/vc4/vc4_opt_algebraic.c

index f2e1938f474033461276c08a10031b679dce692f..207686b4af7defc689280fec788e533ddbd5702c 100644 (file)
@@ -94,7 +94,12 @@ static void
 replace_with_mov(struct vc4_compile *c, struct qinst *inst, struct qreg arg)
 {
         dump_from(c, inst);
-        inst->op = QOP_MOV;
+        if (qir_is_mul(inst))
+                inst->op = QOP_MMOV;
+        else if (qir_is_float_input(inst))
+                inst->op = QOP_FMOV;
+        else
+                inst->op = QOP_MOV;
         inst->src[0] = arg;
         inst->src[1] = c->undef;
         dump_to(c, inst);