|
From: <sv...@va...> - 2014-11-17 14:17:04
|
Author: sewardj
Date: Mon Nov 17 14:16:56 2014
New Revision: 2994
Log:
Fix stupid bug introduced in r2993, which causes many simple scalar
floating point instructions to ignore their operands and return zero. Sigh.
Modified:
trunk/priv/guest_arm64_toIR.c
Modified: trunk/priv/guest_arm64_toIR.c
==============================================================================
--- trunk/priv/guest_arm64_toIR.c (original)
+++ trunk/priv/guest_arm64_toIR.c Mon Nov 17 14:16:56 2014
@@ -12171,9 +12171,11 @@
}
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))));
|