[Mesa-dev] [PATCH 2/9] ac/nir: move cast_ptr() to ac_llvm_build.c

Samuel Pitoiset samuel.pitoiset at gmail.com
Mon Mar 12 11:56:46 UTC 2018


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/amd/common/ac_llvm_build.c  |  8 ++++++++
 src/amd/common/ac_llvm_build.h  |  3 +++
 src/amd/common/ac_nir_to_llvm.c | 12 ++----------
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index 8d4f114a65..0a02ee38c1 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -2368,3 +2368,11 @@ LLVMValueRef ac_build_alloca_undef(struct ac_llvm_context *ac,
 	LLVMBuildStore(ac->builder, LLVMGetUndef(type), ptr);
 	return ptr;
 }
+
+LLVMValueRef ac_cast_ptr(struct ac_llvm_context *ctx, LLVMValueRef ptr,
+                         LLVMTypeRef type)
+{
+	int addr_space = LLVMGetPointerAddressSpace(LLVMTypeOf(ptr));
+	return LLVMBuildBitCast(ctx->builder, ptr,
+	                        LLVMPointerType(type, addr_space), "");
+}
diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h
index 2587c94315..33d3923157 100644
--- a/src/amd/common/ac_llvm_build.h
+++ b/src/amd/common/ac_llvm_build.h
@@ -395,6 +395,9 @@ LLVMValueRef ac_build_alloca(struct ac_llvm_context *ac, LLVMTypeRef type,
 LLVMValueRef ac_build_alloca_undef(struct ac_llvm_context *ac, LLVMTypeRef type,
 				   const char *name);
 
+LLVMValueRef ac_cast_ptr(struct ac_llvm_context *ctx, LLVMValueRef ptr,
+			 LLVMTypeRef type);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 9f2219a546..c57568f7b2 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -2090,14 +2090,6 @@ static void visit_load_const(struct ac_nir_context *ctx,
 	_mesa_hash_table_insert(ctx->defs, &instr->def, value);
 }
 
-static LLVMValueRef cast_ptr(struct ac_llvm_context *ctx, LLVMValueRef ptr,
-                             LLVMTypeRef type)
-{
-	int addr_space = LLVMGetPointerAddressSpace(LLVMTypeOf(ptr));
-	return LLVMBuildBitCast(ctx->builder, ptr,
-	                        LLVMPointerType(type, addr_space), "");
-}
-
 static LLVMValueRef
 get_buffer_size(struct ac_nir_context *ctx, LLVMValueRef descriptor, bool in_elements)
 {
@@ -2352,7 +2344,7 @@ radv_load_resource(struct ac_shader_abi *abi, LLVMValueRef index,
 	offset = LLVMBuildAdd(ctx->ac.builder, offset, index, "");
 	
 	desc_ptr = ac_build_gep0(&ctx->ac, desc_ptr, offset);
-	desc_ptr = cast_ptr(&ctx->ac, desc_ptr, ctx->ac.v4i32);
+	desc_ptr = ac_cast_ptr(&ctx->ac, desc_ptr, ctx->ac.v4i32);
 	LLVMSetMetadata(desc_ptr, ctx->ac.uniform_md_kind, ctx->ac.empty_md);
 
 	return desc_ptr;
@@ -2379,7 +2371,7 @@ static LLVMValueRef visit_load_push_constant(struct ac_nir_context *ctx,
 			    get_src(ctx, instr->src[0]), "");
 
 	ptr = ac_build_gep0(&ctx->ac, ctx->abi->push_constants, addr);
-	ptr = cast_ptr(&ctx->ac, ptr, get_def_type(ctx, &instr->dest.ssa));
+	ptr = ac_cast_ptr(&ctx->ac, ptr, get_def_type(ctx, &instr->dest.ssa));
 
 	return LLVMBuildLoad(ctx->ac.builder, ptr, "");
 }
-- 
2.16.2



More information about the mesa-dev mailing list