From f0e80e123c343f0c1e1163c72ead0d05ec117b0f Mon Sep 17 00:00:00 2001 From: Pierre Moreau Date: Sat, 6 May 2017 17:55:43 +0200 Subject: [PATCH] nv50/ir: Extend ImmediateValue::applyLog2 to 64-bit integers Signed-off-by: Karol Herbst Reviewed-by: Karol Herbst Reviewed-by: Ilia Mirkin --- 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 c987da99085..49425b98b91 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; -- 2.30.2