Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> for the series.
On Sun, Jan 14, 2018 at 12:09 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote: > Fixes a number of int64 piglit tests, for example: > > generated_tests/spec/arb_gpu_shader_int64/execution/built-in-functions/fs-sign-i64vec2.shader_test > --- > src/amd/common/ac_nir_to_llvm.c | 25 ++++++++++++++++++------- > 1 file changed, 18 insertions(+), 7 deletions(-) > > diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c > index 04ffbedfb3..e79fdd2ec2 100644 > --- a/src/amd/common/ac_nir_to_llvm.c > +++ b/src/amd/common/ac_nir_to_llvm.c > @@ -1362,14 +1362,25 @@ static LLVMValueRef emit_fsign(struct ac_llvm_context > *ctx, > } > > static LLVMValueRef emit_isign(struct ac_llvm_context *ctx, > - LLVMValueRef src0) > + LLVMValueRef src0, unsigned bitsize) > { > - LLVMValueRef cmp, val; > + LLVMValueRef cmp, val, zero, one; > + LLVMTypeRef type; > + > + if (bitsize == 32) { > + type = ctx->i32; > + zero = ctx->i32_0; > + one = ctx->i32_1; > + } else { > + type = ctx->i64; > + zero = ctx->i64_0; > + one = ctx->i64_1; > + } > > - cmp = LLVMBuildICmp(ctx->builder, LLVMIntSGT, src0, ctx->i32_0, ""); > - val = LLVMBuildSelect(ctx->builder, cmp, ctx->i32_1, src0, ""); > - cmp = LLVMBuildICmp(ctx->builder, LLVMIntSGE, val, ctx->i32_0, ""); > - val = LLVMBuildSelect(ctx->builder, cmp, val, LLVMConstInt(ctx->i32, > -1, true), ""); > + cmp = LLVMBuildICmp(ctx->builder, LLVMIntSGT, src0, zero, ""); > + val = LLVMBuildSelect(ctx->builder, cmp, one, src0, ""); > + cmp = LLVMBuildICmp(ctx->builder, LLVMIntSGE, val, zero, ""); > + val = LLVMBuildSelect(ctx->builder, cmp, val, LLVMConstInt(type, -1, > true), ""); > return val; > } > > @@ -1813,7 +1824,7 @@ static void visit_alu(struct ac_nir_context *ctx, const > nir_alu_instr *instr) > result = emit_minmax_int(&ctx->ac, LLVMIntULT, src[0], > src[1]); > break; > case nir_op_isign: > - result = emit_isign(&ctx->ac, src[0]); > + result = emit_isign(&ctx->ac, src[0], > instr->dest.dest.ssa.bit_size); > break; > case nir_op_fsign: > src[0] = ac_to_float(&ctx->ac, src[0]); > -- > 2.14.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev