vkd3d-shader/ir: Create SSA values with the corresponding dimension in vsir_program_lower_udiv().

This commit is contained in:
Henri Verbeet
2025-06-26 16:08:32 +02:00
parent 043f6f21b0
commit 22ebccfeb7
Notes: Henri Verbeet 2025-06-26 17:50:28 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1594

View File

@@ -669,12 +669,6 @@ static void src_param_init_ssa_float(struct vkd3d_shader_src_param *src, unsigne
src_param_init_ssa_scalar(src, idx, VKD3D_DATA_FLOAT); src_param_init_ssa_scalar(src, idx, VKD3D_DATA_FLOAT);
} }
static void src_param_init_ssa_vec4(struct vkd3d_shader_src_param *src, unsigned int idx,
enum vkd3d_data_type data_type)
{
src_param_init_ssa(src, idx, data_type, VSIR_DIMENSION_VEC4);
}
static void src_param_init_ssa_float4(struct vkd3d_shader_src_param *src, unsigned int idx) static void src_param_init_ssa_float4(struct vkd3d_shader_src_param *src, unsigned int idx)
{ {
src_param_init_ssa(src, idx, VKD3D_DATA_FLOAT, VSIR_DIMENSION_VEC4); src_param_init_ssa(src, idx, VKD3D_DATA_FLOAT, VSIR_DIMENSION_VEC4);
@@ -759,12 +753,6 @@ static void dst_param_init_ssa_float(struct vkd3d_shader_dst_param *dst, unsigne
dst_param_init_ssa_scalar(dst, idx, VKD3D_DATA_FLOAT); dst_param_init_ssa_scalar(dst, idx, VKD3D_DATA_FLOAT);
} }
static void dst_param_init_ssa_vec4(struct vkd3d_shader_dst_param *dst, unsigned int idx,
enum vkd3d_data_type data_type)
{
dst_param_init_ssa(dst, idx, data_type, VSIR_DIMENSION_VEC4);
}
static void dst_param_init_ssa_float4(struct vkd3d_shader_dst_param *dst, unsigned int idx) static void dst_param_init_ssa_float4(struct vkd3d_shader_dst_param *dst, unsigned int idx)
{ {
dst_param_init_ssa(dst, idx, VKD3D_DATA_FLOAT, VSIR_DIMENSION_VEC4); dst_param_init_ssa(dst, idx, VKD3D_DATA_FLOAT, VSIR_DIMENSION_VEC4);
@@ -1219,14 +1207,14 @@ static enum vkd3d_result vsir_program_lower_udiv(struct vsir_program *program,
return VKD3D_ERROR_OUT_OF_MEMORY; return VKD3D_ERROR_OUT_OF_MEMORY;
mov->src[0] = udiv->src[0]; mov->src[0] = udiv->src[0];
dst_param_init_ssa_vec4(&mov->dst[0], program->ssa_count, udiv->src[0].reg.data_type); dst_param_init_ssa(&mov->dst[0], program->ssa_count, udiv->src[0].reg.data_type, udiv->src[0].reg.dimension);
mov = ins++; mov = ins++;
if (!(vsir_instruction_init_with_params(program, mov, &udiv->location, VSIR_OP_MOV, 1, 1))) if (!(vsir_instruction_init_with_params(program, mov, &udiv->location, VSIR_OP_MOV, 1, 1)))
return VKD3D_ERROR_OUT_OF_MEMORY; return VKD3D_ERROR_OUT_OF_MEMORY;
mov->src[0] = udiv->src[1]; mov->src[0] = udiv->src[1];
dst_param_init_ssa_vec4(&mov->dst[0], program->ssa_count + 1, udiv->src[1].reg.data_type); dst_param_init_ssa(&mov->dst[0], program->ssa_count + 1, udiv->src[1].reg.data_type, udiv->src[1].reg.dimension);
if (udiv->dst[0].reg.type != VKD3DSPR_NULL) if (udiv->dst[0].reg.type != VKD3DSPR_NULL)
{ {
@@ -1235,8 +1223,10 @@ static enum vkd3d_result vsir_program_lower_udiv(struct vsir_program *program,
ins->flags = udiv->flags; ins->flags = udiv->flags;
src_param_init_ssa_vec4(&ins->src[0], program->ssa_count, udiv->src[0].reg.data_type); src_param_init_ssa(&ins->src[0], program->ssa_count,
src_param_init_ssa_vec4(&ins->src[1], program->ssa_count + 1, udiv->src[1].reg.data_type); udiv->src[0].reg.data_type, udiv->src[0].reg.dimension);
src_param_init_ssa(&ins->src[1], program->ssa_count + 1,
udiv->src[1].reg.data_type, udiv->src[1].reg.dimension);
ins->dst[0] = udiv->dst[0]; ins->dst[0] = udiv->dst[0];
++ins; ++ins;
@@ -1249,8 +1239,10 @@ static enum vkd3d_result vsir_program_lower_udiv(struct vsir_program *program,
ins->flags = udiv->flags; ins->flags = udiv->flags;
src_param_init_ssa_vec4(&ins->src[0], program->ssa_count, udiv->src[0].reg.data_type); src_param_init_ssa(&ins->src[0], program->ssa_count,
src_param_init_ssa_vec4(&ins->src[1], program->ssa_count + 1, udiv->src[1].reg.data_type); udiv->src[0].reg.data_type, udiv->src[0].reg.dimension);
src_param_init_ssa(&ins->src[1], program->ssa_count + 1,
udiv->src[1].reg.data_type, udiv->src[1].reg.dimension);
ins->dst[0] = udiv->dst[1]; ins->dst[0] = udiv->dst[1];
++ins; ++ins;