|
From: <sv...@va...> - 2005-04-07 17:31:35
|
Author: sewardj
Date: 2005-04-07 18:31:27 +0100 (Thu, 07 Apr 2005)
New Revision: 1130
Modified:
trunk/priv/guest-x86/toIR.c
Log:
Complete implementation of pslldq/psrldq. Also some whitespace changes.
Modified: trunk/priv/guest-x86/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-x86/toIR.c 2005-04-07 02:03:52 UTC (rev 1129)
+++ trunk/priv/guest-x86/toIR.c 2005-04-07 17:31:27 UTC (rev 1130)
@@ -1656,7 +1656,7 @@
return disAMode_copy2tmp(
handleSegOverride(sorb, mkU32(d)));
}
-
+ /*NOTREACHED*/
vassert(0);
}
=20
@@ -1697,6 +1697,7 @@
getIReg(4,index_r), mkU8(scale))),
mkU32(d))));
}
+ /*NOTREACHED*/
vassert(0);
}
=20
@@ -1737,6 +1738,7 @@
getIReg(4,index_r), mkU8(scale))),
mkU32(d))));
}
+ /*NOTREACHED*/
vassert(0);
}
=20
@@ -2657,7 +2659,8 @@
case 7: /* BTC */
assign( t2m, binop(Iop_Xor32, mkU32(mask), mkexpr(t2)) );
break;
- default:=20
+ default:=20
+ /*NOTREACHED*/ /*the previous switch guards this*/
vassert(0);
}
=20
@@ -5300,6 +5303,7 @@
)
);
} else {
+ /*NOTREACHED*/
vassert(0);
}
=20
@@ -5345,17 +5349,18 @@
}
=20
if (shl || shr) {
- assign( e1, amt >=3D size=20
- ? mkU64(0)
- : binop(op, mkexpr(e0), mkU8(amt))
- );
+ assign( e1, amt >=3D size=20
+ ? mkU64(0)
+ : binop(op, mkexpr(e0), mkU8(amt))
+ );
} else=20
if (sar) {
- assign( e1, amt >=3D size=20
- ? binop(op, mkexpr(e0), mkU8(size-1))
- : binop(op, mkexpr(e0), mkU8(amt))
- );
+ assign( e1, amt >=3D size=20
+ ? binop(op, mkexpr(e0), mkU8(size-1))
+ : binop(op, mkexpr(e0), mkU8(amt))
+ );
} else {
+ /*NOTREACHED*/
vassert(0);
}
=20
@@ -6896,6 +6901,7 @@
)
);
} else {
+ /*NOTREACHED*/
vassert(0);
}
=20
@@ -6939,17 +6945,18 @@
}
=20
if (shl || shr) {
- assign( e1, amt >=3D size=20
- ? mkV128(0x0000)
- : binop(op, mkexpr(e0), mkU8(amt))
- );
+ assign( e1, amt >=3D size=20
+ ? mkV128(0x0000)
+ : binop(op, mkexpr(e0), mkU8(amt))
+ );
} else=20
if (sar) {
- assign( e1, amt >=3D size=20
- ? binop(op, mkexpr(e0), mkU8(size-1))
- : binop(op, mkexpr(e0), mkU8(amt))
- );
+ assign( e1, amt >=3D size=20
+ ? binop(op, mkexpr(e0), mkU8(size-1))
+ : binop(op, mkexpr(e0), mkU8(amt))
+ );
} else {
+ /*NOTREACHED*/
vassert(0);
}
=20
@@ -7905,7 +7912,7 @@
case 1: assign(t5, mkexpr(t1)); break;
case 2: assign(t5, mkexpr(t2)); break;
case 3: assign(t5, mkexpr(t3)); break;
- default: vassert(0);
+ default: vassert(0); /*NOTREACHED*/
}
putIReg(4, gregOfRM(modrm), unop(Iop_16Uto32, mkexpr(t5)));
DIP("pextrw $%d,%s,%s\n",
@@ -7956,7 +7963,7 @@
case 1: assign(t6, mk64from16s(t3,t2,t4,t0)); break;
case 2: assign(t6, mk64from16s(t3,t4,t1,t0)); break;
case 3: assign(t6, mk64from16s(t4,t2,t1,t0)); break;
- default: vassert(0);
+ default: vassert(0); /*NOTREACHED*/
}
putMMXReg(gregOfRM(modrm), mkexpr(t6));
goto decode_success;
@@ -8052,7 +8059,7 @@
case 1: hintstr =3D "t0"; break;
case 2: hintstr =3D "t1"; break;
case 3: hintstr =3D "t2"; break;
- default: vassert(0);
+ default: vassert(0); /*NOTREACHED*/
}
=20
DIP("prefetch%s %s\n", hintstr, dis_buf);
@@ -9647,7 +9654,7 @@
case 5: assign(t4, unop(Iop_32HIto16, mkexpr(t2))); break;
case 6: assign(t4, unop(Iop_32to16, mkexpr(t3))); break;
case 7: assign(t4, unop(Iop_32HIto16, mkexpr(t3))); break;
- default: vassert(0);
+ default: vassert(0); /*NOTREACHED*/
}
putIReg(4, gregOfRM(modrm), unop(Iop_16Uto32, mkexpr(t4)));
DIP("pextrw $%d,%s,%s\n",
@@ -9999,7 +10006,6 @@
lo64r =3D newTemp(Ity_I64);
=20
if (imm >=3D 16) {
- vassert(0); /* awaiting test case */
putXMMReg(reg, mkV128(0x0000));
goto decode_success;
}
@@ -10008,13 +10014,17 @@
assign( hi64, unop(Iop_V128HIto64, mkexpr(sV)) );
assign( lo64, unop(Iop_V128to64, mkexpr(sV)) );
=20
+ if (imm =3D=3D 0) {
+ assign( lo64r, mkexpr(lo64) );
+ assign( hi64r, mkexpr(hi64) );
+ }
+ else
if (imm =3D=3D 8) {
assign( lo64r, mkU64(0) );
assign( hi64r, mkexpr(lo64) );
}
else
if (imm > 8) {
- vassert(0); /* awaiting test case */
assign( lo64r, mkU64(0) );
assign( hi64r, binop( Iop_Shl64,=20
mkexpr(lo64),
@@ -10126,7 +10136,6 @@
lo64r =3D newTemp(Ity_I64);
=20
if (imm >=3D 16) {
- vassert(0); /* awaiting test case */
putXMMReg(reg, mkV128(0x0000));
goto decode_success;
}
@@ -10135,13 +10144,17 @@
assign( hi64, unop(Iop_V128HIto64, mkexpr(sV)) );
assign( lo64, unop(Iop_V128to64, mkexpr(sV)) );
=20
+ if (imm =3D=3D 0) {
+ assign( lo64r, mkexpr(lo64) );
+ assign( hi64r, mkexpr(hi64) );
+ }
+ else
if (imm =3D=3D 8) {
assign( hi64r, mkU64(0) );
assign( lo64r, mkexpr(hi64) );
}
else=20
if (imm > 8) {
- vassert(0); /* awaiting test case */
assign( hi64r, mkU64(0) );
assign( lo64r, binop( Iop_Shr64,=20
mkexpr(hi64),
|