Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/compiler/CodeGen/ppc/ppcCG.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/CodeGen/ppc/ppcCG.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1008, Fri Dec 14 21:01:29 2001 UTC revision 1009, Wed Jan 9 19:44:22 2002 UTC
# Line 4  Line 4 
4  structure PPCCG =  structure PPCCG =
5    MachineGen    MachineGen
6    ( structure MachSpec   = PPCSpec    ( structure MachSpec   = PPCSpec
7        structure CB         = CellsBasis
8      structure ClientPseudoOps = PPCClientPseudoOps      structure ClientPseudoOps = PPCClientPseudoOps
9      structure PseudoOps  = PPCPseudoOps      structure PseudoOps  = PPCPseudoOps
10      structure Ext        = SMLNJMLTreeExt(* generic extension *)      structure Ext        = SMLNJMLTreeExt(* generic extension *)
# Line 77  Line 78 
78               val dedicated = PPCCpsRegs.dedicatedR               val dedicated = PPCCpsRegs.dedicatedR
79    
80               (* make copy *)               (* make copy *)
81               fun copy((rds as [_], rss as [_]), _) =                fun copy((rds, rss), I.COPY{k=CB.GP, sz, tmp, ...}) = let
82                   I.copy{dst=rds, src=rss, impl=ref NONE, tmp=NONE}                  val tmp = (case (rds, rss) of ([_], [_]) => NONE | _ => tmp)
83                 | copy((rds, rss), I.INSTR(I.COPY{tmp, ...})) =                in I.COPY{k=CB.GP, sz=sz, dst=rds, src=rss, tmp=tmp}
84                   I.copy{dst=rds, src=rss, impl=ref NONE, tmp=tmp}                end
85    
86               (* spill copy temp *)               (* spill copy temp *)
87               fun spillCopyTmp(_, I.INSTR(I.COPY{dst,src,tmp,impl}),loc) =                fun spillCopyTmp(an, I.COPY{k=CB.GP, sz, tmp,dst,src, ...},loc) =
88                   I.copy{dst=dst, src=src, impl=impl,                    I.COPY{k=CB.GP, sz=sz,  dst=dst, src=src,
89                          tmp=SOME(I.Displace                           tmp=SOME(I.Displace{base=sp,
                                    {base=sp,  
90                                      disp=I.ImmedOp(SpillTable.getRegLoc loc)})}                                      disp=I.ImmedOp(SpillTable.getRegLoc loc)})}
91    
92    
93                (* spill register *)                (* spill register *)
94               fun spillInstr{src,spilledCell,spillLoc,an} =               fun spillInstr{src,spilledCell,spillLoc,an} =
95                   [I.st{st=I.STW, ra=sp,                   [I.st{st=I.STW, ra=sp,
# Line 107  Line 108 
108               val avail     = PPCCpsRegs.availF               val avail     = PPCCpsRegs.availF
109               val dedicated = PPCCpsRegs.dedicatedF               val dedicated = PPCCpsRegs.dedicatedF
110    
111               fun copy((fds as [_], fss as [_]), _) =               fun copy((fds, fss), I.COPY{k=CB.FP, sz, tmp, ...}) = let
112                   I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=NONE}                 val tmp =(case (fds, fss) of ([_],[_]) => NONE | _ => tmp)
113                 | copy((fds, fss), I.INSTR(I.FCOPY{tmp, ...})) =               in I.COPY{k=CB.FP, sz=sz, dst=fds, src=fss, tmp=tmp}
114                   I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=tmp}               end
115    
116               fun spillCopyTmp(_, I.INSTR(I.FCOPY{dst,src,tmp,impl}),loc) =               fun spillCopyTmp(an, I.COPY{k=CB.FP, sz, tmp,dst,src},loc) =
117                   I.fcopy{dst=dst, src=src, impl=impl,                   I.COPY{k=CB.FP, sz=sz, dst=dst,src=src,
118                          tmp=SOME(I.Displace                          tmp=SOME(I.Displace{base=sp, disp=I.ImmedOp(SpillTable.getFregLoc loc)})}
119                                     {base=sp,  
                                     disp=I.ImmedOp(SpillTable.getFregLoc loc)  
                                    })}  
120    
121               fun spillInstr(_, fs,loc) =               fun spillInstr(_, fs,loc) =
122                   [I.stf{st=I.STFD, ra=sp,                   [I.stf{st=I.STFD, ra=sp,

Legend:
Removed from v.1008  
changed lines
  Added in v.1009

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0