[Mesa-dev] [PATCH] nv50/ir: copy over value's register id when resolving merge of a phi

Samuel Pitoiset samuel.pitoiset at gmail.com
Wed Oct 12 09:10:48 UTC 2016


Sounds reasonable.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

On 10/12/2016 02:51 AM, Ilia Mirkin wrote:
> The offset needs to be properly copied over to the phi value, otherwise
> it will get assigned to the base of the merge instead of the proper
> location.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: mesa-stable at lists.freedesktop.org
> ---
>  src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
> index 7e64f7c..d36c853 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
> @@ -1905,8 +1905,10 @@ GCRA::resolveSplitsAndMerges()
>           // their registers should be identical.
>           if (v->getInsn()->op == OP_PHI || v->getInsn()->op == OP_UNION) {
>              Instruction *phi = v->getInsn();
> -            for (int phis = 0; phi->srcExists(phis); ++phis)
> +            for (int phis = 0; phi->srcExists(phis); ++phis) {
>                 phi->getSrc(phis)->join = v;
> +               phi->getSrc(phis)->reg.data.id = v->reg.data.id;
> +            }
>           }
>           reg += v->reg.size;
>        }
>

-- 
-Samuel


More information about the mesa-dev mailing list