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/alpha32/alpha32CG.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/CodeGen/alpha32/alpha32CG.sml

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

revision 984, Wed Nov 21 19:00:08 2001 UTC revision 1003, Fri Dec 7 02:45:32 2001 UTC
# Line 80  Line 80 
80                val dedicated = Alpha32CpsRegs.dedicatedR                val dedicated = Alpha32CpsRegs.dedicatedR
81    
82                fun copy((rds as [_], rss as [_]), _) =                fun copy((rds as [_], rss as [_]), _) =
83                    I.COPY{dst=rds, src=rss, impl=ref NONE, tmp=NONE}                    I.copy{dst=rds, src=rss, impl=ref NONE, tmp=NONE}
84                  | copy((rds, rss), I.COPY{tmp, ...}) =                  | copy((rds, rss), I.INSTR(I.COPY{tmp, ...})) =
85                    I.COPY{dst=rds, src=rss, impl=ref NONE, tmp=tmp}                    I.copy{dst=rds, src=rss, impl=ref NONE, tmp=tmp}
86    
87                (* spill copy temp *)                (* spill copy temp *)
88                fun spillCopyTmp(an, I.COPY{tmp,dst,src,impl},loc) =                fun spillCopyTmp(an, I.INSTR(I.COPY{tmp,dst,src,impl}),loc) =
89                    I.COPY{tmp=SOME(I.Displace{base=sp,                    I.copy{tmp=SOME(I.Displace{base=sp,
90                                               disp=SpillTable.getRegLoc loc}),                                               disp=SpillTable.getRegLoc loc}),
91                           dst=dst,src=src,impl=impl}                           dst=dst,src=src,impl=impl}
92    
93                (* spill register *)                (* spill register *)
94                fun spillInstr{src,spilledCell,spillLoc,an} =                fun spillInstr{src,spilledCell,spillLoc,an} =
95                    [I.STORE{stOp=I.STL, b=sp,                    [I.store{stOp=I.STL, b=sp,
96                             d=I.IMMop(SpillTable.getRegLoc spillLoc),                             d=I.IMMop(SpillTable.getRegLoc spillLoc),
97                             r=src, mem=spill}]                             r=src, mem=spill}]
98    
99                (* reload register *)                (* reload register *)
100                fun reloadInstr{dst,spilledCell,spillLoc,an} =                fun reloadInstr{dst,spilledCell,spillLoc,an} =
101                    [I.LOAD{ldOp=I.LDL, b=sp,                    [I.load{ldOp=I.LDL, b=sp,
102                            d=I.IMMop(SpillTable.getRegLoc spillLoc),                            d=I.IMMop(SpillTable.getRegLoc spillLoc),
103                            r=dst, mem=spill}]                            r=dst, mem=spill}]
104    
# Line 111  Line 111 
111                val dedicated = Alpha32CpsRegs.dedicatedF                val dedicated = Alpha32CpsRegs.dedicatedF
112    
113                fun copy((fds as [_], fss as [_]), _) =                fun copy((fds as [_], fss as [_]), _) =
114                    I.FCOPY{dst=fds, src=fss, impl=ref NONE, tmp=NONE}                    I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=NONE}
115                  | copy((fds, fss), I.FCOPY{tmp, ...}) =                  | copy((fds, fss), I.INSTR(I.FCOPY{tmp, ...})) =
116                    I.FCOPY{dst=fds, src=fss, impl=ref NONE, tmp=tmp}                    I.fcopy{dst=fds, src=fss, impl=ref NONE, tmp=tmp}
117    
118                fun spillCopyTmp(an, I.FCOPY{tmp,dst,src,impl},loc) =                fun spillCopyTmp(an, I.INSTR(I.FCOPY{tmp,dst,src,impl}),loc) =
119                    I.FCOPY{tmp=SOME(I.Displace{base=sp,                    I.fcopy{tmp=SOME(I.Displace{base=sp,
120                                            disp=SpillTable.getFregLoc loc}),                                            disp=SpillTable.getFregLoc loc}),
121                            dst=dst,src=src,impl=impl}                            dst=dst,src=src,impl=impl}
122    
123                fun spillInstr(_, r,loc) =                fun spillInstr(_, r,loc) =
124                    [I.FSTORE{stOp=I.STT, b=sp,                    [I.fstore{stOp=I.STT, b=sp,
125                              d=I.IMMop(SpillTable.getFregLoc loc),                              d=I.IMMop(SpillTable.getFregLoc loc),
126                              r=r, mem=spill}]                              r=r, mem=spill}]
127    
128                fun reloadInstr(_, r,loc) =                fun reloadInstr(_, r,loc) =
129                    [I.FLOAD{ldOp=I.LDT, b=sp,                    [I.fload{ldOp=I.LDT, b=sp,
130                             d=I.IMMop(SpillTable.getFregLoc loc),                             d=I.IMMop(SpillTable.getFregLoc loc),
131                             r=r, mem=spill}]                             r=r, mem=spill}]
132    

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

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