mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
ac/nir: make ac_build_isign work on all bit sizes
v2: don't use ac_get_zero(), ac_get_one() and ac_int_of_size() Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
parent
bbbfdef683
commit
6790b3a8db
1 changed files with 4 additions and 23 deletions
|
|
@ -2078,30 +2078,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, "");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue