|
From: <sv...@va...> - 2016-10-19 16:01:08
|
Author: sewardj
Date: Wed Oct 19 17:01:01 2016
New Revision: 3275
Log:
CVTPI2PS: Only switch to MMX mode if the source is a MMX register.
(for both x86 and amd64 front ends)
Fixes #357059.
Modified:
trunk/priv/guest_amd64_toIR.c
trunk/priv/guest_x86_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Wed Oct 19 17:01:01 2016
@@ -12848,8 +12848,10 @@
IRTemp rmode = newTemp(Ity_I32);
modrm = getUChar(delta);
- do_MMX_preamble();
if (epartIsReg(modrm)) {
+ /* Only switch to MMX mode if the source is a MMX register.
+ See comments on CVTPI2PD for details. Fixes #357059. */
+ do_MMX_preamble();
assign( arg64, getMMXReg(eregLO3ofRM(modrm)) );
delta += 1;
DIP("cvtpi2ps %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
Modified: trunk/priv/guest_x86_toIR.c
==============================================================================
--- trunk/priv/guest_x86_toIR.c (original)
+++ trunk/priv/guest_x86_toIR.c Wed Oct 19 17:01:01 2016
@@ -8565,8 +8565,10 @@
vassert(sz == 4);
modrm = getIByte(delta+2);
- do_MMX_preamble();
if (epartIsReg(modrm)) {
+ /* Only switch to MMX mode if the source is a MMX register.
+ See comments on CVTPI2PD for details. Fixes #357059. */
+ do_MMX_preamble();
assign( arg64, getMMXReg(eregOfRM(modrm)) );
delta += 2+1;
DIP("cvtpi2ps %s,%s\n", nameMMXReg(eregOfRM(modrm)),
|