diff options
author | Matt Turner <[email protected]> | 2015-02-09 22:21:21 -0800 |
---|---|---|
committer | Matt Turner <[email protected]> | 2015-02-19 21:16:43 -0800 |
commit | f8b435ae6a27fa2274ff166639b22d0b36d68c49 (patch) | |
tree | 143828a6372c816401c783f67db7868da0599a09 | |
parent | 7f8dd91d166e49d7da98f90d6428dc2705fb96d0 (diff) |
i965: Don't emit saturates for instructions without destinations.
We were special casing OPCODE_END but no other instructions that have no
destination, like OPCODE_KIL, leading us to emitting MOVs with null
destinations.
total instructions in shared programs: 5705243 -> 5701539 (-0.06%)
instructions in affected programs: 124104 -> 120400 (-2.98%)
helped: 904
Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_fp.cpp | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4_vp.cpp | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp index 382a54aec47..d22de0e5145 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp @@ -522,7 +522,7 @@ fs_visitor::emit_fragment_program_code() /* To handle saturates, we emit a MOV with a saturate bit, which * optimization should fold into the preceding instructions when safe. */ - if (fpi->Opcode != OPCODE_END) { + if (_mesa_num_inst_dst_regs(fpi->Opcode) != 0) { fs_reg real_dst = get_fp_dst_reg(&fpi->DstReg); for (int i = 0; i < 4; i++) { diff --git a/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp b/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp index 60a0f24154a..a5a5e7bfd5b 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp @@ -386,7 +386,7 @@ vec4_vs_visitor::emit_program_code() } /* Copy the temporary back into the actual destination register. */ - if (vpi->Opcode != OPCODE_END) { + if (_mesa_num_inst_dst_regs(vpi->Opcode) != 0) { emit(MOV(get_vp_dst_reg(vpi->DstReg), src_reg(dst))); } } |