[Mesa-dev] [PATCH] nvir/nvc0: fix legalizing of ld unlock c0[0x10000]

Ilia Mirkin imirkin at alum.mit.edu
Tue Feb 20 15:02:05 UTC 2018


It's actually not ld unlock -- it's just displayed that way because
our subop printing isn't very sophisticated. It's LDC.IS.

Anyways, this is improving the situation, so

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

However that code is still wrong in the presence of potentially
negative offsets. I need to look at the instruction encodings with
some care. I'm sure that this happens ... ~never.

On Tue, Feb 20, 2018 at 5:53 AM, Karol Herbst <kherbst at redhat.com> wrote:
> We have to increase the file index also for 0x10000 not just for values
> greater than 0x10000.
>
> Fixes: 37b67db6ae34fb6586d640a7a1b6232f091dd812
> Signed-off-by: Karol Herbst <kherbst at redhat.com>
> ---
>  src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
> index 5e9ffc0d46..29f674b451 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
> @@ -745,7 +745,7 @@ NVC0LegalizePostRA::visit(BasicBlock *bb)
>        } else
>        if (i->op == OP_LOAD && i->subOp == NV50_IR_SUBOP_LDC_IS) {
>           int offset = i->src(0).get()->reg.data.offset;
> -         if (abs(offset) > 0x10000)
> +         if (abs(offset) >= 0x10000)
>              i->src(0).get()->reg.fileIndex += offset >> 16;
>           i->src(0).get()->reg.data.offset = (int)(short)offset;
>        } else {
> --
> 2.14.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list