|
From: <sv...@va...> - 2005-08-13 23:58:38
|
Author: sewardj
Date: 2005-08-14 00:58:34 +0100 (Sun, 14 Aug 2005)
New Revision: 1333
Log:
Handle Iop_Sar16, so that front end amd64 "cwtd" does not bomb.
Modified:
trunk/priv/host-amd64/isel.c
Modified: trunk/priv/host-amd64/isel.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/isel.c 2005-08-12 23:51:31 UTC (rev 1332)
+++ trunk/priv/host-amd64/isel.c 2005-08-13 23:58:34 UTC (rev 1333)
@@ -913,14 +913,14 @@
case Iop_Shr32:
addInstr(env, AMD64Instr_MovZLQ(dst,dst));
break;
-//.. case Iop_Sar8:
-//.. addInstr(env, X86Instr_Sh32(Xsh_SHL, 24, X86RM_Reg(d=
st)));
-//.. addInstr(env, X86Instr_Sh32(Xsh_SAR, 24, X86RM_Reg(d=
st)));
-//.. break;
-//.. case Iop_Sar16:
-//.. addInstr(env, X86Instr_Sh32(Xsh_SHL, 16, X86RM_Reg(d=
st)));
-//.. addInstr(env, X86Instr_Sh32(Xsh_SAR, 16, X86RM_Reg(d=
st)));
-//.. break;
+ case Iop_Sar8:
+ addInstr(env, AMD64Instr_Sh64(Ash_SHL, 56, dst));
+ addInstr(env, AMD64Instr_Sh64(Ash_SAR, 56, dst));
+ break;
+ case Iop_Sar16:
+ addInstr(env, AMD64Instr_Sh64(Ash_SHL, 48, dst));
+ addInstr(env, AMD64Instr_Sh64(Ash_SAR, 48, dst));
+ break;
case Iop_Sar32:
addInstr(env, AMD64Instr_Sh64(Ash_SHL, 32, dst));
addInstr(env, AMD64Instr_Sh64(Ash_SAR, 32, dst));
|