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/mltree/mltree-utils.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/mltree/mltree-utils.sml

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

revision 1180, Tue Mar 26 22:24:24 2002 UTC revision 1181, Wed Mar 27 21:27:27 2002 UTC
# Line 90  Line 90 
90    
91     and hash2(ty,x,y) = w ty + hashRexp x + hashRexp y     and hash2(ty,x,y) = w ty + hashRexp x + hashRexp y
92    
93       and hashm T.DIV_TO_ZERO = 0w158
94         | hashm T.DIV_TO_NEGINF = 0w159
95    
96       and hash3(m,ty,x,y) = hashm m + w ty + hashRexp x + hashRexp y
97    
98     and hashRexp rexp =     and hashRexp rexp =
99        case rexp of        case rexp of
100        T.REG(ty, src) => w ty + wv src        T.REG(ty, src) => w ty + wv src
# Line 101  Line 106 
106      | T.ADD x => hash2 x + 0w234      | T.ADD x => hash2 x + 0w234
107      | T.SUB x => hash2 x + 0w456      | T.SUB x => hash2 x + 0w456
108      | T.MULS x => hash2 x + 0w2131      | T.MULS x => hash2 x + 0w2131
109      | T.DIVS x => hash2 x + 0w156      | T.DIVS x => hash3 x + 0w156
110      | T.QUOTS x => hash2 x + 0w1565      | T.REMS x => hash3 x + 0w231
     | T.REMS x => hash2 x + 0w231  
111      | T.MULU x => hash2 x + 0w123      | T.MULU x => hash2 x + 0w123
112      | T.DIVU x => hash2 x + 0w1234      | T.DIVU x => hash2 x + 0w1234
113      | T.REMU x => hash2 x + 0w211      | T.REMU x => hash2 x + 0w211
# Line 111  Line 115 
115      | T.ADDT x => hash2 x + 0w1219      | T.ADDT x => hash2 x + 0w1219
116      | T.SUBT x => hash2 x + 0w999      | T.SUBT x => hash2 x + 0w999
117      | T.MULT x => hash2 x + 0w7887      | T.MULT x => hash2 x + 0w7887
118      | T.DIVT x => hash2 x + 0w88884      | T.DIVT x => hash3 x + 0w88884
119      | T.QUOTT x => hash2 x + 0w8884      | T.REMT x => hash3 x + 0w99
     | T.REMT x => hash2 x + 0w99  
120      | T.ANDB x => hash2 x + 0w12312      | T.ANDB x => hash2 x + 0w12312
121      | T.ORB x => hash2 x + 0w558      | T.ORB x => hash2 x + 0w558
122      | T.XORB x => hash2 x + 0w234      | T.XORB x => hash2 x + 0w234
# Line 255  Line 258 
258    
259    and eq2((a,b,c),(d,e,f)) = a=d andalso eqRexp(b,e) andalso eqRexp(c,f)    and eq2((a,b,c),(d,e,f)) = a=d andalso eqRexp(b,e) andalso eqRexp(c,f)
260    
261      and eq3((m,a,b,c),(n,d,e,f)) =
262          m=n andalso a=d andalso eqRexp(b,e) andalso eqRexp(c,f)
263    
264    and eqRexp(T.REG(a,b),T.REG(c,d)) = a=c andalso eqCell(b,d)    and eqRexp(T.REG(a,b),T.REG(c,d)) = a=c andalso eqCell(b,d)
265      | eqRexp(T.LI a,T.LI b) = a=b      | eqRexp(T.LI a,T.LI b) = a=b
266      | eqRexp(T.LABEL a,T.LABEL b) = eqLabel(a,b)      | eqRexp(T.LABEL a,T.LABEL b) = eqLabel(a,b)
# Line 264  Line 270 
270      | eqRexp(T.ADD x,T.ADD y) = eq2(x,y)      | eqRexp(T.ADD x,T.ADD y) = eq2(x,y)
271      | eqRexp(T.SUB x,T.SUB y) = eq2(x,y)      | eqRexp(T.SUB x,T.SUB y) = eq2(x,y)
272      | eqRexp(T.MULS x,T.MULS y) = eq2(x,y)      | eqRexp(T.MULS x,T.MULS y) = eq2(x,y)
273      | eqRexp(T.DIVS x,T.DIVS y) = eq2(x,y)      | eqRexp(T.DIVS x,T.DIVS y) = eq3(x,y)
274      | eqRexp(T.QUOTS x,T.QUOTS y) = eq2(x,y)      | eqRexp(T.REMS x,T.REMS y) = eq3(x,y)
     | eqRexp(T.REMS x,T.REMS y) = eq2(x,y)  
275      | eqRexp(T.MULU x,T.MULU y) = eq2(x,y)      | eqRexp(T.MULU x,T.MULU y) = eq2(x,y)
276      | eqRexp(T.DIVU x,T.DIVU y) = eq2(x,y)      | eqRexp(T.DIVU x,T.DIVU y) = eq2(x,y)
277      | eqRexp(T.REMU x,T.REMU y) = eq2(x,y)      | eqRexp(T.REMU x,T.REMU y) = eq2(x,y)
# Line 274  Line 279 
279      | eqRexp(T.ADDT x,T.ADDT y) = eq2(x,y)      | eqRexp(T.ADDT x,T.ADDT y) = eq2(x,y)
280      | eqRexp(T.SUBT x,T.SUBT y) = eq2(x,y)      | eqRexp(T.SUBT x,T.SUBT y) = eq2(x,y)
281      | eqRexp(T.MULT x,T.MULT y) = eq2(x,y)      | eqRexp(T.MULT x,T.MULT y) = eq2(x,y)
282      | eqRexp(T.DIVT x,T.DIVT y) = eq2(x,y)      | eqRexp(T.DIVT x,T.DIVT y) = eq3(x,y)
283      | eqRexp(T.QUOTT x,T.QUOTT y) = eq2(x,y)      | eqRexp(T.REMT x,T.REMT y) = eq3(x,y)
     | eqRexp(T.REMT x,T.REMT y) = eq2(x,y)  
284      | eqRexp(T.ANDB x,T.ANDB y) = eq2(x,y)      | eqRexp(T.ANDB x,T.ANDB y) = eq2(x,y)
285      | eqRexp(T.ORB x,T.ORB y) = eq2(x,y)      | eqRexp(T.ORB x,T.ORB y) = eq2(x,y)
286      | eqRexp(T.XORB x,T.XORB y) = eq2(x,y)      | eqRexp(T.XORB x,T.XORB y) = eq2(x,y)
# Line 477  Line 481 
481          | rexp(T.ADD x) = binary("+",x)          | rexp(T.ADD x) = binary("+",x)
482          | rexp(T.SUB x) = binary("-",x)          | rexp(T.SUB x) = binary("-",x)
483          | rexp(T.MULS x) = two("muls",x)          | rexp(T.MULS x) = two("muls",x)
484          | rexp(T.DIVS x) = two("divs",x)          | rexp(T.DIVS x) = three("divs",x)
485          | rexp(T.QUOTS x) = two("quots",x)          | rexp(T.REMS x) = three("rems",x)
         | rexp(T.REMS x) = two("rems",x)  
486          | rexp(T.MULU x) = two("mulu",x)          | rexp(T.MULU x) = two("mulu",x)
487          | rexp(T.DIVU x) = two("divu",x)          | rexp(T.DIVU x) = two("divu",x)
488          | rexp(T.REMU x) = two("remu",x)          | rexp(T.REMU x) = two("remu",x)
# Line 487  Line 490 
490          | rexp(T.ADDT x) = two("addt",x)          | rexp(T.ADDT x) = two("addt",x)
491          | rexp(T.SUBT x) = two("subt",x)          | rexp(T.SUBT x) = two("subt",x)
492          | rexp(T.MULT x) = two("mult",x)          | rexp(T.MULT x) = two("mult",x)
493          | rexp(T.DIVT x) = two("divt",x)          | rexp(T.DIVT x) = three("divt",x)
494          | rexp(T.QUOTT x) = two("quott",x)          | rexp(T.REMT x) = three("remt",x)
         | rexp(T.REMT x) = two("remt",x)  
495          | rexp(T.ANDB x) = binary("&",x)          | rexp(T.ANDB x) = binary("&",x)
496          | rexp(T.ORB x)  = binary("|",x)          | rexp(T.ORB x)  = binary("|",x)
497          | rexp(T.XORB x) = binary("^",x)          | rexp(T.XORB x) = binary("^",x)
# Line 574  Line 576 
576        (* Auxiliary functions *)        (* Auxiliary functions *)
577        and one(opcode,(t,x)) = opcode^ty t^"("^rexp x^")"        and one(opcode,(t,x)) = opcode^ty t^"("^rexp x^")"
578        and two(opcode,(t,x,y)) = opcode^ty t^pair(x,y)        and two(opcode,(t,x,y)) = opcode^ty t^pair(x,y)
579          and three(opcode,(m,t,x,y)) = opcode^dmr m^ty t^pair(x,y)
580          and dmr T.DIV_TO_ZERO = "{0}"
581            | dmr T.DIV_TO_NEGINF = "{-inf}"
582        and binary(opcode,(t,x,y)) = parenRexp x^" "^opcode^ty t^" "^parenRexp y        and binary(opcode,(t,x,y)) = parenRexp x^" "^opcode^ty t^" "^parenRexp y
583        and unary(opcode,(t,x)) = opcode^ty t^" "^parenRexp x        and unary(opcode,(t,x)) = opcode^ty t^" "^parenRexp x
584        and pair(x,y) = "("^rexp x^","^rexp y^")"        and pair(x,y) = "("^rexp x^","^rexp y^")"

Legend:
Removed from v.1180  
changed lines
  Added in v.1181

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