Mesa (master): amd/common: add new add_arg() helper for SGPRs/ VGPRs arguments

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Wed Dec 27 09:27:33 UTC 2017


Module: Mesa
Branch: master
Commit: f1242a897687eab3ab969cec280a2f7f9e4795ae
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1242a897687eab3ab969cec280a2f7f9e4795ae

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Dec 20 20:55:58 2017 +0100

amd/common: add new add_arg() helper for SGPRs/VGPRs arguments

The idea is to clean up the add arguments logic.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/common/ac_nir_to_llvm.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index b2fc5b091a..78bb190be5 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -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)




More information about the mesa-commit mailing list