From: Pierre Moreau Date: Sat, 6 May 2017 15:55:43 +0000 (+0200) Subject: nv50/ir: Extend ImmediateValue::applyLog2 to 64-bit integers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f0e80e123c343f0c1e1163c72ead0d05ec117b0f;p=mesa.git nv50/ir: Extend ImmediateValue::applyLog2 to 64-bit integers Signed-off-by: Karol Herbst Reviewed-by: Karol Herbst Reviewed-by: Ilia Mirkin --- 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;