nir/opt_uniform_atomics: fix elect detection

fossil-db (GFX10.3):
Totals from 30 (0.02% of 139391) affected shaders:
SGPRs: 1736 -> 1712 (-1.38%)
CodeSize: 262116 -> 254728 (-2.82%)
Instrs: 50341 -> 48857 (-2.95%)
Cycles: 486384 -> 477556 (-1.82%)
VMEM: 4821 -> 4589 (-4.81%)
Copies: 5013 -> 4890 (-2.45%)
Branches: 2108 -> 1983 (-5.93%)
PreSGPRs: 1444 -> 1418 (-1.80%)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8654>
This commit is contained in:
Rhys Perry 2021-01-21 17:27:31 +00:00 committed by Marge Bot
parent eb70c52abe
commit f8072c133d

View file

@ -128,13 +128,11 @@ get_dim(nir_ssa_scalar scalar)
static unsigned
match_invocation_comparison(nir_ssa_scalar scalar)
{
if (!nir_ssa_scalar_is_alu(scalar))
return 0;
if (nir_ssa_scalar_alu_op(scalar) == nir_op_iand) {
bool is_alu = nir_ssa_scalar_is_alu(scalar);
if (is_alu && nir_ssa_scalar_alu_op(scalar) == nir_op_iand) {
return match_invocation_comparison(nir_ssa_scalar_chase_alu_src(scalar, 0)) |
match_invocation_comparison(nir_ssa_scalar_chase_alu_src(scalar, 1));
} else if (nir_ssa_scalar_alu_op(scalar) == nir_op_ieq) {
} else if (is_alu && nir_ssa_scalar_alu_op(scalar) == nir_op_ieq) {
if (!nir_ssa_scalar_chase_alu_src(scalar, 0).def->divergent)
return get_dim(nir_ssa_scalar_chase_alu_src(scalar, 1));
if (!nir_ssa_scalar_chase_alu_src(scalar, 1).def->divergent)