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/MLRISC/ra/risc-ra.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/ra/risc-ra.sml

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

revision 744, Fri Dec 8 04:11:42 2000 UTC revision 796, Tue Mar 6 00:04:33 2001 UTC
# Line 52  Line 52 
52                           RAGraph.spillLoc -> I.instruction                           RAGraph.spillLoc -> I.instruction
53    
54        (* This function is used to spill a register onto some stack offset        (* This function is used to spill a register onto some stack offset
        * The  
55         *)         *)
56        val spillInstr : Annotations.annotations ref * I.C.cell *        val spillInstr : {an:Annotations.annotations ref, src:I.C.cell,
57                         RAGraph.spillLoc -> I.instruction list                          spilledCell:I.C.cell, spillLoc:RAGraph.spillLoc}
58                           -> I.instruction list
59    
60        (*        (*
61         * This function is used to reload a register from some stack offset         * This function is used to reload a register from some stack offset
62         *)         *)
63        val reloadInstr : Annotations.annotations ref * I.C.cell *        val reloadInstr : {an:Annotations.annotations ref, dst:I.C.cell,
64                          RAGraph.spillLoc -> I.instruction list                           spilledCell:I.C.cell, spillLoc:RAGraph.spillLoc}
65                            -> I.instruction list
66    
67          (* Mode for RA optimizations *)
68          val mode : RAGraph.mode
69     end     end
70    
71     structure Float :     structure Float :
# Line 93  Line 98 
98         *)         *)
99        val reloadInstr : Annotations.annotations ref * I.C.cell *        val reloadInstr : Annotations.annotations ref * I.C.cell *
100                          RAGraph.spillLoc -> I.instruction list                          RAGraph.spillLoc -> I.instruction list
101    
102          (* Mode for RA optimizations *)
103          val mode : RAGraph.mode
104     end     end
105    ) : CLUSTER_OPTIMIZATION =    ) : CLUSTER_OPTIMIZATION =
106  struct  struct
# Line 156  Line 164 
164         let val _   = intSpillsCnt := !intSpillsCnt + 1         let val _   = intSpillsCnt := !intSpillsCnt + 1
165             val newR = C.newReg()             val newR = C.newReg()
166             val instr' = Rewrite.rewriteDef(instr, reg, newR)             val instr' = Rewrite.rewriteDef(instr, reg, newR)
167         in  {code=instr'::Int.spillInstr(annotations,newR,spillLoc),         in  {code=instr'::Int.spillInstr{an=annotations,src=newR,
168                                            spilledCell=reg,spillLoc=spillLoc},
169              proh=[newR], newReg=SOME newR}              proh=[newR], newReg=SOME newR}
170         end         end
171    
172     fun spillReg{annotations,src,reg,spillLoc} =     fun spillReg{annotations,src,reg,spillLoc} =
173         (intSpillsCnt := !intSpillsCnt + 1;         (intSpillsCnt := !intSpillsCnt + 1;
174          Int.spillInstr(annotations,src,spillLoc)          Int.spillInstr{an=annotations,src=src,spilledCell=reg,
175                           spillLoc=spillLoc}
176         )         )
177    
178     fun spillTmp{annotations,copy,spillLoc} =     fun spillTmp{annotations,copy,spillLoc} =
# Line 205  Line 215 
215         let val _   = intReloadsCnt := !intReloadsCnt + 1         let val _   = intReloadsCnt := !intReloadsCnt + 1
216             val newR = C.newReg()             val newR = C.newReg()
217             val instr' = Rewrite.rewriteUse(instr, reg, newR)             val instr' = Rewrite.rewriteUse(instr, reg, newR)
218         in {code=Int.reloadInstr(annotations,newR,spillLoc) @ [instr'],         in {code=Int.reloadInstr{an=annotations,dst=newR,spilledCell=reg,
219                                    spillLoc=spillLoc} @ [instr'],
220             proh=[newR], newReg=SOME newR}             proh=[newR], newReg=SOME newR}
221         end         end
222    
223     fun reloadReg{annotations,reg,dst,spillLoc} =     fun reloadReg{annotations,reg,dst,spillLoc} =
224         (intReloadsCnt := !intReloadsCnt + 1;         (intReloadsCnt := !intReloadsCnt + 1;
225          Int.reloadInstr(annotations,dst,spillLoc)          Int.reloadInstr{an=annotations,dst=dst,spilledCell=reg,
226                            spillLoc=spillLoc}
227         )         )
228    
229     (* Rename floating point register *)     (* Rename floating point register *)
# Line 265  Line 277 
277              copyInstr    = fn i => [Int.copy i],              copyInstr    = fn i => [Int.copy i],
278              spillProh    = [],              spillProh    = [],
279              memRegs      = [],              memRegs      = [],
280              mode         = Ra.NO_OPTIMIZATION              mode         = Int.mode
281            } : Ra.raClient,            } : Ra.raClient,
282            { cellkind     = I.C.FP,            { cellkind     = I.C.FP,
283              getreg       = FR.getreg,              getreg       = FR.getreg,
# Line 280  Line 292 
292              copyInstr    = fn i => [Float.copy i],              copyInstr    = fn i => [Float.copy i],
293              spillProh    = [],              spillProh    = [],
294              memRegs      = [],              memRegs      = [],
295              mode         = Ra.NO_OPTIMIZATION              mode         = Float.mode
296            } : Ra.raClient            } : Ra.raClient
297         ] : Ra.raClient list         ] : Ra.raClient list
298    
# Line 292  Line 304 
304        )        )
305    
306  end  end
307    

Legend:
Removed from v.744  
changed lines
  Added in v.796

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