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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.