OSDN Git Service

amd/common: add new add_arg() helper for SGPRs/VGPRs arguments
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 20 Dec 2017 19:55:58 +0000 (20:55 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 27 Dec 2017 09:24:57 +0000 (10:24 +0100)
The idea is to clean up the add arguments logic.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/common/ac_nir_to_llvm.c

index b2fc5b0..78bb190 100644 (file)
@@ -257,6 +257,30 @@ struct arg_info {
        uint8_t num_vgprs_used;
 };
 
+enum ac_arg_regfile {
+       ARG_SGPR,
+       ARG_VGPR,
+};
+
+static void
+add_arg(struct arg_info *info, enum ac_arg_regfile regfile, LLVMTypeRef type,
+       LLVMValueRef *param_ptr)
+{
+       assert(info->count < MAX_ARGS);
+
+       info->assign[info->count] = param_ptr;
+       info->types[info->count] = type;
+       info->count++;
+
+       if (regfile == ARG_SGPR) {
+               info->num_sgprs_used += ac_get_type_size(type) / 4;
+               info->sgpr_count++;
+       } else {
+               assert(regfile == ARG_VGPR);
+               info->num_vgprs_used += ac_get_type_size(type) / 4;
+       }
+}
+
 static inline void
 add_argument(struct arg_info *info,
             LLVMTypeRef type, LLVMValueRef *param_ptr)