|
From: <sv...@va...> - 2005-05-11 23:16:48
|
Author: sewardj
Date: 2005-05-12 00:16:43 +0100 (Thu, 12 May 2005)
New Revision: 1191
Modified:
trunk/priv/guest-amd64/ghelpers.c
Log:
Add a couple more %rflag-helper specialisations.
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-11 23:16:13 UTC (rev 1190)
+++ trunk/priv/guest-amd64/ghelpers.c 2005-05-11 23:16:43 UTC (rev 1191)
@@ -875,24 +875,26 @@
cc_dep1 =3D args[2];
cc_dep2 =3D args[3];
=20
-//.. /*---------------- ADDL ----------------*/
-//..=20
-//.. if (isU32(cc_op, AMD64G_CC_OP_ADDL) && isU32(cond, X86CondZ))=
{
-//.. /* long add, then Z --> test (dst+src =3D=3D 0) */
-//.. return unop(Iop_1Uto32,
-//.. binop(Iop_CmpEQ32,=20
-//.. binop(Iop_Add32, cc_dep1, cc_dep2),
-//.. mkU32(0)));
-//.. }
+ /*---------------- ADDQ ----------------*/
=20
+ if (isU64(cc_op, AMD64G_CC_OP_ADDQ) && isU64(cond, AMD64CondZ)) {
+ /* long long add, then Z --> test (dst+src =3D=3D 0) */
+ return unop(Iop_1Uto64,
+ binop(Iop_CmpEQ64,=20
+ binop(Iop_Add64, cc_dep1, cc_dep2),
+ mkU64(0)));
+ }
+
/*---------------- SUBL ----------------*/
=20
-//.. if (isU32(cc_op, AMD64G_CC_OP_SUBL) && isU32(cond, X86CondZ))=
{
-//.. /* long sub/cmp, then Z --> test dst=3D=3Dsrc */
-//.. return unop(Iop_1Uto32,
-//.. binop(Iop_CmpEQ32, cc_dep1, cc_dep2));
-//.. }
-//..=20
+ if (isU64(cc_op, AMD64G_CC_OP_SUBL) && isU64(cond, AMD64CondZ)) {
+ /* long sub/cmp, then Z --> test dst=3D=3Dsrc */
+ return unop(Iop_1Uto64,
+ binop(Iop_CmpEQ32,=20
+ unop(Iop_64to32,cc_dep1),=20
+ unop(Iop_64to32,cc_dep2)));
+ }
+
//.. if (isU32(cc_op, AMD64G_CC_OP_SUBL) && isU32(cond, X86CondNZ)=
) {
//.. /* long sub/cmp, then NZ --> test dst!=3Dsrc */
//.. return unop(Iop_1Uto32,
|