[Mesa-dev] [PATCH 2/9] radeonsi: clean up more HAVE_LLVM #ifdefs

Marek Olšák maraeo at gmail.com
Mon Jan 2 20:16:59 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/drivers/radeon/r600_pipe_common.c | 14 +++++++++-----
 src/gallium/drivers/radeonsi/si_shader.c      | 19 +++++++++++--------
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c
index 74e8de9..d45a385 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.c
+++ b/src/gallium/drivers/radeon/r600_pipe_common.c
@@ -36,20 +36,24 @@
 #include "vl/vl_decoder.h"
 #include "vl/vl_video_buffer.h"
 #include "radeon/radeon_video.h"
 #include <inttypes.h>
 #include <sys/utsname.h>
 
 #ifndef HAVE_LLVM
 #define HAVE_LLVM 0
 #endif
 
+#ifndef MESA_LLVM_VERSION_PATCH
+#define MESA_LLVM_VERSION_PATCH 0
+#endif
+
 struct r600_multi_fence {
 	struct pipe_reference reference;
 	struct pipe_fence_handle *gfx;
 	struct pipe_fence_handle *sdma;
 
 	/* If the context wasn't flushed at fence creation, this is non-NULL. */
 	struct {
 		struct r600_common_context *ctx;
 		unsigned ib_index;
 	} gfx_unflushed;
@@ -1194,25 +1198,25 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen,
 {
 	char llvm_string[32] = {}, kernel_version[128] = {};
 	struct utsname uname_data;
 
 	ws->query_info(ws, &rscreen->info);
 
 	if (uname(&uname_data) == 0)
 		snprintf(kernel_version, sizeof(kernel_version),
 			 " / %s", uname_data.release);
 
-#if HAVE_LLVM
-	snprintf(llvm_string, sizeof(llvm_string),
-		 ", LLVM %i.%i.%i", (HAVE_LLVM >> 8) & 0xff,
-		 HAVE_LLVM & 0xff, MESA_LLVM_VERSION_PATCH);
-#endif
+	if (HAVE_LLVM > 0) {
+		snprintf(llvm_string, sizeof(llvm_string),
+			 ", LLVM %i.%i.%i", (HAVE_LLVM >> 8) & 0xff,
+			 HAVE_LLVM & 0xff, MESA_LLVM_VERSION_PATCH);
+	}
 
 	snprintf(rscreen->renderer_string, sizeof(rscreen->renderer_string),
 		 "%s (DRM %i.%i.%i%s%s)",
 		 r600_get_chip_name(rscreen), rscreen->info.drm_major,
 		 rscreen->info.drm_minor, rscreen->info.drm_patchlevel,
 		 kernel_version, llvm_string);
 
 	rscreen->b.get_name = r600_get_name;
 	rscreen->b.get_vendor = r600_get_vendor;
 	rscreen->b.get_device_vendor = r600_get_device_vendor;
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 72cf827..f18aa82 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1764,30 +1764,33 @@ static void declare_system_value(
 	}
 
 	case TGSI_SEMANTIC_BLOCK_ID:
 		value = LLVMGetParam(radeon_bld->main_fn, SI_PARAM_BLOCK_ID);
 		break;
 
 	case TGSI_SEMANTIC_THREAD_ID:
 		value = LLVMGetParam(radeon_bld->main_fn, SI_PARAM_THREAD_ID);
 		break;
 
-#if HAVE_LLVM >= 0x0309
 	case TGSI_SEMANTIC_HELPER_INVOCATION:
-		value = lp_build_intrinsic(gallivm->builder,
-					   "llvm.amdgcn.ps.live",
-					   ctx->i1, NULL, 0,
-					   LP_FUNC_ATTR_READNONE);
-		value = LLVMBuildNot(gallivm->builder, value, "");
-		value = LLVMBuildSExt(gallivm->builder, value, ctx->i32, "");
+		if (HAVE_LLVM >= 0x0309) {
+			value = lp_build_intrinsic(gallivm->builder,
+						   "llvm.amdgcn.ps.live",
+						   ctx->i1, NULL, 0,
+						   LP_FUNC_ATTR_READNONE);
+			value = LLVMBuildNot(gallivm->builder, value, "");
+			value = LLVMBuildSExt(gallivm->builder, value, ctx->i32, "");
+		} else {
+			assert(!"TGSI_SEMANTIC_HELPER_INVOCATION unsupported");
+			return;
+		}
 		break;
-#endif
 
 	default:
 		assert(!"unknown system value");
 		return;
 	}
 
 	radeon_bld->system_values[index] = value;
 }
 
 static void declare_compute_memory(struct si_shader_context *radeon_bld,
-- 
2.7.4



More information about the mesa-dev mailing list