[Mesa-dev] [PATCH 17/59] i965: fix is_zero(), is_one() and is_negative_one() for doubles

Samuel Iglesias Gonsálvez siglesias at igalia.com
Fri Apr 29 11:29:14 UTC 2016


From: Connor Abbott <connor.w.abbott at intel.com>

---
 src/mesa/drivers/dri/i965/brw_shader.cpp | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
index e5c43d2..d40937b 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.cpp
+++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
@@ -664,7 +664,17 @@ backend_reg::is_zero() const
    if (file != IMM)
       return false;
 
-   return d == 0;
+   switch (type) {
+   case BRW_REGISTER_TYPE_F:
+      return f == 0;
+   case BRW_REGISTER_TYPE_DF:
+      return df == 0;
+   case BRW_REGISTER_TYPE_D:
+   case BRW_REGISTER_TYPE_UD:
+      return d == 0;
+   default:
+      return false;
+   }
 }
 
 bool
@@ -673,9 +683,17 @@ backend_reg::is_one() const
    if (file != IMM)
       return false;
 
-   return type == BRW_REGISTER_TYPE_F
-          ? f == 1.0
-          : d == 1;
+   switch (type) {
+   case BRW_REGISTER_TYPE_F:
+      return f == 1.0f;
+   case BRW_REGISTER_TYPE_DF:
+      return df == 1.0;
+   case BRW_REGISTER_TYPE_D:
+   case BRW_REGISTER_TYPE_UD:
+      return d == 1;
+   default:
+      return false;
+   }
 }
 
 bool
@@ -687,6 +705,8 @@ backend_reg::is_negative_one() const
    switch (type) {
    case BRW_REGISTER_TYPE_F:
       return f == -1.0;
+   case BRW_REGISTER_TYPE_DF:
+      return df == -1.0;
    case BRW_REGISTER_TYPE_D:
       return d == -1;
    default:
-- 
2.5.0



More information about the mesa-dev mailing list