[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