From: Florian Krohm Date: Sat, 2 Aug 2025 13:22:50 +0000 (+0000) Subject: ARM64 specific changes for BZ 507033 X-Git-Tag: VALGRIND_3_26_0~249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75501e34e32124ba8916d84ce9317a29e7266000;p=thirdparty%2Fvalgrind.git ARM64 specific changes for BZ 507033 Replace the deprecated Iop_Clz64 with Iop_ClzNat64 which have the same semantics for non-zero inputs. Part of fixing https://bugs.kde.org/show_bug.cgi?id=507033 --- diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index e6b92c7a0..f5b445489 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -3504,12 +3504,12 @@ Bool dis_ARM64_data_processing_register(/*MB_OUT*/DisResult* dres, if (is64) { assign(dst, IRExpr_ITE(binop(Iop_CmpEQ64, mkexpr(srcZ), mkU64(0)), mkU64(isCLS ? 63 : 64), - unop(Iop_Clz64, mkexpr(srcZ)))); + unop(Iop_ClzNat64, mkexpr(srcZ)))); putIReg64orZR(dd, mkexpr(dst)); } else { assign(dst, IRExpr_ITE(binop(Iop_CmpEQ64, mkexpr(srcZ), mkU64(0)), mkU64(isCLS ? 31 : 32), - unop(Iop_Clz64, mkexpr(srcZ)))); + unop(Iop_ClzNat64, mkexpr(srcZ)))); putIReg32orZR(dd, unop(Iop_64to32, mkexpr(dst))); } DIP("cl%c %s, %s\n", isCLS ? 's' : 'z', diff --git a/VEX/priv/host_arm64_isel.c b/VEX/priv/host_arm64_isel.c index 34c526559..190d8c8f1 100644 --- a/VEX/priv/host_arm64_isel.c +++ b/VEX/priv/host_arm64_isel.c @@ -2048,7 +2048,7 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e ) addInstr(env, ARM64Instr_Unary(dst, src, ARM64un_NOT)); return dst; } - case Iop_Clz64: { + case Iop_ClzNat64: { HReg dst = newVRegI(env); HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); addInstr(env, ARM64Instr_Unary(dst, src, ARM64un_CLZ));