summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_opt_small_immediates.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2015-10-24 17:35:03 -0700
committerEric Anholt <eric@anholt.net>2015-10-26 16:48:34 -0700
commit99a9a5a345fab8bbf36ab4e42581f8ee04a59a63 (patch)
treeaecc944d68f8f1fa6a32a12bf213d0550c91dac4 /src/gallium/drivers/vc4/vc4_opt_small_immediates.c
parent548b05d53f3c89630aa77fc92ff174f5d8162ab2 (diff)
downloadexternal_mesa3d-99a9a5a345fab8bbf36ab4e42581f8ee04a59a63.zip
external_mesa3d-99a9a5a345fab8bbf36ab4e42581f8ee04a59a63.tar.gz
external_mesa3d-99a9a5a345fab8bbf36ab4e42581f8ee04a59a63.tar.bz2
vc4: Switch the unpack ops to being unpack flags on a mov.
This paves the way for copy propagating our unpacks. We end up with a small change on shader-db: total instructions in shared programs: 89390 -> 89251 (-0.16%) instructions in affected programs: 19041 -> 18902 (-0.73%) which appears to be because we no longer convert MOVs for an FMAX dst, r4.unpack, r4.unpack (instead of the previous MOV dst, r4.unpack), and this ends up with a slightly better schedule.
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_opt_small_immediates.c')
-rw-r--r--src/gallium/drivers/vc4/vc4_opt_small_immediates.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/gallium/drivers/vc4/vc4_opt_small_immediates.c b/src/gallium/drivers/vc4/vc4_opt_small_immediates.c
index d6e98f0..e615621 100644
--- a/src/gallium/drivers/vc4/vc4_opt_small_immediates.c
+++ b/src/gallium/drivers/vc4/vc4_opt_small_immediates.c
@@ -56,6 +56,7 @@ qir_opt_small_immediates(struct vc4_compile *c)
struct qreg src = qir_follow_movs(c, inst->src[i]);
if (src.file != QFILE_UNIF ||
+ src.pack ||
c->uniform_contents[src.index] !=
QUNIFORM_CONSTANT) {
continue;
@@ -72,9 +73,6 @@ qir_opt_small_immediates(struct vc4_compile *c)
continue;
}
- if (qir_src_needs_a_file(inst))
- continue;
-
uint32_t imm = c->uniform_data[src.index];
uint32_t small_imm = qpu_encode_small_immediate(imm);
if (small_imm == ~0)