Mesa (master): nir/range_analysis: Refactor fsat handling
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Mar 11 22:21:51 UTC 2021
Module: Mesa
Branch: master
Commit: 86fb53b1be1fea5ccea34d5bfca9d9aea64f3af2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=86fb53b1be1fea5ccea34d5bfca9d9aea64f3af2
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Mon Mar 8 14:30:00 2021 -0800
nir/range_analysis: Refactor fsat handling
This will greatly simplify a later commit. The assert(r.is_integral) in
the eq_zero case is dropped because I don't think it's useful anymore.
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9108>
---
src/compiler/nir/nir_range_analysis.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/src/compiler/nir/nir_range_analysis.c b/src/compiler/nir/nir_range_analysis.c
index b6d2c8767b2..f02819e0a9b 100644
--- a/src/compiler/nir/nir_range_analysis.c
+++ b/src/compiler/nir/nir_range_analysis.c
@@ -852,31 +852,34 @@ analyze_expression(const nir_alu_instr *instr, unsigned src,
r.range = fneg_table[r.range];
break;
- case nir_op_fsat:
- r = analyze_expression(alu, 0, ht, nir_alu_src_type(alu, 0));
+ case nir_op_fsat: {
+ const struct ssa_result_range left =
+ analyze_expression(alu, 0, ht, nir_alu_src_type(alu, 0));
- switch (r.range) {
+ switch (left.range) {
case le_zero:
case lt_zero:
+ case eq_zero:
r.range = eq_zero;
r.is_integral = true;
break;
- case eq_zero:
- assert(r.is_integral);
- FALLTHROUGH;
case gt_zero:
- case ge_zero:
- /* The fsat doesn't add any information in these cases. */
+ /* The fsat doesn't add any information in this case. */
+ r.range = left.range;
+ r.is_integral = left.is_integral;
break;
+ case ge_zero:
case ne_zero:
case unknown:
/* Since the result must be in [0, 1], the value must be >= 0. */
r.range = ge_zero;
+ r.is_integral = left.is_integral;
break;
}
break;
+ }
case nir_op_fsign:
r = (struct ssa_result_range){
More information about the mesa-commit
mailing list