|
From: <sv...@va...> - 2005-04-27 11:53:52
|
Author: sewardj
Date: 2005-04-27 12:53:23 +0100 (Wed, 27 Apr 2005)
New Revision: 1149
Modified:
trunk/priv/host-amd64/hdefs.c
Log:
Emit 'negq'.
Modified: trunk/priv/host-amd64/hdefs.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/host-amd64/hdefs.c 2005-04-27 11:52:40 UTC (rev 1148)
+++ trunk/priv/host-amd64/hdefs.c 2005-04-27 11:53:23 UTC (rev 1149)
@@ -145,6 +145,17 @@
=20
void getAllocableRegs_AMD64 ( Int* nregs, HReg** arr )
{
+#if 0
+ *nregs =3D 6;
+ *arr =3D LibVEX_Alloc(*nregs * sizeof(HReg));
+ (*arr)[ 0] =3D hregAMD64_RSI();
+ (*arr)[ 1] =3D hregAMD64_RDI();
+ (*arr)[ 2] =3D hregAMD64_RBX();
+
+ (*arr)[ 3] =3D hregAMD64_XMM7();
+ (*arr)[ 4] =3D hregAMD64_XMM8();
+ (*arr)[ 5] =3D hregAMD64_XMM9();
+#endif
#if 1
*nregs =3D 11;
*arr =3D LibVEX_Alloc(*nregs * sizeof(HReg));
@@ -160,7 +171,8 @@
(*arr)[ 8] =3D hregAMD64_XMM7();
(*arr)[ 9] =3D hregAMD64_XMM8();
(*arr)[10] =3D hregAMD64_XMM9();
-#else
+#endif
+#if 0
*nregs =3D 30;
*arr =3D LibVEX_Alloc(*nregs * sizeof(HReg));
(*arr)[ 0] =3D hregAMD64_RAX();
@@ -1033,7 +1045,7 @@
ppAMD64RM(i->Ain.Test64.dst);
return;
case Ain_Unary64:
- vex_printf("%sl ", showAMD64UnaryOp(i->Ain.Unary64.op));
+ vex_printf("%sq ", showAMD64UnaryOp(i->Ain.Unary64.op));
ppAMD64RM(i->Ain.Unary64.dst);
return;
case Ain_MulL:
@@ -2426,15 +2438,16 @@
goto bad;
}
}
-//.. if (i->Xin.Unary32.op =3D=3D Xun_NEG) {
-//.. *p++ =3D 0xF7;
-//.. if (i->Xin.Unary32.dst->tag =3D=3D Xrm_Reg) {
-//.. p =3D doAMode_R(p, fake(3), i->Xin.Unary32.dst->Xrm.Reg=
.reg);
-//.. goto done;
-//.. } else {
-//.. goto bad;
-//.. }
-//.. }
+ if (i->Ain.Unary64.op =3D=3D Aun_NEG) {
+ if (i->Ain.Unary64.dst->tag =3D=3D Arm_Reg) {
+ *p++ =3D rexAMode_R(fake(0), i->Ain.Unary64.dst->Arm.Reg.reg=
);
+ *p++ =3D 0xF7;
+ p =3D doAMode_R(p, fake(3), i->Ain.Unary64.dst->Arm.Reg.reg)=
;
+ goto done;
+ } else {
+ goto bad;
+ }
+ }
break;
=20
case Ain_MulL:
|