[Mesa-stable] [PATCH 3/3] st/glsl_to_tgsi: the second destination doesn't support relative addressing

Marek Olšák maraeo at gmail.com
Tue Oct 10 18:18:27 UTC 2017


For the series:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Oct 10, 2017 at 2:11 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> It's not used -- DFRACEXP gets array indexes of its exponent out-parameter
> lowered earlier -- and it wouldn't have worked correctly anyway when both
> dst and dst1 use relative addressing.
> ---
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 235690510b9..394d39ade63 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -382,42 +382,39 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
>     int num_reladdr = 0, i, j;
>     bool dst_is_64bit[2];
>
>     op = get_opcode(op, dst, src0, src1);
>
>     /* If we have to do relative addressing, we want to load the ARL
>      * reg directly for one of the regs, and preload the other reladdr
>      * sources into temps.
>      */
>     num_reladdr += dst.reladdr != NULL || dst.reladdr2;
> -   num_reladdr += dst1.reladdr != NULL || dst1.reladdr2;
> +   assert(!dst1.reladdr); /* should be lowered in earlier passes */
>     num_reladdr += src0.reladdr != NULL || src0.reladdr2 != NULL;
>     num_reladdr += src1.reladdr != NULL || src1.reladdr2 != NULL;
>     num_reladdr += src2.reladdr != NULL || src2.reladdr2 != NULL;
>     num_reladdr += src3.reladdr != NULL || src3.reladdr2 != NULL;
>
>     reladdr_to_temp(ir, &src3, &num_reladdr);
>     reladdr_to_temp(ir, &src2, &num_reladdr);
>     reladdr_to_temp(ir, &src1, &num_reladdr);
>     reladdr_to_temp(ir, &src0, &num_reladdr);
>
>     if (dst.reladdr || dst.reladdr2) {
>        if (dst.reladdr)
>           emit_arl(ir, address_reg, *dst.reladdr);
>        if (dst.reladdr2)
>           emit_arl(ir, address_reg2, *dst.reladdr2);
>        num_reladdr--;
>     }
> -   if (dst1.reladdr) {
> -      emit_arl(ir, address_reg, *dst1.reladdr);
> -      num_reladdr--;
> -   }
> +
>     assert(num_reladdr == 0);
>
>     /* inst->op has only 8 bits. */
>     STATIC_ASSERT(TGSI_OPCODE_LAST <= 255);
>
>     inst->op = op;
>     inst->precise = this->precise;
>     inst->info = tgsi_get_opcode_info(op);
>     inst->dst[0] = dst;
>     inst->dst[1] = dst1;
> --
> 2.11.0
>
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-stable


More information about the mesa-stable mailing list