<div dir="ltr">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jan 15, 2019 at 7:55 AM Iago Toral Quiroga <<a href="mailto:itoral@igalia.com">itoral@igalia.com</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">There are no 8-bit immediates, so assert in that case.<br>
16-bit immediates are replicated in each word of a 32-bit immediate, so<br>
we only need to check the lower 16-bits.<br>
<br>
v2:<br>
 - Fix is_zero with half-float to consider -0 as well (Jason).<br>
 - Fix is_negative_one for word type.<br>
---<br>
 src/intel/compiler/brw_shader.cpp | 26 ++++++++++++++++++++++++++<br>
 1 file changed, 26 insertions(+)<br>
<br>
diff --git a/src/intel/compiler/brw_shader.cpp b/src/intel/compiler/brw_shader.cpp<br>
index 97966c951a1..3c636c9d3a4 100644<br>
--- a/src/intel/compiler/brw_shader.cpp<br>
+++ b/src/intel/compiler/brw_shader.cpp<br>
@@ -704,11 +704,20 @@ backend_reg::is_zero() const<br>
    if (file != IMM)<br>
       return false;<br>
<br>
+   assert(type_sz(type) > 1);<br>
+<br>
    switch (type) {<br>
+   case BRW_REGISTER_TYPE_HF:<br>
+      assert((d & 0xffff) == ((d >> 16) & 0xffff));<br>
+      return (d & 0xffff) == 0 || (d & 0xffff) == 0x8000;<br>
    case BRW_REGISTER_TYPE_F:<br>
       return f == 0;<br>
    case BRW_REGISTER_TYPE_DF:<br>
       return df == 0;<br>
+   case BRW_REGISTER_TYPE_W:<br>
+   case BRW_REGISTER_TYPE_UW:<br>
+      assert((d & 0xffff) == ((d >> 16) & 0xffff));<br>
+      return (d & 0xffff) == 0;<br>
    case BRW_REGISTER_TYPE_D:<br>
    case BRW_REGISTER_TYPE_UD:<br>
       return d == 0;<br>
@@ -726,11 +735,20 @@ backend_reg::is_one() const<br>
    if (file != IMM)<br>
       return false;<br>
<br>
+   assert(type_sz(type) > 1);<br>
+<br>
    switch (type) {<br>
+   case BRW_REGISTER_TYPE_HF:<br>
+      assert((d & 0xffff) == ((d >> 16) & 0xffff));<br>
+      return (d & 0xffff) == 0x3c00;<br>
    case BRW_REGISTER_TYPE_F:<br>
       return f == 1.0f;<br>
    case BRW_REGISTER_TYPE_DF:<br>
       return df == 1.0;<br>
+   case BRW_REGISTER_TYPE_W:<br>
+   case BRW_REGISTER_TYPE_UW:<br>
+      assert((d & 0xffff) == ((d >> 16) & 0xffff));<br>
+      return (d & 0xffff) == 1;<br>
    case BRW_REGISTER_TYPE_D:<br>
    case BRW_REGISTER_TYPE_UD:<br>
       return d == 1;<br>
@@ -748,11 +766,19 @@ backend_reg::is_negative_one() const<br>
    if (file != IMM)<br>
       return false;<br>
<br>
+   assert(type_sz(type) > 1);<br>
+<br>
    switch (type) {<br>
+   case BRW_REGISTER_TYPE_HF:<br>
+      assert((d & 0xffff) == ((d >> 16) & 0xffff));<br>
+      return (d & 0xffff) == 0xbc00;<br>
    case BRW_REGISTER_TYPE_F:<br>
       return f == -1.0;<br>
    case BRW_REGISTER_TYPE_DF:<br>
       return df == -1.0;<br>
+   case BRW_REGISTER_TYPE_W:<br>
+      assert((d & 0xffff) == ((d >> 16) & 0xffff));<br>
+      return (d & 0xffff) == 0xffff;<br>
    case BRW_REGISTER_TYPE_D:<br>
       return d == -1;<br>
    case BRW_REGISTER_TYPE_Q:<br>
-- <br>
2.17.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>