<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Dec 19, 2018 at 12:22 PM Eric Anholt <<a href="mailto:eric@anholt.net">eric@anholt.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Jonathan Marek <<a href="mailto:jonathan@marek.ca" target="_blank">jonathan@marek.ca</a>> writes:<br>
<br>
> Note: the backend must take care that uniform index is now a float<br>
<br>
This makes me think that lowering ints to float should be done near the<br>
end of the compile (followed by maybe an algebraic and a dce).  As is, I<br>
think nir_lower_io() is going to do bad things to dereferences of i/o<br>
arrays.<br>
<br>
That said, it looks like this will be fixing way more than it regresses,<br>
so I would go along with it.<br></blockquote><div><br></div><div>I used to agree but I'm actually inclined to go the other way.  Because NIR is typeles, you have no idea in a lower pass whether a particular value is an int or a float.  In particular, you have no idea for immediates.  Of course, doing it this early would mean that we'd need a version of nir_lower_io that produces floats but that doesn't seem entirely unreasonable. <br></div></div></div>