<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Oct 17, 2017 at 2:03 PM, Matt Turner <span dir="ltr"><<a href="mailto:mattst88@gmail.com" target="_blank">mattst88@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 10/12, Jason Ekstrand wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
They return a boolean so this is the right type.  Unfortunately,<br>
get_nir_dest has the annoying behavior of giving us a float type by<br>
default.  This is mostly to work around the fact that gen7 has 64-bit<br>
float but no Q types.<br>
</blockquote>
<br></span>
I'd really like to see a clearer explanation about what this fixes.<br>
Something like<br>
<br>
"These intrinsics will be used to implement X, Y, Z from $extension,<br>
which support additional types (including 64-bit types). For 64-bit<br>
types get_nir_dest() returns ..., so we need to force the type to D<br>
since it always returns a bool."<br>
</blockquote></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">That's not quite accurate.  How about this:</div><div class="gmail_extra"><br></div><div class="gmail_extra">The any/all intrinsics return a boolean value so D or UD is the correct type.  Unfortunately, get_nir_dest has the annoying behavior of returnning a float type by default.  This causes format conversion which gives us -1.0f or 0.0f in the register.  If the consumer of the result does an integer comparison to zero, it will give you the right boolean value but if we do something more clever based on the 0/~0 assumption for booleans, this will give the wrong value.<br></div></div>