Mesa (master): nv50/ir: Extend ImmediateValue::applyLog2 to 64-bit integers

Karol Herbst karolherbst at kemper.freedesktop.org
Tue May 29 11:38:05 UTC 2018


Module: Mesa
Branch: master
Commit: f0e80e123c343f0c1e1163c72ead0d05ec117b0f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f0e80e123c343f0c1e1163c72ead0d05ec117b0f

Author: Pierre Moreau <pierre.morrow at free.fr>
Date:   Sat May  6 17:55:43 2017 +0200

nv50/ir: Extend ImmediateValue::applyLog2 to 64-bit integers

Signed-off-by: Karol Herbst <kherbst at redhat.com>
Reviewed-by: Karol Herbst <kherbst at redhat.com>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/gallium/drivers/nouveau/codegen/nv50_ir.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp
index c987da9908..49425b98b9 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp
@@ -423,7 +423,10 @@ ImmediateValue::isNegative() const
 bool
 ImmediateValue::isPow2() const
 {
-   return util_is_power_of_two_or_zero(reg.data.u32);
+   if (reg.type == TYPE_U64 || reg.type == TYPE_S64)
+      return util_is_power_of_two_or_zero64(reg.data.u64);
+   else
+      return util_is_power_of_two_or_zero(reg.data.u32);
 }
 
 void
@@ -440,6 +443,12 @@ ImmediateValue::applyLog2()
    case TYPE_U32:
       reg.data.u32 = util_logbase2(reg.data.u32);
       break;
+   case TYPE_S64:
+      assert(!this->isNegative());
+      // fall through
+   case TYPE_U64:
+      reg.data.u64 = util_logbase2_64(reg.data.u64);
+      break;
    case TYPE_F32:
       reg.data.f32 = log2f(reg.data.f32);
       break;




More information about the mesa-commit mailing list