diff options
author | Eric Anholt <eric@anholt.net> | 2015-08-21 00:08:13 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-08-21 13:29:26 -0700 |
commit | 89b1b33f44bc6ce71109ac8668529c30b6d6d910 (patch) | |
tree | a1a26d951a33898ee9ac9876308a8776d987da6f /src/gallium/drivers/vc4/vc4_register_allocate.c | |
parent | 7e0b868cf31003ada12063398fb91485ed8043dd (diff) | |
download | external_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.c | 13 |
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: |