From: Julian Seward Date: Tue, 19 Jul 2011 15:48:29 +0000 (+0000) Subject: Make VMOV.F32 load the correct value into the destination register. X-Git-Tag: svn/VALGRIND_3_7_0^2~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbec665723b9278fffc762c66aedc6f57fb9bc75;p=thirdparty%2Fvalgrind.git Make VMOV.F32 load the correct value into the destination register. Bug 277780. (Mans Rullgard, mans@mansr.com) git-svn-id: svn://svn.valgrind.org/vex/trunk@2178 --- diff --git a/VEX/priv/guest_arm_toIR.c b/VEX/priv/guest_arm_toIR.c index 9402cb88e7..9e609629b9 100644 --- a/VEX/priv/guest_arm_toIR.c +++ b/VEX/priv/guest_arm_toIR.c @@ -7694,7 +7694,7 @@ Bool dis_neon_data_1reg_and_imm ( UInt theInstr, IRTemp condT ) break; case 15: imm = (imm_raw & 0x80) << 5; - imm |= ~((imm_raw & 0x40) << 5); + imm |= ((~imm_raw & 0x40) << 5); for(i = 1; i <= 4; i++) imm |= (imm_raw & 0x40) << i; imm |= (imm_raw & 0x7f); diff --git a/VEX/priv/host_arm_defs.c b/VEX/priv/host_arm_defs.c index fb8df5c38c..4230f8801a 100644 --- a/VEX/priv/host_arm_defs.c +++ b/VEX/priv/host_arm_defs.c @@ -588,7 +588,7 @@ ULong ARMNImm_to_Imm64 ( ARMNImm* imm ) { return x; case 10: x |= (x & 0x80) << 5; - x |= ~(x & 0x40) << 5; + x |= (~x & 0x40) << 5; x &= 0x187F; /* 0001 1000 0111 1111 */ x |= (x & 0x40) << 4; x |= (x & 0x40) << 3;