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 1002, Fri Nov 30 17:11:33 2001 UTC revision 1003, Fri Dec 7 02:45:32 2001 UTC
# Line 78  Line 78 
78    
79               (* make copy *)               (* make copy *)
80               fun copy((rds as [_], rss as [_]), _) =               fun copy((rds as [_], rss as [_]), _) =
81                   I.COPY{dst=rds, src=rss, impl=ref NONE, tmp=NONE}                   I.copy{dst=rds, src=rss, impl=ref NONE, tmp=NONE}
82                 | copy((rds, rss), I.COPY{tmp, ...}) =                 | copy((rds, rss), I.INSTR(I.COPY{tmp, ...})) =
83                   I.COPY{dst=rds, src=rss, impl=ref NONE, tmp=tmp}                   I.copy{dst=rds, src=rss, impl=ref NONE, tmp=tmp}
84    
85               (* spill copy temp *)               (* spill copy temp *)
86               fun spillCopyTmp(_, I.COPY{dst,src,tmp,impl},loc) =               fun spillCopyTmp(_, I.INSTR(I.COPY{dst,src,tmp,impl}),loc) =
87                   I.COPY{dst=dst, src=src, impl=impl,                   I.copy{dst=dst, src=src, impl=impl,
88                          tmp=SOME(I.Displace                          tmp=SOME(I.Displace
89                                     {base=sp,                                     {base=sp,
90                                      disp=I.ImmedOp(SpillTable.getRegLoc loc)})}                                      disp=I.ImmedOp(SpillTable.getRegLoc loc)})}
91    
92                (* spill register *)                (* spill register *)
93               fun spillInstr{src,spilledCell,spillLoc,an} =               fun spillInstr{src,spilledCell,spillLoc,an} =
94                   [I.ST{st=I.STW, ra=sp,                   [I.st{st=I.STW, ra=sp,
95                         d=I.ImmedOp(SpillTable.getRegLoc spillLoc),                         d=I.ImmedOp(SpillTable.getRegLoc spillLoc),
96                         rs=src, mem=spill}]                         rs=src, mem=spill}]
97               (* reload register *)               (* reload register *)
98               fun reloadInstr{dst,spilledCell,spillLoc,an} =               fun reloadInstr{dst,spilledCell,spillLoc,an} =
99                   [I.L{ld=I.LWZ, ra=sp,                   [I.l{ld=I.LWZ, ra=sp,
100                        d=I.ImmedOp(SpillTable.getRegLoc spillLoc),                        d=I.ImmedOp(SpillTable.getRegLoc spillLoc),
101                        rt=dst, mem=spill}]                        rt=dst, mem=spill}]
102    
# Line 108  Line 108 
108               val dedicated = PPCCpsRegs.dedicatedF               val dedicated = PPCCpsRegs.dedicatedF
109    
110               fun copy((fds as [_], fss as [_]), _) =               fun copy((fds as [_], fss as [_]), _) =
111                   I.FCOPY{dst=fds, src=fss, impl=ref NONE, tmp=NONE}                   I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=NONE}
112                 | copy((fds, fss), I.FCOPY{tmp, ...}) =                 | copy((fds, fss), I.INSTR(I.FCOPY{tmp, ...})) =
113                   I.FCOPY{dst=fds, src=fss, impl=ref NONE, tmp=tmp}                   I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=tmp}
114    
115               fun spillCopyTmp(_, I.FCOPY{dst,src,tmp,impl},loc) =               fun spillCopyTmp(_, I.INSTR(I.FCOPY{dst,src,tmp,impl}),loc) =
116                   I.FCOPY{dst=dst, src=src, impl=impl,                   I.fcopy{dst=dst, src=src, impl=impl,
117                          tmp=SOME(I.Displace                          tmp=SOME(I.Displace
118                                     {base=sp,                                     {base=sp,
119                                      disp=I.ImmedOp(SpillTable.getFregLoc loc)                                      disp=I.ImmedOp(SpillTable.getFregLoc loc)
120                                     })}                                     })}
121    
122               fun spillInstr(_, fs,loc) =               fun spillInstr(_, fs,loc) =
123                   [I.STF{st=I.STFD, ra=sp,                   [I.stf{st=I.STFD, ra=sp,
124                          d=I.ImmedOp(SpillTable.getFregLoc loc),                          d=I.ImmedOp(SpillTable.getFregLoc loc),
125                          fs=fs, mem=spill}]                          fs=fs, mem=spill}]
126    
127               fun reloadInstr(_, ft,loc) =               fun reloadInstr(_, ft,loc) =
128                   [I.LF{ld=I.LFD, ra=sp, d=I.ImmedOp(SpillTable.getFregLoc loc),                   [I.lf{ld=I.LFD, ra=sp, d=I.ImmedOp(SpillTable.getFregLoc loc),
129                         ft=ft, mem=spill}]                         ft=ft, mem=spill}]
130    
131               val mode = RACore.NO_OPTIMIZATION               val mode = RACore.NO_OPTIMIZATION

Legend:
Removed from v.1002  
changed lines
  Added in v.1003

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