intel/compiler: Run nir_opt_large_constants before scalarizing consts
nir_opt_large_constants balks at seeing a store_deref of a variable where the source is a vecN operation of multiple load_consts, and thinks that isn't a constant, so it should not bother promoting it. Unfortunately, we were running nir_lower_load_const_to_scalar before nir_opt_large_constants, so this prevented a ton of constant promotion. This commit /used to help/ some shaders in shader-db. Presumably since !16770 landed, those shaders were already helped. Currently ther are no shader-db changes on any Intel platform. Fossil-db results: All Intel platforms had similar results. (Ice Lake shown) Instructions in all programs: 141998227 -> 141421756 (-0.4%) Instructions helped: 12515 Instructions hurt: 237 SENDs in all programs: 7437925 -> 7468033 (+0.4%) SENDs hurt: 12806 Cycles in all programs: 9161655753 -> 9132869800 (-0.3%) Cycles helped: 10163 Cycles hurt: 2637 Spills in all programs: 19977 -> 18678 (-6.5%) Spills helped: 384 Spills hurt: 40 Fills in all programs: 32863 -> 31396 (-4.5%) Fills helped: 385 Fills hurt: 42 Lost: 1 Lots of Shadow of the Tomb Raider fragment shaders and Batman Arkham Origins vertex shaders were hurt for SENDs in this commit. A couple Aztec Ruins compute shaders and Spaceship shaders (multiple stages) were also hurt. All of the shaders hurt for spills or fills were Spaceship compute shaders. Nearly all of the shaders helped were Shadow of the Tomb Raider fragmenet shaders. One Spaceship shader was reall, REALLY helped: Spills helped fossils/fossil-db/Spaceship.run.9f90a2a226fcc57f.1.foz/0b507d3abe2e3c28/compute: 321 -> 13 (-96.0%) Fills helped fossils/fossil-db/Spaceship.run.9f90a2a226fcc57f.1.foz/0b507d3abe2e3c28/compute: 279 -> 21 (-92.5%) Overall this seems like an improvement, but we may want to actually run these few benchmarks before landing. Reviewed-by:Emma Anholt <emma@anholt.net> Reviewed-by:
Ian Romanick <ian.d.romanick@intel.com> Part-of: <mesa/mesa!16539>
Loading
Please register or sign in to comment