summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_register_allocate.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2015-08-21 00:08:13 -0700
committerEric Anholt <eric@anholt.net>2015-08-21 13:29:26 -0700
commit89b1b33f44bc6ce71109ac8668529c30b6d6d910 (patch)
treea1a26d951a33898ee9ac9876308a8776d987da6f /src/gallium/drivers/vc4/vc4_register_allocate.c
parent7e0b868cf31003ada12063398fb91485ed8043dd (diff)
downloadexternal_mesa3d-89b1b33f44bc6ce71109ac8668529c30b6d6d910.zip
external_mesa3d-89b1b33f44bc6ce71109ac8668529c30b6d6d910.tar.gz
external_mesa3d-89b1b33f44bc6ce71109ac8668529c30b6d6d910.tar.bz2
vc4: Fold the 16-bit integer pack into the instructions generating it.
total instructions in shared programs: 97580 -> 96798 (-0.80%) instructions in affected programs: 52826 -> 52044 (-1.48%)
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_register_allocate.c')
-rw-r--r--src/gallium/drivers/vc4/vc4_register_allocate.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/gallium/drivers/vc4/vc4_register_allocate.c b/src/gallium/drivers/vc4/vc4_register_allocate.c
index 9301314..2ea8850 100644
--- a/src/gallium/drivers/vc4/vc4_register_allocate.c
+++ b/src/gallium/drivers/vc4/vc4_register_allocate.c
@@ -268,16 +268,17 @@ vc4_register_allocate(struct vc4_context *vc4, struct vc4_compile *c)
AB_INDEX + QPU_R_FRAG_PAYLOAD_ZW * 2);
break;
- case QOP_PACK_16A_I:
- case QOP_PACK_16B_I:
- /* The pack flags require an A-file dst register. */
- class_bits[inst->dst.index] &= CLASS_BIT_A;
- break;
-
default:
break;
}
+ if (inst->dst.pack && !qir_is_mul(inst)) {
+ /* The non-MUL pack flags require an A-file dst
+ * register.
+ */
+ class_bits[inst->dst.index] &= CLASS_BIT_A;
+ }
+
if (qir_src_needs_a_file(inst)) {
switch (inst->op) {
case QOP_UNPACK_8A_F: