mesa/src
Ian Romanick af1bc7e0c7 nir/algebraic: Use value range analysis to convert fmax to fsat
This is conceptually similar to the 1-fsat(a) <=> fsat(1-a) rearragement
done in:

3b74790941 ("nir/algebraic: Recognize open-coded flrp(a, b, fsat(c))")

2d259713b7 ("nir/algebraic: Commute 1-fsat(a) to fsat(1-a) for all
non-fmul instructions").

Note: this helps the Aztex Ruins shader that was hurt for spills and
fills on Braodwell in the previous commit, but it does not fix the
spills or fills. :(

All Intel platforms had similar results. (Ice Lake shown)
total instructions in shared programs: 14528985 -> 14526116 (-0.02%)
instructions in affected programs: 477300 -> 474431 (-0.60%)
helped: 2332
HURT: 0
helped stats (abs) min: 1 max: 18 x̄: 1.23 x̃: 1
helped stats (rel) min: 0.07% max: 8.89% x̄: 0.88% x̃: 0.64%
95% mean confidence interval for instructions value: -1.27 -1.19
95% mean confidence interval for instructions %-change: -0.92% -0.85%
Instructions are helped.

total cycles in shared programs: 203723684 -> 203692984 (-0.02%)
cycles in affected programs: 4878847 -> 4848147 (-0.63%)
helped: 1764
HURT: 324
helped stats (abs) min: 1 max: 706 x̄: 22.94 x̃: 17
helped stats (rel) min: <.01% max: 17.75% x̄: 1.94% x̃: 1.66%
HURT stats (abs)   min: 1 max: 400 x̄: 30.15 x̃: 10
HURT stats (rel)   min: <.01% max: 17.76% x̄: 1.91% x̃: 0.69%
95% mean confidence interval for cycles value: -16.55 -12.86
95% mean confidence interval for cycles %-change: -1.44% -1.24%
Cycles are helped.

Reviewed-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/1359>
2020-04-01 00:28:38 +00:00
..
amd aco: look at p_{extract,split}_vector's definitions in pred_by_exec_mask() 2020-03-30 17:34:46 +00:00
broadcom meson: inline inc_common 2020-03-28 21:36:54 +01:00
compiler nir/algebraic: Use value range analysis to convert fmax to fsat 2020-04-01 00:28:38 +00:00
drm-shim meson: inline inc_common 2020-03-28 21:36:54 +01:00
egl scons: Prune out unnecessary targets. 2020-03-30 13:38:01 +00:00
etnaviv meson: inline inc_common 2020-03-28 21:36:54 +01:00
freedreno freedreno/turnip: Use the NIR info to decide if we need helper invocations. 2020-03-31 22:29:22 +00:00
gallium freedreno: Drop an unnecessary include marked "this should go away" 2020-03-31 21:20:11 +00:00
gbm meson: move the generic symbols check arguments to a common variable 2019-11-05 20:30:47 +00:00
getopt meson: build getopt when using msvc 2019-09-10 20:36:47 +00:00
glx scons: Prune out unnecessary targets. 2020-03-30 13:38:01 +00:00
gtest meson: gtest needs pthreads 2019-11-07 06:11:19 -08:00
hgl scons: Prune out unnecessary targets. 2020-03-30 13:38:01 +00:00
imgui meson: drop intel_ prefix on imgui_core 2019-12-10 15:16:02 +00:00
intel nir/algebraic: Distribute source modifiers into instructions 2020-04-01 00:28:38 +00:00
loader loader: Fix leak of kernel driver name 2020-01-30 10:08:17 -08:00
mapi scons: Prune out unnecessary targets. 2020-03-30 13:38:01 +00:00
mesa util: move ALIGN/ROUND_DOWN_TO to u_math.h 2020-03-31 18:46:04 +00:00
panfrost pan/bi: Fix handling of constants with COMBINE 2020-03-31 01:12:26 +00:00
util util: move ALIGN/ROUND_DOWN_TO to u_math.h 2020-03-31 18:46:04 +00:00
vulkan vulkan: drop unused include directories 2020-03-28 21:36:54 +01:00
meson.build meson: inline inc_common 2020-03-28 21:36:54 +01:00
SConscript scons: Prune out unnecessary targets. 2020-03-30 13:38:01 +00:00