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/sparc/sparcCG.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/CodeGen/sparc/sparcCG.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 SparcCG =  structure SparcCG =
5    MachineGen    MachineGen
6    ( structure MachSpec   = SparcSpec    ( structure MachSpec   = SparcSpec
7        structure CB         = CellsBasis
8      structure ClientPseudoOps = SparcClientPseudoOps      structure ClientPseudoOps = SparcClientPseudoOps
9      structure PseudoOps  = SparcPseudoOps      structure PseudoOps  = SparcPseudoOps
10      structure Ext        = Sparc_SMLNJMLTreeExt(* sparc specific *)      structure Ext        = Sparc_SMLNJMLTreeExt(* sparc specific *)
# Line 91  Line 92 
92               val avail     = SparcCpsRegs.availR               val avail     = SparcCpsRegs.availR
93               val dedicated = SparcCpsRegs.dedicatedR               val dedicated = SparcCpsRegs.dedicatedR
94    
              fun copy((rds as [_], rss as [_]), _) =  
                  I.copy{dst=rds, src=rss, impl=ref NONE, tmp=NONE}  
                | copy((rds, rss), I.INSTR(I.COPY{tmp, ...})) =  
                  I.copy{dst=rds, src=rss, impl=ref NONE, tmp=tmp}  
95    
96                 fun copy((rds, rss), I.COPY{k=CB.GP, sz, tmp, ...}) = let
97                    val tmp = (case (rds, rss) of ([_], [_]) => NONE | _ => tmp)
98                 in I.COPY{k=CB.GP, sz=sz, dst=rds, src=rss, tmp=tmp}
99                 end
100    
101               (* spill copy temp *)               (* spill copy temp *)
102               fun spillCopyTmp(_, I.INSTR(I.COPY{dst,src,tmp,impl}),loc) =                fun spillCopyTmp(an, I.COPY{k=CB.GP, sz, tmp,dst,src, ...},loc) =
103                   I.copy{dst=dst, src=src, impl=impl,                    I.COPY{k=CB.GP, sz=sz,  dst=dst,src=src,
104                          tmp=SOME(I.Displace{base=fp,                          tmp=SOME(I.Displace{base=fp,
105                                              disp=SpillTable.getRegLoc loc })}                                              disp=SpillTable.getRegLoc loc })}
106    
107    
108               (* spill register *)               (* spill register *)
109               fun spillInstr{src,spilledCell,an,spillLoc} =               fun spillInstr{src,spilledCell,an,spillLoc} =
110                   [I.store{s=I.ST,r=fp,                   [I.store{s=I.ST,r=fp,
# Line 124  Line 126 
126               val avail     = SparcCpsRegs.availF               val avail     = SparcCpsRegs.availF
127               val dedicated = SparcCpsRegs.dedicatedF               val dedicated = SparcCpsRegs.dedicatedF
128    
129               fun copy((fds as [_], fss as [_]), _) =                fun copy((fds, fss), I.COPY{k=CB.FP, sz, tmp, ...}) = let
130                   I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=NONE}                  val tmp =(case (fds, fss) of ([_],[_]) => NONE | _ => tmp)
131                 | copy((fds, fss), I.INSTR(I.FCOPY{tmp, ...})) =                in I.COPY{k=CB.FP, sz=sz, dst=fds, src=fss, tmp=tmp}
132                   I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=tmp}                end
133    
134                  fun spillCopyTmp(an, I.COPY{k=CB.FP, sz, tmp,dst,src},loc) =
135                      I.COPY{k=CB.FP, sz=sz, dst=dst,src=src,
136                             tmp=SOME(I.Displace{base=fp, disp=SpillTable.getFregLoc loc})}
137    
              fun spillCopyTmp(_, I.INSTR(I.FCOPY{dst,src,tmp,impl}),loc) =  
                  I.fcopy{dst=dst, src=src, impl=impl,  
                         tmp=SOME(I.Displace{base=fp,  
                                             disp=SpillTable.getFregLoc loc })}  
138    
139               fun spillInstr(_, d,loc) =               fun spillInstr(_, d,loc) =
140                   [I.fstore{s=I.STDF, r=fp,                   [I.fstore{s=I.STDF, r=fp,

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