<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Mon, Oct 22, 2018 at 6:28 PM Ian Romanick <<a href="mailto:idr@freedesktop.org">idr@freedesktop.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 10/20/2018 11:01 AM, Jason Ekstrand wrote:<br>
> Previously, we would fail if a variable had an assigned but unknown bit<br>
> size X and we tried to assign it an actual bit size.  However, this is<br>
> ok because, at the time we do the search, the variable does have an<br>
> actual bit size and it will match X because of the NIR rules.<br>
> ---<br>
>  src/compiler/nir/nir_algebraic.py | 8 ++++++--<br>
>  1 file changed, 6 insertions(+), 2 deletions(-)<br>
> <br>
> diff --git a/src/compiler/nir/nir_algebraic.py b/src/compiler/nir/nir_algebraic.py<br>
> index 34ea2ba9e68..bcefa3372b3 100644<br>
> --- a/src/compiler/nir/nir_algebraic.py<br>
> +++ b/src/compiler/nir/nir_algebraic.py<br>
> @@ -352,8 +352,12 @@ class BitSizeValidator(object):<br>
>        if var_class == 0:<br>
>           self._var_classes[var.index] = bit_class<br>
>        else:<br>
> -         canon_class = self._class_relation.get_canonical(var_class)<br>
> -         assert canon_class < 0 or canon_class == bit_class<br>
> +         canon_bit_class = self._class_relation.get_canonical(var_class)<br>
> +         canon_var_class = self._class_relation.get_canonical(bit_class)<br>
<br>
Are the _bit_ and _var_ names transposed in the left-hand side, or am I<br>
not understanding something?  Or both? :)<br></blockquote><div><br></div><div>Uh.... Oops... Fortunately, it doesn't matter since it's just used in this check.  I pushed this today with Samuel's review.  I'll send out a fixup patch.</div><div><br></div><div>--Jason<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> +         assert canon_var_class < 0 or canon_bit_class < 0 or \<br>
> +                canon_var_class == canon_bit_class, \<br>
> +                'Variable {0} cannot be both {1}-bit and {2}-bit' \<br>
> +                .format(str(var), bit_class, var_class)<br>
>           var_class = self._class_relation.add_equiv(var_class, bit_class)<br>
>           self._var_classes[var.index] = var_class<br>
>  <br>
> <br>
<br>
</blockquote></div></div>