|
From: <sv...@va...> - 2010-09-09 07:14:41
|
Author: sewardj
Date: 2010-09-09 08:14:31 +0100 (Thu, 09 Sep 2010)
New Revision: 2031
Log:
Handle 16Uto64, which can now show up at the back end as a
result of more iropt folding introduced in r2030.
Modified:
trunk/priv/host_x86_isel.c
Modified: trunk/priv/host_x86_isel.c
===================================================================
--- trunk/priv/host_x86_isel.c 2010-09-08 08:34:52 UTC (rev 2030)
+++ trunk/priv/host_x86_isel.c 2010-09-09 07:14:31 UTC (rev 2031)
@@ -2488,6 +2488,20 @@
return;
}
+ /* 16Uto64(e) */
+ case Iop_16Uto64: {
+ HReg tLo = newVRegI(env);
+ HReg tHi = newVRegI(env);
+ HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
+ addInstr(env, mk_iMOVsd_RR(src,tLo));
+ addInstr(env, X86Instr_Alu32R(Xalu_AND,
+ X86RMI_Imm(0xFFFF), tLo));
+ addInstr(env, X86Instr_Alu32R(Xalu_MOV, X86RMI_Imm(0), tHi));
+ *rHi = tHi;
+ *rLo = tLo;
+ return;
+ }
+
/* V128{HI}to64 */
case Iop_V128HIto64:
case Iop_V128to64: {
|