mesa/src/compiler
Timothy Arceri 5cc36887ab nir/gcm: be less destructive with instruction order
This changes the pass to extract pinned instructions and not just unpinned
instructions when rescheduling instructions. This stops pinned instructions
from being bunched together when instructions are reinserted into the blocks
which can result in regressions with regards to cycles and instruction
counts on i965 and register use/Max Waves on AMD hardware.

In order to do this we also throw away the post-order depth-first
search linearization algorithm used to re-insert the instructions, which
itself causes possible regressions when instructions are reinserted into
a less than ideal new order (of which the bunched together pinned
instructions is one example). Instead we simply insert instructions in the
reverse order they were extracted. This will simply place instructions
that were scheduled earlier onto the end of their new block and
instructions that were scheduled later to the start of their new block.
With this everything should remain in order without the need to run
over uses.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/597>
2021-07-21 14:24:00 +00:00
..
glsl nir: Set IMAGE_DIM and IMAGE_ARRAY on deref intrinsics 2021-07-20 23:18:22 +00:00
nir nir/gcm: be less destructive with instruction order 2021-07-21 14:24:00 +00:00
spirv nir: Set IMAGE_DIM and IMAGE_ARRAY on deref intrinsics 2021-07-20 23:18:22 +00:00
builtin_type_macros.h compiler/types: Add 64-bit image types 2020-11-09 17:17:39 +00:00
glsl_types.cpp glsl: add missing support for explicit components in interface blocks 2021-05-13 08:07:53 +00:00
glsl_types.h glsl: add missing support for explicit components in interface blocks 2021-05-13 08:07:53 +00:00
meson.build spirv: add some tests for volatile/available/visible 2020-09-01 17:15:22 +00:00
nir_types.cpp nir: Add a size_align helper function for aligning elements to 16 bytes. 2020-11-16 13:54:22 -08:00
nir_types.h nir: Add a size_align helper function for aligning elements to 16 bytes. 2020-11-16 13:54:22 -08:00
shader_enums.c nir: Rename WORK_GROUP (and similar) to WORKGROUP 2021-06-07 22:34:42 +00:00
shader_enums.h shader_enums: change VERT_BIT back to the 32-bit shift 2021-06-16 21:45:57 +00:00
shader_info.h spirv: Support SPV_KHR_subgroup_uniform_control_flow 2021-06-25 22:41:32 +00:00