From: Julian Seward Date: Tue, 8 Apr 2014 15:24:15 +0000 (+0000) Subject: Handle Iop_Max32U, so as to make origin tracking in Memcheck work. X-Git-Tag: svn/VALGRIND_3_10_1^2~122 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecc55ae7365da224dbf533fd210e237ab1c468b3;p=thirdparty%2Fvalgrind.git Handle Iop_Max32U, so as to make origin tracking in Memcheck work. git-svn-id: svn://svn.valgrind.org/vex/trunk@2848 --- 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);