Mesa (master): radeonsi/ac: move get_image_intr_name to common

Dave Airlie airlied at kemper.freedesktop.org
Mon Mar 6 22:17:14 UTC 2017


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Mon Mar  6 08:37:22 2017 +1000

radeonsi/ac: move get_image_intr_name to common

This code is used in radv, so move to common build code.

Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/amd/common/ac_llvm_build.c           | 26 ++++++++++++++++++
 src/amd/common/ac_llvm_build.h           |  5 ++++
 src/gallium/drivers/radeonsi/si_shader.c | 46 +++++++-------------------------
 3 files changed, 41 insertions(+), 36 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index 8996159..5745fab 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -1216,3 +1216,29 @@ LLVMValueRef ac_build_bfe(struct ac_llvm_context *ctx, LLVMValueRef input,
 				  AC_FUNC_ATTR_READNONE |
 				  AC_FUNC_ATTR_LEGACY);
 }
+
+void ac_get_image_intr_name(const char *base_name,
+			    LLVMTypeRef data_type,
+			    LLVMTypeRef coords_type,
+			    LLVMTypeRef rsrc_type,
+			    char *out_name, unsigned out_len)
+{
+        char coords_type_name[8];
+
+        ac_build_type_name_for_intr(coords_type, coords_type_name,
+                            sizeof(coords_type_name));
+
+        if (HAVE_LLVM <= 0x0309) {
+                snprintf(out_name, out_len, "%s.%s", base_name, coords_type_name);
+        } else {
+                char data_type_name[8];
+                char rsrc_type_name[8];
+
+                ac_build_type_name_for_intr(data_type, data_type_name,
+                                        sizeof(data_type_name));
+                ac_build_type_name_for_intr(rsrc_type, rsrc_type_name,
+                                        sizeof(rsrc_type_name));
+                snprintf(out_name, out_len, "%s.%s.%s.%s", base_name,
+                         data_type_name, coords_type_name, rsrc_type_name);
+        }
+}
diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h
index d3c537b..d6edcde 100644
--- a/src/amd/common/ac_llvm_build.h
+++ b/src/amd/common/ac_llvm_build.h
@@ -234,6 +234,11 @@ LLVMValueRef ac_build_bfe(struct ac_llvm_context *ctx, LLVMValueRef input,
 			  LLVMValueRef offset, LLVMValueRef width,
 			  bool is_signed);
 
+void ac_get_image_intr_name(const char *base_name,
+			    LLVMTypeRef data_type,
+			    LLVMTypeRef coords_type,
+			    LLVMTypeRef rsrc_type,
+			    char *out_name, unsigned out_len);
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index ec34235..1553fd4 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -3534,32 +3534,6 @@ static void load_emit_memory(
 	emit_data->output[emit_data->chan] = lp_build_gather_values(gallivm, channels, 4);
 }
 
-static void get_image_intr_name(const char *base_name,
-				LLVMTypeRef data_type,
-				LLVMTypeRef coords_type,
-				LLVMTypeRef rsrc_type,
-				char *out_name, unsigned out_len)
-{
-	char coords_type_name[8];
-
-	ac_build_type_name_for_intr(coords_type, coords_type_name,
-			    sizeof(coords_type_name));
-
-	if (HAVE_LLVM <= 0x0309) {
-		snprintf(out_name, out_len, "%s.%s", base_name, coords_type_name);
-	} else {
-		char data_type_name[8];
-		char rsrc_type_name[8];
-
-		ac_build_type_name_for_intr(data_type, data_type_name,
-					sizeof(data_type_name));
-		ac_build_type_name_for_intr(rsrc_type, rsrc_type_name,
-					sizeof(rsrc_type_name));
-		snprintf(out_name, out_len, "%s.%s.%s.%s", base_name,
-			 data_type_name, coords_type_name, rsrc_type_name);
-	}
-}
-
 /**
  * Return true if the memory accessed by a LOAD or STORE instruction is
  * read-only or write-only, respectively.
@@ -3662,11 +3636,11 @@ static void load_emit(
 				emit_data->args, emit_data->arg_count,
 				get_load_intr_attribs(readonly_memory));
 	} else {
-		get_image_intr_name("llvm.amdgcn.image.load",
-				emit_data->dst_type,		/* vdata */
-				LLVMTypeOf(emit_data->args[0]), /* coords */
-				LLVMTypeOf(emit_data->args[1]), /* rsrc */
-				intrinsic_name, sizeof(intrinsic_name));
+		ac_get_image_intr_name("llvm.amdgcn.image.load",
+				       emit_data->dst_type,		/* vdata */
+				       LLVMTypeOf(emit_data->args[0]), /* coords */
+				       LLVMTypeOf(emit_data->args[1]), /* rsrc */
+				       intrinsic_name, sizeof(intrinsic_name));
 
 		emit_data->output[emit_data->chan] =
 			lp_build_intrinsic(
@@ -3881,11 +3855,11 @@ static void store_emit(
 			emit_data->arg_count,
 			get_store_intr_attribs(writeonly_memory));
 	} else {
-		get_image_intr_name("llvm.amdgcn.image.store",
-				LLVMTypeOf(emit_data->args[0]), /* vdata */
-				LLVMTypeOf(emit_data->args[1]), /* coords */
-				LLVMTypeOf(emit_data->args[2]), /* rsrc */
-				intrinsic_name, sizeof(intrinsic_name));
+		ac_get_image_intr_name("llvm.amdgcn.image.store",
+				       LLVMTypeOf(emit_data->args[0]), /* vdata */
+				       LLVMTypeOf(emit_data->args[1]), /* coords */
+				       LLVMTypeOf(emit_data->args[2]), /* rsrc */
+				       intrinsic_name, sizeof(intrinsic_name));
 
 		emit_data->output[emit_data->chan] =
 			lp_build_intrinsic(




More information about the mesa-commit mailing list