|
From: <sv...@va...> - 2012-06-18 22:09:44
|
sewardj 2012-06-18 23:09:33 +0100 (Mon, 18 Jun 2012)
New Revision: 2389
Log:
Remove incorrect masking of the imm8 in VSHUFPD.
Modified files:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c (+4 -4)
===================================================================
--- trunk/priv/guest_amd64_toIR.c 2012-06-18 16:01:30 +01:00 (rev 2388)
+++ trunk/priv/guest_amd64_toIR.c 2012-06-18 23:09:33 +01:00 (rev 2389)
@@ -22029,14 +22029,14 @@
if (epartIsReg(modrm)) {
UInt rE = eregOfRexRM(pfx,modrm);
assign( eV, getXMMReg(rE) );
- imm8 = (Int)getUChar(delta+1) & 7;
+ imm8 = (Int)getUChar(delta+1);
delta += 1+1;
DIP("vshufpd $%d,%s,%s,%s\n",
imm8, nameXMMReg(rE), nameXMMReg(rV), nameXMMReg(rG));
} else {
addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
- imm8 = (Int)getUChar(delta+alen) & 7;
+ imm8 = (Int)getUChar(delta+alen);
delta += 1+alen;
DIP("vshufpd $%d,%s,%s,%s\n",
imm8, dis_buf, nameXMMReg(rV), nameXMMReg(rG));
@@ -22059,14 +22059,14 @@
if (epartIsReg(modrm)) {
UInt rE = eregOfRexRM(pfx,modrm);
assign( eV, getYMMReg(rE) );
- imm8 = (Int)getUChar(delta+1) & 7;
+ imm8 = (Int)getUChar(delta+1);
delta += 1+1;
DIP("vshufpd $%d,%s,%s,%s\n",
imm8, nameYMMReg(rE), nameYMMReg(rV), nameYMMReg(rG));
} else {
addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
assign( eV, loadLE(Ity_V256, mkexpr(addr)) );
- imm8 = (Int)getUChar(delta+alen) & 7;
+ imm8 = (Int)getUChar(delta+alen);
delta += 1+alen;
DIP("vshufpd $%d,%s,%s,%s\n",
imm8, dis_buf, nameYMMReg(rV), nameYMMReg(rG));
|