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 <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Cc: "10.2" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Kenneth Graunke 2014-07-15 21:27:08 -07:00
parent cf1b5eee7f
commit a2de656278
2 changed files with 6 additions and 12 deletions

View file

@ -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;

View file

@ -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) {