OSDN Git Service

vc4: Drop the multi_instruction distinction for QIR instructions.
authorEric Anholt <eric@anholt.net>
Mon, 21 Mar 2016 19:49:08 +0000 (12:49 -0700)
committerEric Anholt <eric@anholt.net>
Sat, 9 Apr 2016 01:41:45 +0000 (18:41 -0700)
It wasn't correctly flagged everywhere, and QPU generation now handles the
only remaining case that was paying attention to it.

No change on shader-db.

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

index e73e389..1eb09d7 100644 (file)
@@ -31,7 +31,6 @@ struct qir_op_info {
         const char *name;
         uint8_t ndst, nsrc;
         bool has_side_effects;
-        bool multi_instruction;
 };
 
 static const struct qir_op_info qir_op_info[] = {
@@ -65,10 +64,10 @@ static const struct qir_op_info qir_op_info[] = {
         [QOP_XOR] = { "xor", 1, 2 },
         [QOP_NOT] = { "not", 1, 1 },
 
-        [QOP_RCP] = { "rcp", 1, 1, false, true },
-        [QOP_RSQ] = { "rsq", 1, 1, false, true },
-        [QOP_EXP2] = { "exp2", 1, 2, false, true },
-        [QOP_LOG2] = { "log2", 1, 2, false, true },
+        [QOP_RCP] = { "rcp", 1, 1 },
+        [QOP_RSQ] = { "rsq", 1, 1 },
+        [QOP_EXP2] = { "exp2", 1, 2 },
+        [QOP_LOG2] = { "log2", 1, 2 },
         [QOP_TLB_STENCIL_SETUP] = { "tlb_stencil_setup", 0, 1, true },
         [QOP_TLB_Z_WRITE] = { "tlb_z", 0, 1, true },
         [QOP_TLB_COLOR_WRITE] = { "tlb_color", 0, 1, true },
@@ -144,12 +143,6 @@ qir_has_side_effect_reads(struct vc4_compile *c, struct qinst *inst)
 }
 
 bool
-qir_is_multi_instruction(struct qinst *inst)
-{
-        return qir_op_info[inst->op].multi_instruction;
-}
-
-bool
 qir_is_mul(struct qinst *inst)
 {
         switch (inst->op) {
@@ -492,8 +485,7 @@ qir_SF(struct vc4_compile *c, struct qreg src)
 
         if (src.file != QFILE_TEMP ||
             !c->defs[src.index] ||
-            last_inst != c->defs[src.index] ||
-            qir_is_multi_instruction(last_inst)) {
+            last_inst != c->defs[src.index]) {
                 struct qreg null = { QFILE_NULL, 0 };
                 last_inst = qir_MOV_dest(c, null, src);
                 last_inst = (struct qinst *)c->instructions.prev;
index dae1a0b..d973b8d 100644 (file)
@@ -463,7 +463,6 @@ int qir_get_op_nsrc(enum qop qop);
 bool qir_reg_equals(struct qreg a, struct qreg b);
 bool qir_has_side_effects(struct vc4_compile *c, struct qinst *inst);
 bool qir_has_side_effect_reads(struct vc4_compile *c, struct qinst *inst);
-bool qir_is_multi_instruction(struct qinst *inst);
 bool qir_is_mul(struct qinst *inst);
 bool qir_is_raw_mov(struct qinst *inst);
 bool qir_is_tex(struct qinst *inst);