brw: Remove brw_inst::no_dd_check/no_dd_clear
These dependency hints were primarily useful for the vec4 backend, where it was common to write subsets of a vec4's components across multiple instructions. In the scalar backend, we rarely used them. They also no longer exist on Tigerlake and later in favor of software scoreboarding. Dropping this allows us to clean up the IR a bit. We still use the hardware hints in the generator in a couple places: - Gfx9-12.0 scratch headers - Quad swizzles - Indirect MOV lowering In theory we might want them back if we moved that lowering to the IR. For scratch at least, I suspect it won't have a huge impact, as we're already incurring the cost of spills/fills. The others are fairly rare as well, so it may not be worth keeping. Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36730>
This commit is contained in:
committed by
Marge Bot
parent
b26c68e40a
commit
6281a12822
@@ -936,26 +936,24 @@ namespace {
|
||||
}
|
||||
|
||||
/* Stall on any write dependencies. */
|
||||
if (!inst->no_dd_check) {
|
||||
if (inst->dst.file != BAD_FILE && !inst->dst.is_null()) {
|
||||
for (unsigned j = 0; j < regs_written(inst); j++)
|
||||
stall_on_dependency(
|
||||
st, reg_dependency_id(devinfo, inst->dst, j));
|
||||
}
|
||||
if (inst->dst.file != BAD_FILE && !inst->dst.is_null()) {
|
||||
for (unsigned j = 0; j < regs_written(inst); j++)
|
||||
stall_on_dependency(
|
||||
st, reg_dependency_id(devinfo, inst->dst, j));
|
||||
}
|
||||
|
||||
if (inst->writes_accumulator_implicitly(devinfo)) {
|
||||
for (unsigned j = accum_reg_of_channel(devinfo, inst, info.tx, 0);
|
||||
j <= accum_reg_of_channel(devinfo, inst, info.tx,
|
||||
inst->exec_size - 1); j++)
|
||||
stall_on_dependency(
|
||||
st, reg_dependency_id(devinfo, brw_acc_reg(8), j));
|
||||
}
|
||||
if (inst->writes_accumulator_implicitly(devinfo)) {
|
||||
for (unsigned j = accum_reg_of_channel(devinfo, inst, info.tx, 0);
|
||||
j <= accum_reg_of_channel(devinfo, inst, info.tx,
|
||||
inst->exec_size - 1); j++)
|
||||
stall_on_dependency(
|
||||
st, reg_dependency_id(devinfo, brw_acc_reg(8), j));
|
||||
}
|
||||
|
||||
if (const unsigned mask = inst->flags_written(devinfo)) {
|
||||
for (unsigned i = 0; i < sizeof(mask) * CHAR_BIT; i++) {
|
||||
if (mask & (1 << i))
|
||||
stall_on_dependency(st, flag_dependency_id(i));
|
||||
}
|
||||
if (const unsigned mask = inst->flags_written(devinfo)) {
|
||||
for (unsigned i = 0; i < sizeof(mask) * CHAR_BIT; i++) {
|
||||
if (mask & (1 << i))
|
||||
stall_on_dependency(st, flag_dependency_id(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user