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 245, Sat Apr 17 18:47:12 1999 UTC revision 411, Fri Sep 3 00:25:03 1999 UTC
# Line 13  Line 13 
13         | I.STORE{s,d,r,i,mem} => I.STORE{s=s,d=R d,r=R r,i=O i,mem=mem}         | I.STORE{s,d,r,i,mem} => I.STORE{s=s,d=R d,r=R r,i=O i,mem=mem}
14         | I.FLOAD{l,r,i,d,mem} => I.FLOAD{l=l,r=R r,i=O i,d=d,mem=mem}         | I.FLOAD{l,r,i,d,mem} => I.FLOAD{l=l,r=R r,i=O i,d=d,mem=mem}
15         | I.FSTORE{s,d,r,i,mem} => I.FSTORE{s=s,d=d,r=R r,i=O i,mem=mem}         | I.FSTORE{s,d,r,i,mem} => I.FSTORE{s=s,d=d,r=R r,i=O i,mem=mem}
16         | I.ARITH{a,r,i,d,cc} => I.ARITH{a=a,r=R r,i=O i,d=d,cc=cc}         | I.ARITH{a,r,i,d} => I.ARITH{a=a,r=R r,i=O i,d=d}
17         | I.SHIFT{s,r,i,d} => I.SHIFT{s=s,r=R r,i=O i,d=d}         | I.SHIFT{s,r,i,d} => I.SHIFT{s=s,r=R r,i=O i,d=d}
18           | I.BR{r,p,rcond,a,nop,label} =>
19                I.BR{r=R r,p=p,rcond=rcond,a=a,nop=nop,label=label}
20           | I.MOVicc{b,i,d} => I.MOVicc{b=b,i=O i,d=R d}
21           | I.MOVfcc{b,i,d} => I.MOVfcc{b=b,i=O i,d=R d}
22           | I.MOVR{rcond,r,i,d} => I.MOVR{rcond=rcond,r=R r,i=O i,d=R d}
23         | I.JMP{r,i,labs,nop} => I.JMP{r=R r,i=O i,labs=labs,nop=nop}         | I.JMP{r,i,labs,nop} => I.JMP{r=R r,i=O i,labs=labs,nop=nop}
24         | I.JMPL{r,i,d,defs,uses=(A,B),nop} =>         | I.JMPL{r,i,d,defs,uses=(A,B,C),nop,mem} =>
25              I.JMPL{r=R r,i=O i,d=d,defs=defs,uses=(rwset(A,R),B),nop=nop}              I.JMPL{r=R r,i=O i,d=d,defs=defs,uses=(rwset(A,R),B,C),nop=nop,mem=mem}
26         | I.CALL{defs,uses=(A,B),label,nop} =>         | I.CALL{defs,uses=(A,B,C),label,nop,mem} =>
27              I.CALL{defs=defs,uses=(rwset(A,R),B),label=label,nop=nop}              I.CALL{defs=defs,uses=(rwset(A,R),B,C),label=label,nop=nop,mem=mem}
28         | I.SAVE{r,i,d} => I.SAVE{r=R r,i=O i,d=d}         | I.SAVE{r,i,d} => I.SAVE{r=R r,i=O i,d=d}
29         | I.RESTORE{r,i,d} => I.RESTORE{r=R r,i=O i,d=d}         | I.RESTORE{r,i,d} => I.RESTORE{r=R r,i=O i,d=d}
30         | I.WRY{r,i} => I.WRY{r=R r,i=O i}         | I.WRY{r,i} => I.WRY{r=R r,i=O i}
31         | I.Ticc{t,r,i} => I.Ticc{t=t,r=R r,i=O i}         | I.Ticc{t,cc,r,i} => I.Ticc{t=t,cc=cc,r=R r,i=O i}
32         | I.COPY{src,dst,tmp,impl} =>         | I.COPY{src,dst,tmp,impl} =>
33             I.COPY{src=map R src,dst=dst,tmp=tmp,impl=impl}             I.COPY{src=map R src,dst=dst,tmp=tmp,impl=impl}
34  (*         | I.ANNOTATION{i,a} => I.ANNOTATION{i=rewriteUse(mapr,i,rs,rt),a=a}
        | I.ANNOTATION(i,a) => I.ANNOTATION(rewriteUse(mapr,i,rs,rt),a)  
 *)  
35         | _ => instr         | _ => instr
36     end     end
37    
# Line 38  Line 41 
41           | ea x = x           | ea x = x
42     in  case instr of     in  case instr of
43           I.LOAD{l,r,i,d,mem} => I.LOAD{l=l,r=r,i=i,d=R d,mem=mem}           I.LOAD{l,r,i,d,mem} => I.LOAD{l=l,r=r,i=i,d=R d,mem=mem}
44         | I.ARITH{a,r,i,d,cc} => I.ARITH{a=a,r=r,i=i,d=R d,cc=cc}         | I.ARITH{a,r,i,d} => I.ARITH{a=a,r=r,i=i,d=R d}
45         | I.SHIFT{s,r,i,d} => I.SHIFT{s=s,r=r,i=i,d=R d}         | I.SHIFT{s,r,i,d} => I.SHIFT{s=s,r=r,i=i,d=R d}
46         | I.SETHI{i,d} => I.SETHI{i=i,d=R d}         | I.SETHI{i,d} => I.SETHI{i=i,d=R d}
47         | I.JMPL{r,i,d,defs=(A,B),uses,nop=nop} =>         | I.MOVicc{b,i,d} => I.MOVicc{b=b,i=i,d=R d}
48              I.JMPL{r=r,i=i,d=R d,defs=(rwset(A,R),B),uses=uses,nop=nop}         | I.MOVfcc{b,i,d} => I.MOVfcc{b=b,i=i,d=R d}
49         | I.CALL{defs=(A,B),uses,label,nop} =>         | I.MOVR{rcond,r,i,d} => I.MOVR{rcond=rcond,r=r,i=i,d=R d}
50              I.CALL{defs=(rwset(A,R),B),uses=uses,label=label,nop=nop}         | I.JMPL{r,i,d,defs=(A,B,C),uses,nop,mem} =>
51                I.JMPL{r=r,i=i,d=R d,defs=(rwset(A,R),B,C),uses=uses,nop=nop,mem=mem}
52           | I.CALL{defs=(A,B,C),uses,label,nop,mem} =>
53                I.CALL{defs=(rwset(A,R),B,C),uses=uses,label=label,nop=nop,mem=mem}
54         | I.SAVE{r,i,d} => I.SAVE{r=r,i=i,d=R d}         | I.SAVE{r,i,d} => I.SAVE{r=r,i=i,d=R d}
55         | I.RESTORE{r,i,d} => I.RESTORE{r=r,i=i,d=R d}         | I.RESTORE{r,i,d} => I.RESTORE{r=r,i=i,d=R d}
56         | I.RDY{d} => I.RDY{d=R d}         | I.RDY{d} => I.RDY{d=R d}
57         | I.COPY{src,dst,tmp,impl} =>         | I.COPY{src,dst,tmp,impl} =>
58             I.COPY{src=src,dst=map R dst,tmp=ea tmp,impl=impl}             I.COPY{src=src,dst=map R dst,tmp=ea tmp,impl=impl}
59  (*         | I.ANNOTATION{i,a} => I.ANNOTATION{i=rewriteDef(mapr,i,rs,rt),a=a}
        | I.ANNOTATION(i,a) => I.ANNOTATION(rewriteDef(mapr,i,rs,rt),a)  
 *)  
60         | _ => instr         | _ => instr
61     end     end
62    
# Line 63  Line 67 
67         | I.FPop2{a,r1,r2,d} => I.FPop2{a=a,r1=R r1,r2=R r2,d=d}         | I.FPop2{a,r1,r2,d} => I.FPop2{a=a,r1=R r1,r2=R r2,d=d}
68         | I.FCMP{cmp,r1,r2,nop} => I.FCMP{cmp=cmp,r1=R r1,r2=R r2,nop=nop}         | I.FCMP{cmp,r1,r2,nop} => I.FCMP{cmp=cmp,r1=R r1,r2=R r2,nop=nop}
69         | I.FSTORE{s,r,i,d,mem} => I.FSTORE{s=s,r=r,i=i,d=R d,mem=mem}         | I.FSTORE{s,r,i,d,mem} => I.FSTORE{s=s,r=r,i=i,d=R d,mem=mem}
70         | I.JMPL{r,i,d,defs,uses=(A,B),nop} =>         | I.FMOVicc{sz,b,r,d} => I.FMOVicc{sz=sz,b=b,r=R r,d=R d}
71             I.JMPL{r=r,i=i,d=d,defs=defs,uses=(A,rwset(B,R)),nop=nop}         | I.FMOVfcc{sz,b,r,d} => I.FMOVfcc{sz=sz,b=b,r=R r,d=R d}
72         | I.CALL{defs,uses=(A,B),label,nop} =>         | I.JMPL{r,i,d,defs,uses=(A,B,C),nop,mem} =>
73             I.CALL{defs=defs,uses=(A,rwset(B,R)),label=label,nop=nop}             I.JMPL{r=r,i=i,d=d,defs=defs,uses=(A,rwset(B,R),C),nop=nop,mem=mem}
74           | I.CALL{defs,uses=(A,B,C),label,nop,mem} =>
75               I.CALL{defs=defs,uses=(A,rwset(B,R),C),label=label,nop=nop,mem=mem}
76         | I.FCOPY{src,dst,tmp,impl} =>         | I.FCOPY{src,dst,tmp,impl} =>
77             I.FCOPY{src=map R src,dst=dst,tmp=tmp,impl=impl}             I.FCOPY{src=map R src,dst=dst,tmp=tmp,impl=impl}
78  (*         | I.ANNOTATION{i,a} => I.ANNOTATION{i=frewriteUse(mapr,i,rs,rt),a=a}
        | I.ANNOTATION(i,a)=> I.ANNOTATION(frewriteUse(mapr,i,rs,rt),a)  
 *)  
79         | _ => instr         | _ => instr
80     end     end
81    
# Line 83  Line 87 
87           I.FPop1{a,r,d} => I.FPop1{a=a,r=r,d=R d}           I.FPop1{a,r,d} => I.FPop1{a=a,r=r,d=R d}
88         | I.FPop2{a,r1,r2,d} => I.FPop2{a=a,r1=r1,r2=r2,d=R d}         | I.FPop2{a,r1,r2,d} => I.FPop2{a=a,r1=r1,r2=r2,d=R d}
89         | I.FLOAD{l,r,i,d,mem} => I.FLOAD{l=l,r=r,i=i,d=R d,mem=mem}         | I.FLOAD{l,r,i,d,mem} => I.FLOAD{l=l,r=r,i=i,d=R d,mem=mem}
90         | I.JMPL{r,i,d,defs=(A,B),uses,nop} =>         | I.FMOVicc{sz,b,r,d} => I.FMOVicc{sz=sz,b=b,r=r,d=R d}
91             I.JMPL{r=r,i=i,d=d,defs=(A,rwset(B,R)),uses=uses,nop=nop}         | I.FMOVfcc{sz,b,r,d} => I.FMOVfcc{sz=sz,b=b,r=r,d=R d}
92         | I.CALL{defs=(A,B),uses,label,nop} =>         | I.JMPL{r,i,d,defs=(A,B,C),uses,nop,mem} =>
93             I.CALL{defs=(A,rwset(B,R)),uses=uses,label=label,nop=nop}             I.JMPL{r=r,i=i,d=d,defs=(A,rwset(B,R),C),uses=uses,nop=nop,mem=mem}
94           | I.CALL{defs=(A,B,C),uses,label,nop,mem} =>
95               I.CALL{defs=(A,rwset(B,R),C),uses=uses,label=label,nop=nop,mem=mem}
96         | I.FCOPY{src,dst,tmp,impl} =>         | I.FCOPY{src,dst,tmp,impl} =>
97             I.FCOPY{src=src,dst=map R dst,tmp=ea tmp,impl=impl}             I.FCOPY{src=src,dst=map R dst,tmp=ea tmp,impl=impl}
98  (*         | I.ANNOTATION{i,a}=> I.ANNOTATION{i=frewriteDef(mapr,i,rs,rt),a=a}
        | I.ANNOTATION(i,a)=> I.ANNOTATION(frewriteDef(mapr,i,rs,rt),a)  
 *)  
99         | _ => instr         | _ => instr
100     end     end
101    
102  end  end
103    
 (*  
  * $Log: sparcRewrite.sml,v $  
  * Revision 1.1.1.1  1999/01/04 21:56:27  george  
  *   Version 110.12  
  *  
  * Revision 1.2  1998/08/12 13:36:27  leunga  
  *   Fixed the 2.0 + 2.0 == nan bug by treating FCMP as instrs with delay slots  
  *  
  * Revision 1.1.1.1  1998/08/05 19:38:49  george  
  *   Release 110.7.4  
  *  
  *)  

Legend:
Removed from v.245  
changed lines
  Added in v.411

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