From: Julian Seward Date: Mon, 17 Nov 2014 14:16:56 +0000 (+0000) Subject: Fix stupid bug introduced in r2993, which causes many simple scalar X-Git-Tag: svn/VALGRIND_3_11_0^2~157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a80db18ac0d8c24a45e2e23e064d2b458e9a424;p=thirdparty%2Fvalgrind.git Fix stupid bug introduced in r2993, which causes many simple scalar floating point instructions to ignore their operands and return zero. Sigh. git-svn-id: svn://svn.valgrind.org/vex/trunk@2994 --- diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index 9d0732809b..f46fd5d823 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -12171,9 +12171,11 @@ Bool dis_AdvSIMD_fp_data_proc_2_source(/*MB_OUT*/DisResult* dres, UInt insn) } if (opcode <= BITS4(0,0,1,1)) { // This is really not good code. TODO: avoid width-changing + IRTemp res = newTemp(ity); + assign(res, triop(iop, mkexpr(mk_get_IR_rounding_mode()), + getQRegLO(nn, ity), getQRegLO(mm, ity))); putQReg128(dd, mkV128(0)); - putQRegLO(dd, triop(iop, mkexpr(mk_get_IR_rounding_mode()), - getQRegLO(nn, ity), getQRegLO(mm, ity))); + putQRegLO(dd, mkexpr(res)); } else { putQReg128(dd, unop(mkVecZEROHIxxOFV128(ty+2), binop(iop, getQReg128(nn), getQReg128(mm))));