|
From: <sv...@va...> - 2005-05-05 21:48:01
|
Author: sewardj
Date: 2005-05-05 22:46:50 +0100 (Thu, 05 May 2005)
New Revision: 1164
Modified:
trunk/priv/guest-amd64/ghelpers.c
trunk/priv/guest-amd64/toIR.c
Log:
Fix up %rflags handling after 64-bit multiplies.
Modified: trunk/priv/guest-amd64/ghelpers.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-amd64/ghelpers.c 2005-05-05 21:34:02 UTC (rev 1163)
+++ trunk/priv/guest-amd64/ghelpers.c 2005-05-05 21:46:50 UTC (rev 1164)
@@ -92,7 +92,6 @@
*rLo =3D u * v;
}
=20
-#if 0 /* UNUSED */
static void mullU64 ( ULong u, ULong v, ULong* rHi, ULong* rLo )
{
ULong u0, v0, w0;
@@ -109,7 +108,6 @@
*rHi =3D u1 * v1 + w2 + (w1 >> 32);
*rLo =3D u * v;
}
-#endif /* UNUSED */
=20
=20
static const UChar parity_table[256] =3D {
@@ -644,6 +642,8 @@
case AMD64G_CC_OP_UMULL: ACTIONS_UMUL( 32, UInt, toUInt,
ULong, idULong );
=20
+ case AMD64G_CC_OP_UMULQ: ACTIONS_UMULQ;
+
case AMD64G_CC_OP_SMULB: ACTIONS_SMUL( 8, Char, toUChar,
Short, toUShort );
case AMD64G_CC_OP_SMULW: ACTIONS_SMUL( 16, Short, toUShort,=20
Modified: trunk/priv/guest-amd64/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-amd64/toIR.c 2005-05-05 21:34:02 UTC (rev 1163)
+++ trunk/priv/guest-amd64/toIR.c 2005-05-05 21:46:50 UTC (rev 1164)
@@ -3425,7 +3425,7 @@
IRTemp resHi =3D newTemp(Ity_I64);
IRTemp resLo =3D newTemp(Ity_I64);
IROp mulOp =3D syned ? Iop_MullS64 : Iop_MullU64;
- UInt tBaseOp =3D syned ? AMD64G_CC_OP_SMULQ : AMD64G_CC_OP_UM=
ULQ;
+ UInt tBaseOp =3D syned ? AMD64G_CC_OP_SMULB : AMD64G_CC_OP_UM=
ULB;
setFlags_MUL ( Ity_I64, t1, tmp, tBaseOp );
assign( res128, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
assign( resHi, unop(Iop_128HIto64,mkexpr(res128)));
|