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 796, Tue Mar 6 00:04:33 2001 UTC revision 1003, Fri Dec 7 02:45:32 2001 UTC
# Line 5  Line 5 
5    MachineGen    MachineGen
6    ( structure I          = Alpha32Instr    ( structure I          = Alpha32Instr
7      structure MachSpec   = Alpha32Spec      structure MachSpec   = Alpha32Spec
8        structure ClientPseudoOps = Alpha32ClientPseudoOps
9      structure PseudoOps  = Alpha32PseudoOps      structure PseudoOps  = Alpha32PseudoOps
10      structure Ext        = SMLNJMLTreeExt(* generic extension *)      structure Ext        = SMLNJMLTreeExt(* generic extension *)
11      structure CpsRegs    = Alpha32CpsRegs      structure CpsRegs    = Alpha32CpsRegs
# Line 13  Line 14 
14      structure Shuffle    = Alpha32Shuffle      structure Shuffle    = Alpha32Shuffle
15    
16      structure CCalls     = DummyCCallsFn (Alpha32MLTree)      structure CCalls     = DummyCCallsFn (Alpha32MLTree)
17        structure OmitFramePtr = struct
18          exception NotImplemented
19          structure CFG=Alpha32CFG
20          structure I=Alpha32Instr
21          val vfp = CpsRegs.vfp
22          fun omitframeptr _ = raise NotImplemented
23        end
24    
25    
26      structure MLTreeComp=      structure MLTreeComp=
27         Alpha(structure AlphaInstr = Alpha32Instr         Alpha(structure AlphaInstr = Alpha32Instr
# Line 21  Line 30 
30               structure ExtensionComp = SMLNJMLTreeExtComp               structure ExtensionComp = SMLNJMLTreeExtComp
31                 (structure I = Alpha32Instr                 (structure I = Alpha32Instr
32                  structure T = Alpha32MLTree                  structure T = Alpha32MLTree
33                    structure CFG = Alpha32CFG
34                    structure TS = Alpha32MLTreeStream
35                 )                 )
36               val mode32bit = true (* simulate 32 bit mode *)               val mode32bit = true (* simulate 32 bit mode *)
37               val multCost = ref 8 (* just guessing *)               val multCost = ref 8 (* just guessing *)
# Line 31  Line 42 
42    
43      structure Jumps =      structure Jumps =
44         AlphaJumps(structure Instr=Alpha32Instr         AlphaJumps(structure Instr=Alpha32Instr
45                    structure Shuffle=Alpha32Shuffle)                    structure Shuffle=Alpha32Shuffle
46                      structure MLTreeEval=Alpha32MLTreeEval)
47    
48      structure BackPatch =      structure BackPatch =
49         BBSched2(structure Flowgraph = Alpha32FlowGraph         BBSched2(structure CFG=Alpha32CFG
50                  structure Jumps = Jumps                  structure Jumps = Jumps
51                    structure Placement = DefaultBlockPlacement(Alpha32CFG)
52                  structure Emitter = Alpha32MCEmitter)                  structure Emitter = Alpha32MCEmitter)
53    
54      structure RA =      structure RA =
55         RISC_RA         RISC_RA
56           (structure I         = Alpha32Instr           (structure I         = Alpha32Instr
57            structure Flowgraph = Alpha32FlowGraph            structure Flowgraph = Alpha32CFG
58            structure InsnProps = InsnProps            structure InsnProps = InsnProps
59            structure Rewrite   = AlphaRewrite(Alpha32Instr)            structure Rewrite   = AlphaRewrite(Alpha32Instr)
60            structure Asm       = Alpha32AsmEmitter            structure Asm       = Alpha32AsmEmitter
# Line 67  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 98  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.796  
changed lines
  Added in v.1003

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