Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/vis12/src/compiler/simplify/simple.sml
ViewVC logotype

Diff of /branches/vis12/src/compiler/simplify/simple.sml

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

revision 2016, Tue Oct 9 03:22:30 2012 UTC revision 2219, Tue Feb 26 14:18:17 2013 UTC
# Line 19  Line 19 
19          inputs : (var * Types.ty Inputs.input) list,          inputs : (var * Types.ty Inputs.input) list,
20          globals : var list,          globals : var list,
21          globalInit : block,          globalInit : block,
22            funcs : func list,
23          strands : strand list,          strands : strand list,
24          init : init                     (* block evaluates any vars used in init *)          init : init                     (* block evaluates any vars used in init *)
25        }        }
26    
27        and func = Func of {
28            f : var,
29            params : var list,
30            body : block
31          }
32    
33      and init = Initially of {      and init = Initially of {
34          isArray : bool,          isArray : bool,
35          rangeInit : block,          rangeInit : block,
# Line 36  Line 43 
43          args : var list          args : var list
44        }        }
45    
46    (* do we use this?
47      and iter = I_Range of {      and iter = I_Range of {
48          rangeInit : block,          rangeInit : block,
49          param : var,          param : var,
50          lo : var,          lo : var,
51          hi : var          hi : var
52        }        }
53    *)
54    
55      and strand = Strand of {      and strand = Strand of {
56          name : Atom.atom,          name : Atom.atom,
# Line 64  Line 73 
73        | S_New of Atom.atom * var list        | S_New of Atom.atom * var list
74        | S_Die        | S_Die
75        | S_Stabilize        | S_Stabilize
76          | S_Return of var
77        | S_Print of var list        | S_Print of var list
78    
79      and exp      and exp
# Line 75  Line 85 
85        | E_Seq of var list        | E_Seq of var list
86        | E_Slice of var * var option list * Types.ty             (* tensor slicing *)        | E_Slice of var * var option list * Types.ty             (* tensor slicing *)
87        | E_Coerce of {srcTy : Types.ty, dstTy : Types.ty, x : var}        | E_Coerce of {srcTy : Types.ty, dstTy : Types.ty, x : var}
88          | E_LoadSeq of Types.ty * string
89          | E_LoadImage of Types.ty * string * ImageInfo.info
90    
91      fun typeOf (E_Var x) = Var.monoTypeOf x      fun typeOf (E_Var x) = Var.monoTypeOf x
92        | typeOf (E_Lit lit) = (case lit        | typeOf (E_Lit lit) = (case lit
# Line 90  Line 102 
102            val d = List.length xs + 1            val d = List.length xs + 1
103            val ty = Var.monoTypeOf x            val ty = Var.monoTypeOf x
104            in            in
105              case ty              case TypeUtil.pruneHead ty
106               of Types.T_Tensor shape => Types.T_Tensor(Types.shapeExt(shape, Types.DimConst d))               of Types.T_Tensor shape => Types.T_Tensor(Types.shapeExt(shape, Types.DimConst d))
107                | _ => raise Fail "element of tensor construction not tensor"                | _ => raise Fail(concat[
108                        "element of tensor construction is ", TypeUtil.toString ty, ", expected tensor"
109                      ])
110              (* end case *)              (* end case *)
111            end            end
112        | typeOf (E_Seq[]) = raise Fail "empty sequence not supported yet"        | typeOf (E_Seq[]) = raise Fail "empty sequence not supported yet"
113        | typeOf (E_Seq(x::xs)) = let        | typeOf (E_Seq(x::xs)) = let
114            val d = List.length xs + 1            val d = List.length xs + 1
115            val ty = Var.monoTypeOf x            val ty = TypeUtil.pruneHead(Var.monoTypeOf x)
116            in            in
117              Types.T_Sequence(ty, Types.DimConst d)              Types.T_Sequence(ty, Types.DimConst d)
118            end            end
119        | typeOf (E_Slice(_, _, ty)) = ty        | typeOf (E_Slice(_, _, ty)) = ty
120        | typeOf (E_Coerce{dstTy, ...}) = dstTy        | typeOf (E_Coerce{dstTy, ...}) = dstTy
121          | typeOf (E_LoadSeq(ty, _)) = ty
122          | typeOf (E_LoadImage(ty, _, _)) = ty
123    
124    end    end

Legend:
Removed from v.2016  
changed lines
  Added in v.2219

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