diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2016-07-29 01:29:09 -0700 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2016-08-04 00:40:10 -0700 |
commit | 12a912586f11ccbc4612532d5ceaf1bdd0cdb45a (patch) | |
tree | ac76f4daa209bed809f2dc0071d9a484b314bc5f /src/mesa/drivers/dri/i965/brw_fs.h | |
parent | 67c5e843b9ae2c72bcf5c84f8744c1bd23fc262a (diff) | |
download | external_mesa3d-12a912586f11ccbc4612532d5ceaf1bdd0cdb45a.zip external_mesa3d-12a912586f11ccbc4612532d5ceaf1bdd0cdb45a.tar.gz external_mesa3d-12a912586f11ccbc4612532d5ceaf1bdd0cdb45a.tar.bz2 |
i965: Use a separate register for every access to an SSA undef.
Previously, we allocated a new VGRF for every undefined definition.
Instead, this patch makes us allocate a new VGRF for every use of an
undefined definition. This makes sure that undefined values are
fully independent of one another, and have live ranges limited to
their single use. This allows register coalescing to combine the
source and destination of MOVs from undefined sources, eliminating
the MOV altogether.
On Broadwell:
total instructions in shared programs: 11641187 -> 11640214 (-0.01%)
instructions in affected programs: 70199 -> 69226 (-1.39%)
helped: 213
HURT: 1
v2: Add a comment (based on Iago's suggested one).
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs.h')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index fc1e1c4..8b1ea79 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -204,8 +204,6 @@ public: void nir_emit_alu(const brw::fs_builder &bld, nir_alu_instr *instr); void nir_emit_load_const(const brw::fs_builder &bld, nir_load_const_instr *instr); - void nir_emit_undef(const brw::fs_builder &bld, - nir_ssa_undef_instr *instr); void nir_emit_vs_intrinsic(const brw::fs_builder &bld, nir_intrinsic_instr *instr); void nir_emit_tcs_intrinsic(const brw::fs_builder &bld, |