Handle a reg-reg encoding of MOVAPS. Fixes #289584.
(Alexander Potapenko, glider@google.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2475 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/guest_amd64_toIR.c b/priv/guest_amd64_toIR.c
index 3d02754..fcda1e2 100644
--- a/priv/guest_amd64_toIR.c
+++ b/priv/guest_amd64_toIR.c
@@ -11596,6 +11596,11 @@
modrm = getUChar(delta);
if (epartIsReg(modrm)) {
/* fall through; awaiting test case */
+ putXMMReg( eregOfRexRM(pfx,modrm),
+ getXMMReg( gregOfRexRM(pfx,modrm) ));
+ DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
+ nameXMMReg(eregOfRexRM(pfx,modrm)));
+ delta += 1;
} else {
addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
gen_SEGV_if_not_16_aligned( addr );
@@ -11603,8 +11608,8 @@
DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
dis_buf );
delta += alen;
- goto decode_success;
}
+ goto decode_success;
}
/* 66 0F 29 = MOVAPD -- move from G (xmm) to E (mem or xmm). */
if (have66noF2noF3(pfx)