r600/sfn: rewrite NIR backend
authorGert Wollny <gert.wollny@collabora.com>
Sat, 19 Jun 2021 11:03:32 +0000 (13:03 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 7 Jul 2022 20:11:02 +0000 (20:11 +0000)
commit79ca456b4837b3bc21cf9ef3c03c505c4b4909f6
tree8bf343dd197ec4e8f194615c422e3d7fa3c4f05c
parentab06b00c632e43f6b1a63d59c43b8eb6d2f98825
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@collabora.com>
Reviewed-by: Filip Gawin <filip@gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17076>
140 files changed:
src/gallium/drivers/r600/meson.build
src/gallium/drivers/r600/r600_asm.c
src/gallium/drivers/r600/r600_asm.h
src/gallium/drivers/r600/r600_pipe.c
src/gallium/drivers/r600/sfn/sfn_alu_defines.cpp
src/gallium/drivers/r600/sfn/sfn_alu_defines.h
src/gallium/drivers/r600/sfn/sfn_alu_readport_validation.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_alu_readport_validation.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_assembler.cpp [moved from src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp with 52% similarity]
src/gallium/drivers/r600/sfn/sfn_assembler.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_conditionaljumptracker.h
src/gallium/drivers/r600/sfn/sfn_debug.cpp
src/gallium/drivers/r600/sfn/sfn_debug.h
src/gallium/drivers/r600/sfn/sfn_defines.h
src/gallium/drivers/r600/sfn/sfn_docu.txt
src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_emitinstruction.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_emitinstruction.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_emittexinstruction.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_emittexinstruction.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instr.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_alu.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_controlflow.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_controlflow.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_export.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_export.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_fetch.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_fetch.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_lds.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_lds.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_mem.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_tex.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instr_tex.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instrfactory.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instrfactory.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_instruction_alu.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_alu.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_base.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_base.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_block.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_block.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_cf.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_cf.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_export.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_export.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_fetch.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_fetch.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_gds.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_gds.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_lds.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_lds.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_misc.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_misc.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instruction_tex.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_instructionvisitor.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_instructionvisitor.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_liverange.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_liverange.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_liverangeevaluator.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_liverangeevaluator.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_liverangeevaluator_helpers.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_liverangeevaluator_helpers.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_memorypool.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_memorypool.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_nir.cpp
src/gallium/drivers/r600/sfn/sfn_nir.h
src/gallium/drivers/r600/sfn/sfn_nir_legalize_image_load_store.cpp
src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp
src/gallium/drivers/r600/sfn/sfn_nir_lower_tess_io.cpp
src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.cpp [moved from src/gallium/drivers/r600/sfn/sfn_instruction_tex.cpp with 65% similarity]
src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_optimizer.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_optimizer.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_optimizers.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_optimizers.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_peephole.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_peephole.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_ra.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_ra.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_scheduler.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_scheduler.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_base.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_base.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_compute.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_compute.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_cs.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_fragment.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_fragment.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_fs.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_geometry.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_geometry.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_gs.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_tcs.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_tcs.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_tess.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_tess.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_tess_eval.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_vertex.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_vertex.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_shader_vs.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shader_vs.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_shaderio.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_shaderio.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_value.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_value.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_value_gpr.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_value_gpr.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_valuefactory.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_valuepool.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_valuepool.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_vertexstageexport.cpp [deleted file]
src/gallium/drivers/r600/sfn/sfn_vertexstageexport.h [deleted file]
src/gallium/drivers/r600/sfn/sfn_virtualvalues.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/sfn_virtualvalues.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/meson.build [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_instr_test.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_instrfromstring_test.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_liverange_test.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_optimizer_test.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_shaderfromstring_test.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_test_shaders.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_test_shaders.h [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_value_test.cpp [new file with mode: 0644]
src/gallium/drivers/r600/sfn/tests/sfn_valuefactory_test.cpp [new file with mode: 0644]