intel/vec4: sel.cond writes the flags on Gfx4 and Gfx5
This is the equivalent of idr's intel/fs: sel.cond writes the flags on Gfx4 and Gfx5 except for the vec4 backend. This fixes buggy rendering seen with crocus on a qt trace. v2 (idr): Trivial whitespace change. Add unit tests. v3: Fix type in comment in unit tests. Noticed by Jason and Priit. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Iron Lake total instructions in shared programs: 8183077 -> 8184543 (0.02%) instructions in affected programs: 198990 -> 200456 (0.74%) helped: 0 HURT: 1355 HURT stats (abs) min: 1 max: 8 x̄: 1.08 x̃: 1 HURT stats (rel) min: 0.29% max: 6.00% x̄: 0.99% x̃: 0.70% 95% mean confidence interval for instructions value: 1.04 1.12 95% mean confidence interval for instructions %-change: 0.96% 1.03% Instructions are HURT. total cycles in shared programs: 238967672 -> 238962784 (<.01%) cycles in affected programs: 4666014 -> 4661126 (-0.10%) helped: 406 HURT: 314 helped stats (abs) min: 4 max: 54 x̄: 22.46 x̃: 18 helped stats (rel) min: <.01% max: 12.80% x̄: 1.82% x̃: 0.65% HURT stats (abs) min: 2 max: 112 x̄: 13.48 x̃: 12 HURT stats (rel) min: <.01% max: 7.82% x̄: 0.81% x̃: 0.16% 95% mean confidence interval for cycles value: -8.60 -4.98 95% mean confidence interval for cycles %-change: -0.87% -0.49% Cycles are helped. GM45 total instructions in shared programs: 4986888 -> 4988354 (0.03%) instructions in affected programs: 198990 -> 200456 (0.74%) helped: 0 HURT: 1355 HURT stats (abs) min: 1 max: 8 x̄: 1.08 x̃: 1 HURT stats (rel) min: 0.29% max: 6.00% x̄: 0.99% x̃: 0.70% 95% mean confidence interval for instructions value: 1.04 1.12 95% mean confidence interval for instructions %-change: 0.96% 1.03% Instructions are HURT. total cycles in shared programs: 153577826 -> 153572938 (<.01%) cycles in affected programs: 4666014 -> 4661126 (-0.10%) helped: 406 HURT: 314 helped stats (abs) min: 4 max: 54 x̄: 22.46 x̃: 18 helped stats (rel) min: <.01% max: 12.80% x̄: 1.82% x̃: 0.65% HURT stats (abs) min: 2 max: 112 x̄: 13.48 x̃: 12 HURT stats (rel) min: <.01% max: 7.82% x̄: 0.81% x̃: 0.16% 95% mean confidence interval for cycles value: -8.60 -4.98 95% mean confidence interval for cycles %-change: -0.87% -0.49% Cycles are helped. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12191>
This commit is contained in:
committed by
Ian Romanick
parent
38807ceeae
commit
8a81d14271
@@ -54,7 +54,7 @@ vec4_visitor::dead_code_eliminate()
|
||||
|
||||
foreach_inst_in_block_reverse_safe(vec4_instruction, inst, block) {
|
||||
if ((inst->dst.file == VGRF && !inst->has_side_effects()) ||
|
||||
(inst->dst.is_null() && inst->writes_flag())){
|
||||
(inst->dst.is_null() && inst->writes_flag(devinfo))){
|
||||
bool result_live[4] = { false };
|
||||
if (inst->dst.file == VGRF) {
|
||||
for (unsigned i = 0; i < DIV_ROUND_UP(inst->size_written, 16); i++) {
|
||||
@@ -80,7 +80,7 @@ vec4_visitor::dead_code_eliminate()
|
||||
result_live[3] = result;
|
||||
}
|
||||
|
||||
if (inst->writes_flag()) {
|
||||
if (inst->writes_flag(devinfo)) {
|
||||
/* Independently calculate the usage of the flag components and
|
||||
* the destination value components.
|
||||
*/
|
||||
@@ -126,7 +126,7 @@ vec4_visitor::dead_code_eliminate()
|
||||
}
|
||||
}
|
||||
|
||||
if (inst->dst.is_null() && inst->writes_flag()) {
|
||||
if (inst->dst.is_null() && inst->writes_flag(devinfo)) {
|
||||
bool combined_live = false;
|
||||
for (unsigned c = 0; c < 4; c++)
|
||||
combined_live |= BITSET_TEST(flag_live, c);
|
||||
@@ -149,7 +149,7 @@ vec4_visitor::dead_code_eliminate()
|
||||
}
|
||||
}
|
||||
|
||||
if (inst->writes_flag() && !inst->predicate && inst->exec_size == 8) {
|
||||
if (inst->writes_flag(devinfo) && !inst->predicate && inst->exec_size == 8) {
|
||||
for (unsigned c = 0; c < 4; c++)
|
||||
BITSET_CLEAR(flag_live, c);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user