i965/fs: Don't double-emit SEND dependency workarounds at control flow.

We weren't setting needs_dep[i] in the loops, so we'd continue on to
potentially add the same workaround MOVs to the later basic block
boundaries, too.  We can either set needs_dep[i] to exit through the
normal path, or we can just return since we know we're done.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Eric Anholt 2013-03-19 17:36:10 -07:00
parent 3cf69b2284
commit ce316f62ef

View file

@ -2341,6 +2341,7 @@ fs_visitor::insert_gen4_pre_send_dependency_workarounds(fs_inst *inst)
inst->insert_before(DEP_RESOLVE_MOV(first_write_grf + i));
}
}
return;
}
bool scan_inst_16wide = (dispatch_width > 8 &&
@ -2410,6 +2411,7 @@ fs_visitor::insert_gen4_post_send_dependency_workarounds(fs_inst *inst)
if (needs_dep[i])
scan_inst->insert_before(DEP_RESOLVE_MOV(first_write_grf + i));
}
return;
}
/* Clear the flag for registers that actually got read (as expected). */