Module: Mesa Branch: master Commit: b91ecee04ab2a5b23ff2418b4d709252878cf894 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b91ecee04ab2a5b23ff2418b4d709252878cf894
Author: Jason Ekstrand <[email protected]> Date: Wed Oct 4 13:49:29 2017 -0700 intel/compiler: Don't cmod propagate into a saturated operation Shader-db results on Sky Lake: total instructions in shared programs: 12954445 -> 12955125 (0.01%) instructions in affected programs: 141862 -> 142542 (0.48%) helped: 0 HURT: 626 Reviewed-by: Matt Turner <[email protected]> Cc: [email protected] --- src/intel/compiler/brw_fs_cmod_propagation.cpp | 8 ++++++++ src/intel/compiler/brw_vec4_cmod_propagation.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/intel/compiler/brw_fs_cmod_propagation.cpp b/src/intel/compiler/brw_fs_cmod_propagation.cpp index 2d50c92e9e..db63e942b7 100644 --- a/src/intel/compiler/brw_fs_cmod_propagation.cpp +++ b/src/intel/compiler/brw_fs_cmod_propagation.cpp @@ -142,6 +142,14 @@ opt_cmod_propagation_local(const gen_device_info *devinfo, bblock_t *block) scan_inst->opcode == BRW_OPCODE_CMPN) break; + /* From the Sky Lake PRM Vol. 7 "Assigning Conditional Mods": + * + * * Note that the [post condition signal] bits generated at + * the output of a compute are before the .sat. + */ + if (scan_inst->saturate) + break; + /* Otherwise, try propagating the conditional. */ enum brw_conditional_mod cond = inst->src[0].negate ? brw_swap_cmod(inst->conditional_mod) diff --git a/src/intel/compiler/brw_vec4_cmod_propagation.cpp b/src/intel/compiler/brw_vec4_cmod_propagation.cpp index 4454cdbfc9..05e6516819 100644 --- a/src/intel/compiler/brw_vec4_cmod_propagation.cpp +++ b/src/intel/compiler/brw_vec4_cmod_propagation.cpp @@ -129,6 +129,14 @@ opt_cmod_propagation_local(bblock_t *block) scan_inst->opcode == BRW_OPCODE_CMPN) break; + /* From the Sky Lake PRM Vol. 7 "Assigning Conditional Mods": + * + * * Note that the [post condition signal] bits generated at + * the output of a compute are before the .sat. + */ + if (scan_inst->saturate) + break; + /* Otherwise, try propagating the conditional. */ enum brw_conditional_mod cond = inst->src[0].negate ? brw_swap_cmod(inst->conditional_mod) _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
