nir/range_analysis: Add "is a number" range analysis tracking
authorIan Romanick <ian.d.romanick@intel.com>
Fri, 3 Jul 2020 01:18:09 +0000 (18:18 -0700)
committerMarge Bot <eric+marge@anholt.net>
Thu, 11 Mar 2021 22:00:30 +0000 (22:00 +0000)
commitaa5d38decde5c8851988d80ecb407b91de8342c7
treeb3c641d83a9f8e9b0ea3e6b41341887aed623e8d
parentd4f21b53f291e69ac6b846df9dd5f44f2a663535
nir/range_analysis: Add "is a number" range analysis tracking

This commit is necessary to support "nir/range_analysis: Fix analysis of
fmin and fmax with NaN".

No shader-db or fossil-db changes on any Intel platform.

v2: Pack and unpack is_a_number.

v3: Don't set is_a_number of integer constants.  The bit pattern might
be NaN.

v4: Update handling of b2i32.  intBitsToFloat(int(true)) is
1.401298464324817e-45.  Return a value consistent with that.

Fixes: 405de7ccb6c ("nir/range-analysis: Rudimentary value range analysis pass")
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9108>
src/compiler/nir/nir_range_analysis.c
src/compiler/nir/nir_range_analysis.h
src/compiler/nir/nir_search_helpers.h