|
From: <sv...@va...> - 2014-03-03 08:42:35
|
Author: sewardj
Date: Mon Mar 3 08:42:16 2014
New Revision: 2831
Log:
Fix error in 64-bit and smaller load versions of
LDR/STR (immediate, SIMD&FP, unsigned offset)
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 Mar 3 08:42:16 2014
@@ -3276,7 +3276,6 @@
getIReg64orZR(rT2));
} else {
vassert(bL == 0 && bX == 0);
- vassert(0); //ATC
// 32 bit store
storeLE(binop(Iop_Add64,mkexpr(tTA),mkU64(0)),
getIReg32orZR(rT1));
@@ -3685,8 +3684,14 @@
}
if (isLD) {
+ if (szB < 16) {
+ putQReg128(tt1, mkV128(0x0000));
+ }
putQRegLO(tt1,
loadLE(ty, binop(Iop_Add64, mkexpr(tTA), mkU64(0))));
+ if (szB < 16) {
+ putQReg128(tt2, mkV128(0x0000));
+ }
putQRegLO(tt2,
loadLE(ty, binop(Iop_Add64, mkexpr(tTA), mkU64(szB))));
} else {
|