[Mesa-dev] [PATCH 01/20] radeonsi: set shader calling conventions

Tom Stellard tom at stellard.net
Mon Apr 4 16:19:09 UTC 2016


On Sat, Apr 02, 2016 at 03:10:44PM +0200, Bas Nieuwenhuizen wrote:
> Note that old mesa + new LLVM or new mesa + old LLVM breaks
> with this change and the corresponding LLVM change (D18559).
> 
> For LLVM version <= 3.8 we use the old method, but we can't detect
> people using a post 3.8 svn version that is still too old.
> 
> Signed-off-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
> ---
>  src/gallium/drivers/radeon/radeon_llvm_emit.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.c b/src/gallium/drivers/radeon/radeon_llvm_emit.c
> index 474154e..7174132 100644
> --- a/src/gallium/drivers/radeon/radeon_llvm_emit.c
> +++ b/src/gallium/drivers/radeon/radeon_llvm_emit.c
> @@ -55,6 +55,13 @@ enum radeon_llvm_shader_type {
>  	RADEON_LLVM_SHADER_CS = 3,
>  };
>  
> +enum radeon_llvm_calling_convention {
> +	RADEON_LLVM_AMDGPU_VS = 87,
> +	RADEON_LLVM_AMDGPU_GS = 88,
> +	RADEON_LLVM_AMDGPU_PS = 89,
> +	RADEON_LLVM_AMDGPU_CS = 90,
> +};
> +
>  void radeon_llvm_add_attribute(LLVMValueRef F, const char *name, int value)
>  {
>  	char str[16];
> @@ -71,27 +78,35 @@ void radeon_llvm_add_attribute(LLVMValueRef F, const char *name, int value)
>  void radeon_llvm_shader_type(LLVMValueRef F, unsigned type)
>  {
>  	enum radeon_llvm_shader_type llvm_type;
> +	enum radeon_llvm_calling_convention calling_conv;
>  

This looks like you will get 'unused variable warnings' with this change.
Probably this easiest thing to do is put (void)variable_name somewhere, but
I'm not sure this is really a big deal.
Either way:

Reviewed-by: Tom Stellard <thomas.stellard at amd.com>


>  	switch (type) {
>  	case TGSI_PROCESSOR_VERTEX:
>  	case TGSI_PROCESSOR_TESS_CTRL:
>  	case TGSI_PROCESSOR_TESS_EVAL:
>  		llvm_type = RADEON_LLVM_SHADER_VS;
> +		calling_conv = RADEON_LLVM_AMDGPU_VS;
>  		break;
>  	case TGSI_PROCESSOR_GEOMETRY:
>  		llvm_type = RADEON_LLVM_SHADER_GS;
> +		calling_conv = RADEON_LLVM_AMDGPU_GS;
>  		break;
>  	case TGSI_PROCESSOR_FRAGMENT:
>  		llvm_type = RADEON_LLVM_SHADER_PS;
> +		calling_conv = RADEON_LLVM_AMDGPU_PS;
>  		break;
>  	case TGSI_PROCESSOR_COMPUTE:
>  		llvm_type = RADEON_LLVM_SHADER_CS;
> +		calling_conv = RADEON_LLVM_AMDGPU_CS;
>  		break;
>  	default:
>  		assert(0);
>  	}
>  
> -	radeon_llvm_add_attribute(F, "ShaderType", llvm_type);
> +	if (HAVE_LLVM >= 0x309)
> +		LLVMSetFunctionCallConv(F, calling_conv);
> +	else
> +		radeon_llvm_add_attribute(F, "ShaderType", llvm_type);
>  }
>  
>  static void init_r600_target()
> -- 
> 2.7.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list