From d611fce23dce77e674a3fca6e7ed555570efbedb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 6 Jan 2016 21:21:07 +0100 Subject: [PATCH] gallium/radeon: add a function for adding llvm function attributes MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This will be used for setting the new InitialPSInputAddr attribute. Reviewed-by: Nicolai Hähnle --- src/gallium/drivers/radeon/radeon_llvm_emit.c | 13 +++++++++---- src/gallium/drivers/radeon/radeon_llvm_emit.h | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.c b/src/gallium/drivers/radeon/radeon_llvm_emit.c index 3d0987624a6..474154e52ff 100644 --- a/src/gallium/drivers/radeon/radeon_llvm_emit.c +++ b/src/gallium/drivers/radeon/radeon_llvm_emit.c @@ -55,6 +55,14 @@ enum radeon_llvm_shader_type { RADEON_LLVM_SHADER_CS = 3, }; +void radeon_llvm_add_attribute(LLVMValueRef F, const char *name, int value) +{ + char str[16]; + + snprintf(str, sizeof(str), "%i", value); + LLVMAddTargetDependentFunctionAttr(F, name, str); +} + /** * Set the shader type we want to compile * @@ -62,7 +70,6 @@ enum radeon_llvm_shader_type { */ void radeon_llvm_shader_type(LLVMValueRef F, unsigned type) { - char Str[2]; enum radeon_llvm_shader_type llvm_type; switch (type) { @@ -84,9 +91,7 @@ void radeon_llvm_shader_type(LLVMValueRef F, unsigned type) assert(0); } - sprintf(Str, "%1d", llvm_type); - - LLVMAddTargetDependentFunctionAttr(F, "ShaderType", Str); + radeon_llvm_add_attribute(F, "ShaderType", llvm_type); } static void init_r600_target() diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.h b/src/gallium/drivers/radeon/radeon_llvm_emit.h index 45f05a9e0e1..84dbd2584a1 100644 --- a/src/gallium/drivers/radeon/radeon_llvm_emit.h +++ b/src/gallium/drivers/radeon/radeon_llvm_emit.h @@ -34,6 +34,7 @@ struct pipe_debug_callback; struct radeon_shader_binary; +void radeon_llvm_add_attribute(LLVMValueRef F, const char *name, int value); void radeon_llvm_shader_type(LLVMValueRef F, unsigned type); LLVMTargetRef radeon_llvm_get_r600_target(const char *triple); -- 2.30.2