Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 src/amd/common/ac_nir_to_llvm.c | 111 ++++++++++++++++++++++------------------
 1 file changed, 60 insertions(+), 51 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 6f9fc21a88..8cb479f43a 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -308,15 +308,6 @@ add_user_sgpr_argument(struct arg_info *info,
        add_sgpr_argument(info, type, param_ptr);
 }
 
-static inline void
-add_vgpr_argument(struct arg_info *info,
-                 LLVMTypeRef type,
-                 LLVMValueRef *param_ptr)
-{
-       add_argument(info, type, param_ptr);
-       info->num_vgprs_used += ac_get_type_size(type) / 4;
-}
-
 static inline void
 add_user_sgpr_array_argument(struct arg_info *info,
                             LLVMTypeRef type,
@@ -767,21 +758,21 @@ declare_vs_specific_input_sgprs(struct 
nir_to_llvm_context *ctx,
 static void
 declare_vs_input_vgprs(struct nir_to_llvm_context *ctx, struct arg_info *args)
 {
-       add_vgpr_argument(args, ctx->ac.i32, &ctx->abi.vertex_id);
+       add_arg(args, ARG_VGPR, ctx->ac.i32, &ctx->abi.vertex_id);
        if (!ctx->is_gs_copy_shader) {
-               add_vgpr_argument(args, ctx->ac.i32, &ctx->rel_auto_id);
-               add_vgpr_argument(args, ctx->ac.i32, &ctx->vs_prim_id);
-               add_vgpr_argument(args, ctx->ac.i32, &ctx->abi.instance_id);
+               add_arg(args, ARG_VGPR, ctx->ac.i32, &ctx->rel_auto_id);
+               add_arg(args, ARG_VGPR, ctx->ac.i32, &ctx->vs_prim_id);
+               add_arg(args, ARG_VGPR, ctx->ac.i32, &ctx->abi.instance_id);
        }
 }
 
 static void
 declare_tes_input_vgprs(struct nir_to_llvm_context *ctx, struct arg_info *args)
 {
-       add_vgpr_argument(args, ctx->ac.f32, &ctx->tes_u);
-       add_vgpr_argument(args, ctx->ac.f32, &ctx->tes_v);
-       add_vgpr_argument(args, ctx->ac.i32, &ctx->tes_rel_patch_id);
-       add_vgpr_argument(args, ctx->ac.i32, &ctx->tes_patch_id);
+       add_arg(args, ARG_VGPR, ctx->ac.f32, &ctx->tes_u);
+       add_arg(args, ARG_VGPR, ctx->ac.f32, &ctx->tes_v);
+       add_arg(args, ARG_VGPR, ctx->ac.i32, &ctx->tes_rel_patch_id);
+       add_arg(args, ARG_VGPR, ctx->ac.i32, &ctx->tes_patch_id);
 }
 
 static void create_function(struct nir_to_llvm_context *ctx,
@@ -821,7 +812,8 @@ static void create_function(struct nir_to_llvm_context *ctx,
 
                if (ctx->shader_info->info.cs.uses_local_invocation_idx)
                        add_sgpr_argument(&args, ctx->ac.i32, &ctx->tg_size);
-               add_vgpr_argument(&args, ctx->ac.v3i32, 
&ctx->local_invocation_ids);
+               add_arg(&args, ARG_VGPR, ctx->ac.v3i32,
+                       &ctx->local_invocation_ids);
                break;
        case MESA_SHADER_VERTEX:
                declare_global_input_sgprs(ctx, stage, has_previous_stage,
@@ -868,8 +860,10 @@ static void create_function(struct nir_to_llvm_context 
*ctx,
                        if (ctx->shader_info->info.needs_multiview_view_index)
                                add_user_sgpr_argument(&args, ctx->ac.i32, 
&ctx->view_index);
 
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->tcs_patch_id); // patch id
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->tcs_rel_ids); // rel ids;
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->tcs_patch_id);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->tcs_rel_ids);
 
                        declare_vs_input_vgprs(ctx, &args);
                } else {
@@ -887,8 +881,10 @@ static void create_function(struct nir_to_llvm_context 
*ctx,
                                add_user_sgpr_argument(&args, ctx->ac.i32, 
&ctx->view_index);
                        add_sgpr_argument(&args, ctx->ac.i32, &ctx->oc_lds); // 
param oc lds
                        add_sgpr_argument(&args, ctx->ac.i32, 
&ctx->tess_factor_offset); // tess factor offset
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->tcs_patch_id); // patch id
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->tcs_rel_ids); // rel ids;
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->tcs_patch_id);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->tcs_rel_ids);
                }
                break;
        case MESA_SHADER_TESS_EVAL:
@@ -940,11 +936,16 @@ static void create_function(struct nir_to_llvm_context 
*ctx,
                        if (ctx->shader_info->info.needs_multiview_view_index)
                                add_user_sgpr_argument(&args, ctx->ac.i32, 
&ctx->view_index);
 
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[0]); // vtx01
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[2]); // vtx23
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->abi.gs_prim_id); // prim id
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->abi.gs_invocation_id);
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[4]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[0]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[2]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->abi.gs_prim_id);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->abi.gs_invocation_id);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[4]);
 
                        if (previous_stage == MESA_SHADER_VERTEX) {
                                declare_vs_input_vgprs(ctx, &args);
@@ -964,14 +965,22 @@ static void create_function(struct nir_to_llvm_context 
*ctx,
                                add_user_sgpr_argument(&args, ctx->ac.i32, 
&ctx->view_index);
                        add_sgpr_argument(&args, ctx->ac.i32, 
&ctx->gs2vs_offset); // gs2vs offset
                        add_sgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_wave_id); // wave id
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[0]); // vtx0
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[1]); // vtx1
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->abi.gs_prim_id); // prim id
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[2]);
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[3]);
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[4]);
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->gs_vtx_offset[5]);
-                       add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->abi.gs_invocation_id);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[0]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[1]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->abi.gs_prim_id);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[2]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[3]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[4]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->gs_vtx_offset[5]);
+                       add_arg(&args, ARG_VGPR, ctx->ac.i32,
+                               &ctx->abi.gs_invocation_id);
                }
                break;
        case MESA_SHADER_FRAGMENT:
@@ -982,22 +991,22 @@ static void create_function(struct nir_to_llvm_context 
*ctx,
                if (ctx->shader_info->info.ps.needs_sample_positions)
                        add_user_sgpr_argument(&args, ctx->ac.i32, 
&ctx->sample_pos_offset); /* sample position offset */
                add_sgpr_argument(&args, ctx->ac.i32, &ctx->prim_mask); /* prim 
mask */
-               add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->persp_sample); /* 
persp sample */
-               add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->persp_center); /* 
persp center */
-               add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->persp_centroid); 
/* persp centroid */
-               add_vgpr_argument(&args, ctx->ac.v3i32, NULL); /* persp pull 
model */
-               add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->linear_sample); 
/* linear sample */
-               add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->linear_center); 
/* linear center */
-               add_vgpr_argument(&args, ctx->ac.v2i32, &ctx->linear_centroid); 
/* linear centroid */
-               add_vgpr_argument(&args, ctx->ac.f32, NULL);  /* line stipple 
tex */
-               add_vgpr_argument(&args, ctx->ac.f32, &ctx->abi.frag_pos[0]);  
/* pos x float */
-               add_vgpr_argument(&args, ctx->ac.f32, &ctx->abi.frag_pos[1]);  
/* pos y float */
-               add_vgpr_argument(&args, ctx->ac.f32, &ctx->abi.frag_pos[2]);  
/* pos z float */
-               add_vgpr_argument(&args, ctx->ac.f32, &ctx->abi.frag_pos[3]);  
/* pos w float */
-               add_vgpr_argument(&args, ctx->ac.i32, &ctx->abi.front_face);  
/* front face */
-               add_vgpr_argument(&args, ctx->ac.i32, &ctx->abi.ancillary);  /* 
ancillary */
-               add_vgpr_argument(&args, ctx->ac.i32, 
&ctx->abi.sample_coverage);  /* sample coverage */
-               add_vgpr_argument(&args, ctx->ac.i32, NULL);  /* fixed pt */
+               add_arg(&args, ARG_VGPR, ctx->ac.v2i32, &ctx->persp_sample);
+               add_arg(&args, ARG_VGPR, ctx->ac.v2i32, &ctx->persp_center);
+               add_arg(&args, ARG_VGPR, ctx->ac.v2i32, &ctx->persp_centroid);
+               add_arg(&args, ARG_VGPR, ctx->ac.v3i32, NULL); /* persp pull 
model */
+               add_arg(&args, ARG_VGPR, ctx->ac.v2i32, &ctx->linear_sample);
+               add_arg(&args, ARG_VGPR, ctx->ac.v2i32, &ctx->linear_center);
+               add_arg(&args, ARG_VGPR, ctx->ac.v2i32, &ctx->linear_centroid);
+               add_arg(&args, ARG_VGPR, ctx->ac.f32, NULL);  /* line stipple 
tex */
+               add_arg(&args, ARG_VGPR, ctx->ac.f32, &ctx->abi.frag_pos[0]);
+               add_arg(&args, ARG_VGPR, ctx->ac.f32, &ctx->abi.frag_pos[1]);
+               add_arg(&args, ARG_VGPR, ctx->ac.f32, &ctx->abi.frag_pos[2]);
+               add_arg(&args, ARG_VGPR, ctx->ac.f32, &ctx->abi.frag_pos[3]);
+               add_arg(&args, ARG_VGPR, ctx->ac.i32, &ctx->abi.front_face);
+               add_arg(&args, ARG_VGPR, ctx->ac.i32, &ctx->abi.ancillary);
+               add_arg(&args, ARG_VGPR, ctx->ac.i32, 
&ctx->abi.sample_coverage);
+               add_arg(&args, ARG_VGPR, ctx->ac.i32, NULL);  /* fixed pt */
                break;
        default:
                unreachable("Shader stage not implemented");
-- 
2.15.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to