Mesa (main): r600/sfn: rewrite NIR backend

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 7 20:18:52 UTC 2022


Module: Mesa
Branch: main
Commit: 79ca456b4837b3bc21cf9ef3c03c505c4b4909f6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=79ca456b4837b3bc21cf9ef3c03c505c4b4909f6

Author: Gert Wollny <gert.wollny at collabora.com>
Date:   Sat Jun 19 13:03:32 2021 +0200

r600/sfn: rewrite NIR backend

This is a rewite of the NIR backend. it adds some optimization
and a scheduler.

v2: - replace some magic numbers by constants
    - make sure constructor is always used with new
    - use default initialization in more places
      (changes suggested by Filip Gawin)

Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
Reviewed-by: Filip Gawin <filip at gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17076>

---

 src/gallium/drivers/r600/meson.build               |  119 +-
 src/gallium/drivers/r600/r600_asm.c                |    4 +-
 src/gallium/drivers/r600/r600_asm.h                |    2 +
 src/gallium/drivers/r600/r600_pipe.c               |   13 +-
 src/gallium/drivers/r600/sfn/sfn_alu_defines.cpp   |  126 +-
 src/gallium/drivers/r600/sfn/sfn_alu_defines.h     |  103 +-
 .../r600/sfn/sfn_alu_readport_validation.cpp       |  329 +++
 .../drivers/r600/sfn/sfn_alu_readport_validation.h |   41 +
 .../{sfn_ir_to_assembly.cpp => sfn_assembler.cpp}  | 1626 +++++-----
 src/gallium/drivers/r600/sfn/sfn_assembler.h       |   26 +
 .../drivers/r600/sfn/sfn_conditionaljumptracker.h  |    4 -
 src/gallium/drivers/r600/sfn/sfn_debug.cpp         |    4 +
 src/gallium/drivers/r600/sfn/sfn_debug.h           |    6 +-
 src/gallium/drivers/r600/sfn/sfn_defines.h         |    3 +
 src/gallium/drivers/r600/sfn/sfn_docu.txt          |   47 +-
 .../drivers/r600/sfn/sfn_emitaluinstruction.cpp    | 1046 -------
 .../drivers/r600/sfn/sfn_emitaluinstruction.h      |  116 -
 .../drivers/r600/sfn/sfn_emitinstruction.cpp       |  169 --
 src/gallium/drivers/r600/sfn/sfn_emitinstruction.h |  102 -
 .../drivers/r600/sfn/sfn_emitssboinstruction.cpp   |  741 -----
 .../drivers/r600/sfn/sfn_emitssboinstruction.h     |   60 -
 .../drivers/r600/sfn/sfn_emittexinstruction.cpp    |  671 -----
 .../drivers/r600/sfn/sfn_emittexinstruction.h      |   96 -
 src/gallium/drivers/r600/sfn/sfn_instr.cpp         |  522 ++++
 src/gallium/drivers/r600/sfn/sfn_instr.h           |  314 ++
 src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp     | 2449 +++++++++++++++
 src/gallium/drivers/r600/sfn/sfn_instr_alu.h       |  193 ++
 .../drivers/r600/sfn/sfn_instr_alugroup.cpp        |  361 +++
 src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h  |   89 +
 .../drivers/r600/sfn/sfn_instr_controlflow.cpp     |  176 ++
 .../drivers/r600/sfn/sfn_instr_controlflow.h       |   81 +
 src/gallium/drivers/r600/sfn/sfn_instr_export.cpp  |  524 ++++
 src/gallium/drivers/r600/sfn/sfn_instr_export.h    |  213 ++
 src/gallium/drivers/r600/sfn/sfn_instr_fetch.cpp   |  659 +++++
 src/gallium/drivers/r600/sfn/sfn_instr_fetch.h     |  152 +
 src/gallium/drivers/r600/sfn/sfn_instr_lds.cpp     |  411 +++
 src/gallium/drivers/r600/sfn/sfn_instr_lds.h       |   80 +
 src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp     |  844 ++++++
 src/gallium/drivers/r600/sfn/sfn_instr_mem.h       |  177 ++
 src/gallium/drivers/r600/sfn/sfn_instr_tex.cpp     | 1011 +++++++
 src/gallium/drivers/r600/sfn/sfn_instr_tex.h       |  166 ++
 src/gallium/drivers/r600/sfn/sfn_instrfactory.cpp  |  188 ++
 src/gallium/drivers/r600/sfn/sfn_instrfactory.h    |   34 +
 .../drivers/r600/sfn/sfn_instruction_alu.cpp       |  183 --
 src/gallium/drivers/r600/sfn/sfn_instruction_alu.h |  142 -
 .../drivers/r600/sfn/sfn_instruction_base.cpp      |  187 --
 .../drivers/r600/sfn/sfn_instruction_base.h        |  155 -
 .../drivers/r600/sfn/sfn_instruction_block.cpp     |   57 -
 .../drivers/r600/sfn/sfn_instruction_block.h       |   82 -
 .../drivers/r600/sfn/sfn_instruction_cf.cpp        |  195 --
 src/gallium/drivers/r600/sfn/sfn_instruction_cf.h  |  142 -
 .../drivers/r600/sfn/sfn_instruction_export.cpp    |  341 ---
 .../drivers/r600/sfn/sfn_instruction_export.h      |  185 --
 .../drivers/r600/sfn/sfn_instruction_fetch.cpp     |  480 ---
 .../drivers/r600/sfn/sfn_instruction_fetch.h       |  187 --
 .../drivers/r600/sfn/sfn_instruction_gds.cpp       |  180 --
 src/gallium/drivers/r600/sfn/sfn_instruction_gds.h |  225 --
 .../drivers/r600/sfn/sfn_instruction_lds.cpp       |  151 -
 src/gallium/drivers/r600/sfn/sfn_instruction_lds.h |   82 -
 .../drivers/r600/sfn/sfn_instruction_misc.cpp      |   68 -
 .../drivers/r600/sfn/sfn_instruction_misc.h        |   69 -
 src/gallium/drivers/r600/sfn/sfn_instruction_tex.h |  143 -
 .../drivers/r600/sfn/sfn_instructionvisitor.cpp    |    0
 .../drivers/r600/sfn/sfn_instructionvisitor.h      |   91 -
 src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.h  |   45 -
 src/gallium/drivers/r600/sfn/sfn_liverange.cpp     | 1006 -------
 src/gallium/drivers/r600/sfn/sfn_liverange.h       |  314 --
 .../drivers/r600/sfn/sfn_liverangeevaluator.cpp    |  438 +++
 .../drivers/r600/sfn/sfn_liverangeevaluator.h      |   23 +
 .../r600/sfn/sfn_liverangeevaluator_helpers.cpp    |  623 ++++
 .../r600/sfn/sfn_liverangeevaluator_helpers.h      |  162 +
 src/gallium/drivers/r600/sfn/sfn_memorypool.cpp    |   86 +
 src/gallium/drivers/r600/sfn/sfn_memorypool.h      |   69 +
 src/gallium/drivers/r600/sfn/sfn_nir.cpp           |  429 +--
 src/gallium/drivers/r600/sfn/sfn_nir.h             |   52 +-
 .../r600/sfn/sfn_nir_legalize_image_load_store.cpp |    6 +-
 .../drivers/r600/sfn/sfn_nir_lower_64bit.cpp       |  393 ++-
 .../drivers/r600/sfn/sfn_nir_lower_tess_io.cpp     |    7 +-
 ...n_instruction_tex.cpp => sfn_nir_lower_tex.cpp} |  153 +-
 src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.h   |   10 +
 src/gallium/drivers/r600/sfn/sfn_optimizer.cpp     |  627 ++++
 src/gallium/drivers/r600/sfn/sfn_optimizer.h       |   17 +
 src/gallium/drivers/r600/sfn/sfn_optimizers.cpp    |   12 -
 src/gallium/drivers/r600/sfn/sfn_optimizers.h      |   14 -
 src/gallium/drivers/r600/sfn/sfn_peephole.cpp      |  212 ++
 src/gallium/drivers/r600/sfn/sfn_peephole.h        |   13 +
 src/gallium/drivers/r600/sfn/sfn_ra.cpp            |  268 ++
 src/gallium/drivers/r600/sfn/sfn_ra.h              |   51 +
 src/gallium/drivers/r600/sfn/sfn_scheduler.cpp     |  890 ++++++
 src/gallium/drivers/r600/sfn/sfn_scheduler.h       |   13 +
 src/gallium/drivers/r600/sfn/sfn_shader.cpp        | 1379 +++++++++
 src/gallium/drivers/r600/sfn/sfn_shader.h          |  365 +++
 src/gallium/drivers/r600/sfn/sfn_shader_base.cpp   | 1188 --------
 src/gallium/drivers/r600/sfn/sfn_shader_base.h     |  231 --
 .../drivers/r600/sfn/sfn_shader_compute.cpp        |  112 -
 src/gallium/drivers/r600/sfn/sfn_shader_compute.h  |   62 -
 src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp     |   95 +
 src/gallium/drivers/r600/sfn/sfn_shader_cs.h       |   39 +
 .../drivers/r600/sfn/sfn_shader_fragment.cpp       | 1074 -------
 src/gallium/drivers/r600/sfn/sfn_shader_fragment.h |  117 -
 src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp     |  873 ++++++
 src/gallium/drivers/r600/sfn/sfn_shader_fs.h       |   88 +
 .../drivers/r600/sfn/sfn_shader_geometry.cpp       |  343 ---
 src/gallium/drivers/r600/sfn/sfn_shader_geometry.h |   81 -
 src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp     |  370 +++
 src/gallium/drivers/r600/sfn/sfn_shader_gs.h       |   66 +
 src/gallium/drivers/r600/sfn/sfn_shader_tcs.cpp    |  108 -
 src/gallium/drivers/r600/sfn/sfn_shader_tcs.h      |   33 -
 src/gallium/drivers/r600/sfn/sfn_shader_tess.cpp   |  275 ++
 src/gallium/drivers/r600/sfn/sfn_shader_tess.h     |   76 +
 .../drivers/r600/sfn/sfn_shader_tess_eval.cpp      |  123 -
 .../drivers/r600/sfn/sfn_shader_tess_eval.h        |   39 -
 src/gallium/drivers/r600/sfn/sfn_shader_vertex.cpp |  230 --
 src/gallium/drivers/r600/sfn/sfn_shader_vertex.h   |   83 -
 src/gallium/drivers/r600/sfn/sfn_shader_vs.cpp     |  663 +++++
 src/gallium/drivers/r600/sfn/sfn_shader_vs.h       |  156 +
 src/gallium/drivers/r600/sfn/sfn_shaderio.cpp      |  448 ---
 src/gallium/drivers/r600/sfn/sfn_shaderio.h        |  176 --
 src/gallium/drivers/r600/sfn/sfn_value.cpp         |  242 --
 src/gallium/drivers/r600/sfn/sfn_value.h           |  194 --
 src/gallium/drivers/r600/sfn/sfn_value_gpr.cpp     |  380 ---
 src/gallium/drivers/r600/sfn/sfn_value_gpr.h       |  208 --
 src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp  |  959 ++++++
 src/gallium/drivers/r600/sfn/sfn_valuefactory.h    |  299 ++
 src/gallium/drivers/r600/sfn/sfn_valuepool.cpp     |  526 ----
 src/gallium/drivers/r600/sfn/sfn_valuepool.h       |  242 --
 .../drivers/r600/sfn/sfn_vertexstageexport.cpp     |  535 ----
 .../drivers/r600/sfn/sfn_vertexstageexport.h       |  116 -
 src/gallium/drivers/r600/sfn/sfn_virtualvalues.cpp | 1072 +++++++
 src/gallium/drivers/r600/sfn/sfn_virtualvalues.h   |  460 +++
 src/gallium/drivers/r600/sfn/tests/meson.build     |   37 +
 .../drivers/r600/sfn/tests/sfn_instr_test.cpp      |  798 +++++
 .../r600/sfn/tests/sfn_instrfromstring_test.cpp    |  728 +++++
 .../drivers/r600/sfn/tests/sfn_liverange_test.cpp  |  217 ++
 .../drivers/r600/sfn/tests/sfn_optimizer_test.cpp  |  300 ++
 .../r600/sfn/tests/sfn_shaderfromstring_test.cpp   |  123 +
 .../drivers/r600/sfn/tests/sfn_test_shaders.cpp    | 3116 ++++++++++++++++++++
 .../drivers/r600/sfn/tests/sfn_test_shaders.h      |  115 +
 .../drivers/r600/sfn/tests/sfn_value_test.cpp      |  244 ++
 .../r600/sfn/tests/sfn_valuefactory_test.cpp       |  285 ++
 140 files changed, 27319 insertions(+), 16146 deletions(-)

Diff:   http://cgit.freedesktop.org/mesa/mesa/diff/?id=79ca456b4837b3bc21cf9ef3c03c505c4b4909f6


More information about the mesa-commit mailing list