r600/sfn: add lowering passes to get 64 bit ops lowered to 32 bit vec2

The lower_double and lower_int64 don't lower all 64 bit IO ops and merging
to and splitting fromn 64 bit values. So here goes a bunch of lowering
passes that takes care of this and also of merging IO that might have been
split.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7824>
This commit is contained in:
Gert Wollny 2020-11-28 16:34:26 +01:00 committed by Marge Bot
parent 0862680e2d
commit 165fb5117b
3 changed files with 1071 additions and 0 deletions

View File

@ -149,6 +149,7 @@ files_r600 = files(
'sfn/sfn_liverange.h',
'sfn/sfn_nir.cpp',
'sfn/sfn_nir.h',
'sfn/sfn_nir_lower_64bit.cpp',
'sfn/sfn_nir_lower_fs_out_to_vector.cpp',
'sfn/sfn_nir_lower_fs_out_to_vector.h',
'sfn/sfn_nir_lower_tess_io.cpp',

View File

@ -60,6 +60,12 @@ bool r600_lower_scratch_addresses(nir_shader *shader);
bool r600_lower_ubo_to_align16(nir_shader *shader);
bool r600_nir_split_64bit_io(nir_shader *sh);
bool r600_nir_64_to_vec2(nir_shader *sh);
bool r600_merge_vec2_stores(nir_shader *shader);
class Shader {
public:
std::vector<InstructionBlock>& m_ir;

File diff suppressed because it is too large Load Diff