Giovanni Mascellani : vkd3d-shader/ir: Split undominated SSA materialization.
Module: vkd3d Branch: master Commit: 27801e56129f3288382b3227b623f664a6f91a1e URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/27801e56129f3288382b3227b623f6... Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Wed Apr 10 15:26:50 2024 +0200 vkd3d-shader/ir: Split undominated SSA materialization. --- libs/vkd3d-shader/ir.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index e7e66662..b022d75c 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -4803,6 +4803,24 @@ done: return VKD3D_OK; } +static enum vkd3d_result vsir_program_materialize_undominated_ssas_to_temps(struct vsir_program *program, + struct vkd3d_shader_message_context *message_context) +{ + enum vkd3d_result ret; + struct vsir_cfg cfg; + + if ((ret = vsir_cfg_init(&cfg, program, message_context)) < 0) + return ret; + + vsir_cfg_compute_dominators(&cfg); + + ret = vsir_cfg_materialize_undominated_ssas_to_temps(&cfg); + + vsir_cfg_cleanup(&cfg); + + return ret; +} + struct validation_context { struct vkd3d_shader_message_context *message_context; @@ -5680,8 +5698,6 @@ enum vkd3d_result vsir_program_normalise(struct vsir_program *program, uint64_t if (program->shader_version.major >= 6) { - struct vsir_cfg cfg; - if ((result = vsir_program_materialise_phi_ssas_to_temps(program)) < 0) return result; @@ -5694,15 +5710,7 @@ enum vkd3d_result vsir_program_normalise(struct vsir_program *program, uint64_t if ((result = vsir_program_flatten_control_flow_constructs(program, message_context)) < 0) return result; - if ((result = vsir_cfg_init(&cfg, program, message_context)) < 0) - return result; - vsir_cfg_compute_dominators(&cfg); - - result = vsir_cfg_materialize_undominated_ssas_to_temps(&cfg); - - vsir_cfg_cleanup(&cfg); - - if (result < 0) + if ((result = vsir_program_materialize_undominated_ssas_to_temps(program, message_context)) < 0) return result; } else
participants (1)
-
Alexandre Julliard