Mesa (staging/22.0): gallivm/nir: Call nir_lower_bool_to_int32 after nir_opt_algebraic_late
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Feb 10 21:09:38 UTC 2022
Module: Mesa
Branch: staging/22.0
Commit: 6b95c7756bc6d61f008fff85886186b49c1d45dd
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6b95c7756bc6d61f008fff85886186b49c1d45dd
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Tue Feb 8 17:53:02 2022 -0800
gallivm/nir: Call nir_lower_bool_to_int32 after nir_opt_algebraic_late
All of the opcodes in nir_opt_algebraic_late are the unsized (1-bit)
versions. If the lowering to int32 happens first, many of the
optimizations and lowerings won't happen.
Of particular importance is the lowering of fisfinite. If a shader
happens to contain fisfinite of an fp16 value, it will assert later
during compliation.
Reviewed-by: Dave Airlie <airlied at redhat.com>
Fixes: 78b4e417d44 ("gallivm: handle fisfinite/fisnormal")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14942>
(cherry picked from commit e3cbc328e0dbb5865cc036ecbf977127850b4670)
---
.pick_status.json | 2 +-
src/gallium/auxiliary/gallivm/lp_bld_nir.c | 9 ++++++---
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index 85cbbff1ed0..aaa0585f534 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -373,7 +373,7 @@
"description": "gallivm/nir: Call nir_lower_bool_to_int32 after nir_opt_algebraic_late",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "78b4e417d44016cdb5df7dbfc3b1ea28219e6fd4"
},
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir.c b/src/gallium/auxiliary/gallivm/lp_bld_nir.c
index 6dbb840cd73..2538bf32e49 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_nir.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_nir.c
@@ -733,8 +733,7 @@ static LLVMValueRef do_alu_action(struct lp_build_nir_context *bld_base,
break;
}
case nir_op_fisfinite32:
- result = lp_build_isfinite(get_flt_bld(bld_base, src_bit_size[0]), src[0]);
- break;
+ unreachable("Should have been lowered in nir_opt_algebraic_late.");
case nir_op_flog2:
result = lp_build_log2_safe(get_flt_bld(bld_base, src_bit_size[0]), src[0]);
break;
@@ -2479,7 +2478,6 @@ void lp_build_opt_nir(struct nir_shader *nir)
NIR_PASS_V(nir, nir_lower_subgroups, &subgroups_options);
} while (progress);
- nir_lower_bool_to_int32(nir);
do {
progress = false;
@@ -2490,4 +2488,9 @@ void lp_build_opt_nir(struct nir_shader *nir)
NIR_PASS_V(nir, nir_opt_cse);
}
} while (progress);
+
+ if (nir_lower_bool_to_int32(nir)) {
+ NIR_PASS_V(nir, nir_copy_prop);
+ NIR_PASS_V(nir, nir_opt_dce);
+ }
}
More information about the mesa-commit
mailing list