From ecc55ae7365da224dbf533fd210e237ab1c468b3 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Tue, 8 Apr 2014 15:24:15 +0000 Subject: [PATCH] Handle Iop_Max32U, so as to make origin tracking in Memcheck work. git-svn-id: svn://svn.valgrind.org/vex/trunk@2848 --- VEX/priv/host_arm64_isel.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/VEX/priv/host_arm64_isel.c b/VEX/priv/host_arm64_isel.c index 396f5b104b..adf117129b 100644 --- a/VEX/priv/host_arm64_isel.c +++ b/VEX/priv/host_arm64_isel.c @@ -1760,16 +1760,14 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e ) /* Handle misc other ops. */ -//ZZ if (e->Iex.Binop.op == Iop_Max32U) { -//ZZ HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1); -//ZZ HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2); -//ZZ HReg dst = newVRegI(env); -//ZZ addInstr(env, ARMInstr_CmpOrTst(True/*isCmp*/, argL, -//ZZ ARMRI84_R(argR))); -//ZZ addInstr(env, mk_iMOVds_RR(dst, argL)); -//ZZ addInstr(env, ARMInstr_CMov(ARMcc_LO, dst, ARMRI84_R(argR))); -//ZZ return dst; -//ZZ } + if (e->Iex.Binop.op == Iop_Max32U) { + HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2); + HReg dst = newVRegI(env); + addInstr(env, ARM64Instr_Cmp(argL, ARM64RIA_R(argR), False/*!is64*/)); + addInstr(env, ARM64Instr_CSel(dst, argL, argR, ARM64cc_CS)); + return dst; + } if (e->Iex.Binop.op == Iop_32HLto64) { HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1); -- 2.47.2