Mesa (master): nir/range_analysis: Simplify analysis of bcsel
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Mar 11 22:21:51 UTC 2021
Module: Mesa
Branch: master
Commit: da7389eced0ea876f3d1210a10fa6e98b32ebba7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=da7389eced0ea876f3d1210a10fa6e98b32ebba7
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Tue Feb 16 13:41:27 2021 -0800
nir/range_analysis: Simplify analysis of bcsel
union_ranges was previously guarded by 'ifndef NDEBUG'. After removing
that, I noticed that the two tables were identical.
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 | 57 +----------------------------------
1 file changed, 1 insertion(+), 56 deletions(-)
diff --git a/src/compiler/nir/nir_range_analysis.c b/src/compiler/nir/nir_range_analysis.c
index 9bb5c50fd6a..0baf31a6f5a 100644
--- a/src/compiler/nir/nir_range_analysis.c
+++ b/src/compiler/nir/nir_range_analysis.c
@@ -605,62 +605,7 @@ analyze_expression(const nir_alu_instr *instr, unsigned src,
r.is_a_number = left.is_a_number && right.is_a_number;
r.is_finite = left.is_finite && right.is_finite;
- /* le_zero: bcsel(<any>, le_zero, lt_zero)
- * | bcsel(<any>, eq_zero, lt_zero)
- * | bcsel(<any>, le_zero, eq_zero)
- * | bcsel(<any>, lt_zero, le_zero)
- * | bcsel(<any>, lt_zero, eq_zero)
- * | bcsel(<any>, eq_zero, le_zero)
- * | bcsel(<any>, le_zero, le_zero)
- * ;
- *
- * lt_zero: bcsel(<any>, lt_zero, lt_zero)
- * ;
- *
- * ge_zero: bcsel(<any>, ge_zero, ge_zero)
- * | bcsel(<any>, ge_zero, gt_zero)
- * | bcsel(<any>, ge_zero, eq_zero)
- * | bcsel(<any>, gt_zero, ge_zero)
- * | bcsel(<any>, eq_zero, ge_zero)
- * ;
- *
- * gt_zero: bcsel(<any>, gt_zero, gt_zero)
- * ;
- *
- * ne_zero: bcsel(<any>, ne_zero, gt_zero)
- * | bcsel(<any>, ne_zero, lt_zero)
- * | bcsel(<any>, gt_zero, lt_zero)
- * | bcsel(<any>, gt_zero, ne_zero)
- * | bcsel(<any>, lt_zero, ne_zero)
- * | bcsel(<any>, lt_zero, gt_zero)
- * | bcsel(<any>, ne_zero, ne_zero)
- * ;
- *
- * eq_zero: bcsel(<any>, eq_zero, eq_zero)
- * ;
- *
- * All other cases are 'unknown'.
- *
- * The ranges could be tightened if the range of the first source is
- * known. However, opt_algebraic will (eventually) elminiate the bcsel
- * if the condition is known.
- */
- static const enum ssa_ranges table[last_range + 1][last_range + 1] = {
- /* left\right unknown lt_zero le_zero gt_zero ge_zero ne_zero eq_zero */
- /* unknown */ { _______, _______, _______, _______, _______, _______, _______ },
- /* lt_zero */ { _______, lt_zero, le_zero, ne_zero, _______, ne_zero, le_zero },
- /* le_zero */ { _______, le_zero, le_zero, _______, _______, _______, le_zero },
- /* gt_zero */ { _______, ne_zero, _______, gt_zero, ge_zero, ne_zero, ge_zero },
- /* ge_zero */ { _______, _______, _______, ge_zero, ge_zero, _______, ge_zero },
- /* ne_zero */ { _______, ne_zero, _______, ne_zero, _______, ne_zero, _______ },
- /* eq_zero */ { _______, le_zero, le_zero, ge_zero, ge_zero, _______, eq_zero },
- };
-
- ASSERT_TABLE_IS_COMMUTATIVE(table);
- ASSERT_TABLE_IS_DIAGONAL(table);
- ASSERT_UNION_OF_OTHERS_MATCHES_UNKNOWN_2_SOURCE(table);
-
- r.range = table[left.range][right.range];
+ r.range = union_ranges(left.range, right.range);
break;
}
More information about the mesa-commit
mailing list