Module: Mesa Branch: master Commit: a2de6562783ea87ca5fbcb67dbd36c2f345f2054 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2de6562783ea87ca5fbcb67dbd36c2f345f2054
Author: Kenneth Graunke <[email protected]> Date: Tue Jul 15 21:27:08 2014 -0700 i965: Don't copy propagate abs into Broadwell logic instructions. It's not clear what abs on logical instructions means on Broadwell, and it doesn't appear to do anything sensible. Fixes 270 Piglit tests (the bitand/bitor/bitxor tests with abs). Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81157 Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Matt Turner <[email protected]> Cc: "10.2" <[email protected]> --- src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 9 +++------ src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp index 10e19d8..62e64a6 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp @@ -338,12 +338,9 @@ fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry) if (has_source_modifiers && entry->dst.type != inst->src[arg].type) return false; - if (brw->gen >= 8) { - if (entry->src.negate) { - if (is_logic_op(inst->opcode)) { - return false; - } - } + if (brw->gen >= 8 && (entry->src.negate || entry->src.abs) && + is_logic_op(inst->opcode)) { + return false; } inst->src[arg].file = entry->src.file; diff --git a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp index 2c41d02..390448a 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp @@ -249,12 +249,9 @@ try_copy_propagate(struct brw_context *brw, vec4_instruction *inst, value.file != ATTR) return false; - if (brw->gen >= 8) { - if (value.negate) { - if (is_logic_op(inst->opcode)) { - return false; - } - } + if (brw->gen >= 8 && (value.negate || value.abs) && + is_logic_op(inst->opcode)) { + return false; } if (inst->src[arg].abs) { _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
