[Mesa-dev] [PATCH v2 12/41] ac/nir: make ac_build_isign work on all bit sizes

Samuel Pitoiset samuel.pitoiset at gmail.com
Mon Feb 18 09:07:15 UTC 2019


Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

On 2/16/19 1:22 AM, Rhys Perry wrote:
> v2: don't use ac_get_zero(), ac_get_one() and ac_int_of_size()
>
> Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
> ---
>   src/amd/common/ac_llvm_build.c | 27 ++++-----------------------
>   1 file changed, 4 insertions(+), 23 deletions(-)
>
> diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
> index db937eb66fb..3b2257e8bf0 100644
> --- a/src/amd/common/ac_llvm_build.c
> +++ b/src/amd/common/ac_llvm_build.c
> @@ -2064,30 +2064,11 @@ LLVMValueRef ac_build_fract(struct ac_llvm_context *ctx, LLVMValueRef src0,
>   LLVMValueRef ac_build_isign(struct ac_llvm_context *ctx, LLVMValueRef src0,
>   			    unsigned bitsize)
>   {
> -	LLVMValueRef cmp, val, zero, one;
> -	LLVMTypeRef type;
> -
> -	switch (bitsize) {
> -	case 64:
> -		type = ctx->i64;
> -		zero = ctx->i64_0;
> -		one = ctx->i64_1;
> -		break;
> -	case 32:
> -		type = ctx->i32;
> -		zero = ctx->i32_0;
> -		one = ctx->i32_1;
> -		break;
> -	case 16:
> -		type = ctx->i16;
> -		zero = ctx->i16_0;
> -		one = ctx->i16_1;
> -		break;
> -	default:
> -		unreachable(!"invalid bitsize");
> -		break;
> -	}
> +	LLVMTypeRef type = LLVMIntTypeInContext(ctx->context, bitsize);
> +	LLVMValueRef zero = LLVMConstInt(type, 0, false);
> +	LLVMValueRef one = LLVMConstInt(type, 1, false);
>   
> +	LLVMValueRef cmp, val;
>   	cmp = LLVMBuildICmp(ctx->builder, LLVMIntSGT, src0, zero, "");
>   	val = LLVMBuildSelect(ctx->builder, cmp, one, src0, "");
>   	cmp = LLVMBuildICmp(ctx->builder, LLVMIntSGE, val, zero, "");


More information about the mesa-dev mailing list