Mesa (master): radeonsi: Create a helper function for computing the thread id

Tom Stellard tstellar at kemper.freedesktop.org
Sat Apr 23 01:07:04 UTC 2016


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

Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Mon Apr 18 13:10:10 2016 -0400

radeonsi: Create a helper function for computing the thread id

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/radeonsi/si_shader.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index c6efbc1..a8749e4 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1116,6 +1116,14 @@ static LLVMValueRef get_sample_id(struct radeon_llvm_context *radeon_bld)
 			    SI_PARAM_ANCILLARY, 8, 4);
 }
 
+static LLVMValueRef get_thread_id(struct si_shader_context *ctx)
+{
+	struct gallivm_state *gallivm = &ctx->radeon_bld.gallivm;
+
+	return lp_build_intrinsic(gallivm->builder, "llvm.SI.tid", ctx->i32,
+					   NULL, 0, LLVMReadNoneAttribute);
+}
+
 /**
  * Load a dword from a constant buffer.
  */
@@ -1863,8 +1871,7 @@ static void si_llvm_emit_streamout(struct si_shader_context *ctx,
 	LLVMValueRef so_vtx_count =
 		unpack_param(ctx, ctx->param_streamout_config, 16, 7);
 
-	LLVMValueRef tid = lp_build_intrinsic(builder, "llvm.SI.tid", ctx->i32,
-					   NULL, 0, LLVMReadNoneAttribute);
+	LLVMValueRef tid = get_thread_id(ctx);
 
 	/* can_emit = tid < so_vtx_count; */
 	LLVMValueRef can_emit =
@@ -4365,8 +4372,7 @@ static void si_llvm_emit_ddxy(
 	unsigned mask;
 
 	indices[0] = bld_base->uint_bld.zero;
-	indices[1] = lp_build_intrinsic(gallivm->builder, "llvm.SI.tid", ctx->i32,
-				     NULL, 0, LLVMReadNoneAttribute);
+	indices[1] = get_thread_id(ctx);
 	store_ptr = LLVMBuildGEP(gallivm->builder, ctx->lds,
 				 indices, 2, "");
 
@@ -4437,8 +4443,7 @@ static LLVMValueRef si_llvm_emit_ddxy_interp(
 	unsigned c;
 
 	indices[0] = bld_base->uint_bld.zero;
-	indices[1] = lp_build_intrinsic(gallivm->builder, "llvm.SI.tid", ctx->i32,
-					NULL, 0, LLVMReadNoneAttribute);
+	indices[1] = get_thread_id(ctx);
 	store_ptr = LLVMBuildGEP(gallivm->builder, ctx->lds,
 				 indices, 2, "");
 




More information about the mesa-commit mailing list