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

Diff of /sml/trunk/src/MLRISC/sparc/ra/sparcRewrite.sml

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

revision 888, Thu Jul 19 20:24:21 2001 UTC revision 889, Thu Jul 19 20:35:20 2001 UTC
# Line 2  Line 2 
2  struct  struct
3     structure I = Instr     structure I = Instr
4     structure C = I.C     structure C = I.C
5       structure CB = CellsBasis
6    
7     fun rewriteUse(instr,rs,rt) =     fun rewriteUse(instr,rs,rt) =
8     let fun match r = C.sameColor(r,rs)     let fun match r = CB.sameColor(r,rs)
9         fun R r = if match r then rt else r         fun R r = if match r then rt else r
10         fun O(i as I.REG r) = if match r then I.REG rt else i         fun O(i as I.REG r) = if match r then I.REG rt else i
11           | O i = i           | O i = i
# Line 37  Line 38 
38         | I.ANNOTATION{i,a} =>         | I.ANNOTATION{i,a} =>
39             I.ANNOTATION{i=rewriteUse(i,rs,rt),             I.ANNOTATION{i=rewriteUse(i,rs,rt),
40                          a=case a of                          a=case a of
41                             C.DEF_USE{cellkind=C.GP,defs,uses} =>                             CB.DEF_USE{cellkind=CB.GP,defs,uses} =>
42                               C.DEF_USE{cellkind=C.GP,uses=map R uses,                               CB.DEF_USE{cellkind=CB.GP,uses=map R uses,
43                                         defs=defs}                                         defs=defs}
44                            | _ => a}                            | _ => a}
45         | _ => instr         | _ => instr
46     end     end
47    
48     fun rewriteDef(instr,rs,rt) =     fun rewriteDef(instr,rs,rt) =
49     let fun match r = C.sameColor(r,rs)     let fun match r = CB.sameColor(r,rs)
50         fun R r = if match r then rt else r         fun R r = if match r then rt else r
51         fun ea(SOME(I.Direct r)) = SOME(I.Direct(R r))         fun ea(SOME(I.Direct r)) = SOME(I.Direct(R r))
52           | ea x = x           | ea x = x
# Line 71  Line 72 
72         | I.ANNOTATION{i,a} =>         | I.ANNOTATION{i,a} =>
73             I.ANNOTATION{i=rewriteDef(i,rs,rt),             I.ANNOTATION{i=rewriteDef(i,rs,rt),
74                          a=case a of                          a=case a of
75                             C.DEF_USE{cellkind=C.GP,defs,uses} =>                             CB.DEF_USE{cellkind=CB.GP,defs,uses} =>
76                               C.DEF_USE{cellkind=C.GP,uses=uses,                               CB.DEF_USE{cellkind=CB.GP,uses=uses,
77                                         defs=map R defs}                                         defs=map R defs}
78                            | _ => a}                            | _ => a}
79         | _ => instr         | _ => instr
80     end     end
81    
82     fun frewriteUse(instr,rs,rt) =     fun frewriteUse(instr,rs,rt) =
83     let fun match r = C.sameColor(r,rs)     let fun match r = CB.sameColor(r,rs)
84         fun R r = if match r then rt else r         fun R r = if match r then rt else r
85     in  case instr of     in  case instr of
86           I.FPop1{a,r,d} => I.FPop1{a=a,r=R r,d=d}           I.FPop1{a,r,d} => I.FPop1{a=a,r=R r,d=d}
# Line 100  Line 101 
101         | I.ANNOTATION{i,a} =>         | I.ANNOTATION{i,a} =>
102             I.ANNOTATION{i=frewriteUse(i,rs,rt),             I.ANNOTATION{i=frewriteUse(i,rs,rt),
103                          a=case a of                          a=case a of
104                             C.DEF_USE{cellkind=C.FP,defs,uses} =>                             CB.DEF_USE{cellkind=CB.FP,defs,uses} =>
105                               C.DEF_USE{cellkind=C.FP,uses=map R uses,                               CB.DEF_USE{cellkind=CB.FP,uses=map R uses,
106                                         defs=defs}                                         defs=defs}
107                            | _ => a}                            | _ => a}
108         | _ => instr         | _ => instr
109     end     end
110    
111     fun frewriteDef(instr,rs,rt) =     fun frewriteDef(instr,rs,rt) =
112     let fun match r = C.sameColor(r,rs)     let fun match r = CB.sameColor(r,rs)
113         fun R r = if match r then rt else r         fun R r = if match r then rt else r
114         fun ea(SOME(I.FDirect r)) = SOME(I.FDirect(R r))         fun ea(SOME(I.FDirect r)) = SOME(I.FDirect(R r))
115           | ea x = x           | ea x = x
# Line 129  Line 130 
130         | I.ANNOTATION{i,a}=>         | I.ANNOTATION{i,a}=>
131             I.ANNOTATION{i=frewriteDef(i,rs,rt),             I.ANNOTATION{i=frewriteDef(i,rs,rt),
132                          a=case a of                          a=case a of
133                             C.DEF_USE{cellkind=C.FP,defs,uses} =>                             CB.DEF_USE{cellkind=CB.FP,defs,uses} =>
134                               C.DEF_USE{cellkind=C.FP,uses=uses,                               CB.DEF_USE{cellkind=CB.FP,uses=uses,
135                                         defs=map R defs}                                         defs=map R defs}
136                            | _ => a}                            | _ => a}
137         | _ => instr         | _ => instr

Legend:
Removed from v.888  
changed lines
  Added in v.889

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