mesa/src
Timothy Arceri 3235a942c1 nir: find induction/limit vars in iand instructions
This will be used to help find the trip count of loops that look
like the following:

   while (a < x && i < 8) {
      ...
      i++;
   }

Where the NIR will end up looking something like this:

   vec1 32 ssa_1 = load_const (0x00000004 /* 0.000000 */)
   loop {
      ...
      vec1 1 ssa_12 = ilt ssa_225, ssa_11
      vec1 1 ssa_17 = ilt ssa_226, ssa_1
      vec1 1 ssa_18 = iand ssa_12, ssa_17
      vec1 1 ssa_19 = inot ssa_18

      if ssa_19 {
         ...
         break
      } else {
         ...
      }
   }

On RADV this unrolls a bunch of loops in F1-2017 shaders.

Totals from affected shaders:
SGPRS: 4112 -> 4136 (0.58 %)
VGPRS: 4132 -> 4052 (-1.94 %)
Spilled SGPRs: 0 -> 0 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 0 -> 0 (0.00 %) dwords per thread
Code Size: 515444 -> 587720 (14.02 %) bytes
LDS: 2 -> 2 (0.00 %) blocks
Max Waves: 194 -> 196 (1.03 %)
Wait states: 0 -> 0 (0.00 %)

It also unrolls a couple of loops in shader-db on radeonsi.

Totals from affected shaders:
SGPRS: 128 -> 128 (0.00 %)
VGPRS: 64 -> 64 (0.00 %)
Spilled SGPRs: 0 -> 0 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 0 -> 0 (0.00 %) dwords per thread
Code Size: 6880 -> 9504 (38.14 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 16 -> 16 (0.00 %)
Wait states: 0 -> 0 (0.00 %)

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2019-03-12 00:52:30 +00:00
..
amd nir/xfb: adding varyings on nir_xfb_info and gather_info 2019-03-08 15:00:50 +01:00
broadcom v3d: Use the DAG datastructure for QPU instruction scheduling. 2019-03-11 13:14:32 -07:00
compiler nir: find induction/limit vars in iand instructions 2019-03-12 00:52:30 +00:00
egl egl: fix libdrm-less builds 2019-03-05 13:04:06 +00:00
freedreno turnip: preliminary support for Wayland WSI 2019-03-11 10:02:13 -07:00
gallium panfrost: Add support for PAN_MESA_DEBUG 2019-03-12 00:30:27 +00:00
gbm gbm: drop duplicate #defines 2019-02-14 11:20:00 +00:00
getopt
glx glx/meson: use full include path for dri_interface.h 2019-03-08 18:00:19 +00:00
gtest meson: hide warnings from external project gtest 2018-10-31 18:20:25 +00:00
hgl hgl/meson: drop unused include directory 2019-03-08 18:00:19 +00:00
imgui imgui: update memory editor 2019-02-26 12:49:07 +00:00
intel anv: release memory allocated by glsl types during spirv_to_nir 2019-03-11 13:14:45 +02:00
loader loader: use loader_open_device() to handle O_CLOEXEC 2019-02-26 11:07:23 +00:00
mapi autotools: don't build libGLES*.so with GLVND 2019-03-08 15:13:36 +00:00
mesa prog_to_nir: fix write from vps to FOG 2019-03-08 10:35:12 -08:00
util util: Add a DAG datastructure. 2019-03-11 13:13:52 -07:00
vulkan wsi/x11: use WSI_FROM_HANDLE() instead of pointer casts 2019-03-11 10:49:36 +00:00
Makefile.am build: move imgui out of src/intel/tools to be reused 2019-02-21 18:06:05 +00:00
meson.build turnip: Add driver skeleton (v2) 2019-03-11 10:01:15 -07:00
SConscript scons: Remove gles option. 2018-10-19 16:50:26 +01:00