mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/ir: Create SSA values with the corresponding dimension in vsir_program_lower_udiv().
This commit is contained in:
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
@@ -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;
|
||||||
|
Reference in New Issue
Block a user