CVS: sml-dist/src/compiler/CodeGen/main mlriscGen.sml,1.52,1.53
Matthias Blume <[email protected]>
| Newsgroups | gmane.comp.lang.sml.smlnj.commits |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/smlnj/sml-dist/src/compiler/CodeGen/main
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18358/src/compiler/CodeGen/main
Modified Files:
mlriscGen.sml
Log Message:
long long results implemented
Index: mlriscGen.sml
===================================================================
RCS file: /cvsroot/smlnj/sml-dist/src/compiler/CodeGen/main/mlriscGen.sml,v
retrieving revision 1.52
retrieving revision 1.53
diff -C2 -d -r1.52 -r1.53
*** mlriscGen.sml 11 Nov 2004 00:12:37 -0000 1.52
--- mlriscGen.sml 10 Feb 2005 23:53:54 -0000 1.53
***************
*** 992,996 ****
)
| ARITH(_,vl,x,t,e) => (addValues vl; add(x,t); init e)
! | RCC(_,_,_,vl,x,t,e) => (addValues vl; add(x,t); init e)
| PURE(p,vl,x,t,e) =>
(case p of
--- 992,996 ----
)
| ARITH(_,vl,x,t,e) => (addValues vl; add(x,t); init e)
! | RCC(_,_,_,vl,wl,e) => (addValues vl; app add wl; init e)
| PURE(p,vl,x,t,e) =>
(case p of
***************
*** 1990,1994 ****
(rawstore (kind, M.ADD(addrTy, regbind i, regbind j), x);
gen (e, hp))
! | gen (RCC(arg as (_, _, _, _, w, t, e)), hp) =
let val {result, hp} =
CPSCCalls.c_call
--- 1990,1994 ----
(rawstore (kind, M.ADD(addrTy, regbind i, regbind j), x);
gen (e, hp))
! | gen (RCC(arg as (_, _, _, _, wtl, e)), hp) =
let val {result, hp} =
CPSCCalls.c_call
***************
*** 1996,2005 ****
fregbind=fregbind, typmap=typmap, vfp=vfp, hp=hp}
arg
! in case (result, t) of
! (NONE, _) => defI31 (w, mlZero, e, hp)
! | (SOME(M.FPR x),CPS.FLTt) => treeifyDefF64 (w, x, e, hp)
(* more sanity checking here ? *)
! | (SOME(M.GPR x),CPS.INT32t) => defI32 (w, x, e, hp)
! | (SOME(M.GPR x),CPS.PTRt _) => defBoxed (w, x, e, hp)
| _ => error "RCC: bad results"
end
--- 1996,2013 ----
fregbind=fregbind, typmap=typmap, vfp=vfp, hp=hp}
arg
! in case (result, wtl) of
! ([], [(w, _)]) => defI31 (w, mlZero, e, hp)
! | ([M.FPR x],[(w,CPS.FLTt)]) => treeifyDefF64 (w, x, e, hp)
(* more sanity checking here ? *)
! | ([M.GPR x],[(w,CPS.INT32t)]) => defI32 (w, x, e, hp)
! | ([M.GPR x],[(w,CPS.PTRt _)]) => defBoxed (w, x, e, hp)
! | ([M.GPR x1, M.GPR x2],[(w1,CPS.INT32t),(w2,CPS.INT32t)]) =>
! let val (r1, r2) = (newReg I32, newReg I32)
! in addRegBinding(w1, r1);
! addRegBinding(w2, r2);
! emit(M.MV(ity,r1,x1));
! emit(M.MV(ity,r2,x2));
! gen(e,hp)
! end
| _ => error "RCC: bad results"
end
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click