From 9aa89b36fc413c34a14dfdb47fe7792d43cce7cf Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 9 Oct 2020 08:43:46 +0200 Subject: [PATCH] ac/nir: handle non-const offset with txf/txf_ms It might be a vec2. If it's a constant, LLVM will fold it. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/llvm/ac_nir_to_llvm.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 646b7528cfd..ed26f2771ac 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -4271,10 +4271,8 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr) int num_offsets = instr->src[offset_src].src.ssa->num_components; num_offsets = MIN2(num_offsets, instr->coord_components); for (unsigned i = 0; i < num_offsets; ++i) { - args.coords[i] = LLVMBuildAdd( - ctx->ac.builder, args.coords[i], - LLVMConstInt(ctx->ac.i32, nir_src_comp_as_uint(instr->src[offset_src].src, i), false), - ""); + LLVMValueRef off = ac_llvm_extract_elem(&ctx->ac, args.offset, i); + args.coords[i] = LLVMBuildAdd(ctx->ac.builder, args.coords[i], off, ""); } args.offset = NULL; }