23 |
|
|
24 |
type env = CLang.typed_var TreeIL.Var.Map.map |
type env = CLang.typed_var TreeIL.Var.Map.map |
25 |
|
|
26 |
|
val empty : env |
27 |
|
|
28 |
val trType : TreeIL.Ty.ty -> CLang.ty |
val trType : TreeIL.Ty.ty -> CLang.ty |
29 |
|
|
30 |
val trBlock : env * TreeIL.block -> CLang.stm |
val trBlock : env * TreeIL.block -> CLang.stm |
35 |
|
|
36 |
val trExp : env * TreeIL.exp -> CLang.exp |
val trExp : env * TreeIL.exp -> CLang.exp |
37 |
|
|
38 |
|
val trAssign : env * CLang.exp * TreeIL.exp -> CLang.stm list |
39 |
|
|
40 |
(* vector indexing support. Arguments are: vector, arity, index *) |
(* vector indexing support. Arguments are: vector, arity, index *) |
41 |
val ivecIndex : CLang.exp * int * int -> CLang.exp |
val ivecIndex : CLang.exp * int * int -> CLang.exp |
42 |
val vecIndex : CLang.exp * int * int -> CLang.exp |
val vecIndex : CLang.exp * int * int -> CLang.exp |
53 |
datatype var = datatype CLang.typed_var |
datatype var = datatype CLang.typed_var |
54 |
type env = CLang.typed_var TreeIL.Var.Map.map |
type env = CLang.typed_var TreeIL.Var.Map.map |
55 |
|
|
56 |
|
val empty = TreeIL.Var.Map.empty |
57 |
|
|
58 |
fun lookup (env, x) = (case V.Map.find (env, x) |
fun lookup (env, x) = (case V.Map.find (env, x) |
59 |
of SOME(V(_, x')) => x' |
of SOME(V(_, x')) => x' |
60 |
| NONE => raise Fail(concat["lookup(_, ", V.name x, ")"]) |
| NONE => raise Fail(concat["lookup(_, ", V.name x, ")"]) |
563 |
| IL.S_Save([x], exp) => trAssign (env, VarToC.lvalueStateVar x, exp) |
| IL.S_Save([x], exp) => trAssign (env, VarToC.lvalueStateVar x, exp) |
564 |
| IL.S_Save(xs, exp) => |
| IL.S_Save(xs, exp) => |
565 |
trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp) |
trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp) |
|
(* DEPRECATED |
|
|
| IL.S_LoadImage(lhs, dim, name) => checkSts (fn sts => let |
|
|
val lhs = VarToC.lvalueVar (env, lhs) |
|
|
val name = trExp(env, name) |
|
|
val imgTy = CL.T_Named(N.imageTy dim) |
|
|
val loadFn = N.loadImage dim |
|
|
in [ |
|
|
CL.mkDecl( |
|
|
CL.T_Named N.statusTy, sts, |
|
|
SOME(CL.I_Exp(CL.E_Apply(loadFn, [ |
|
|
CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"), |
|
|
name, addrOf lhs |
|
|
])))) |
|
|
] end) |
|
|
*) |
|
566 |
| IL.S_LoadNrrd(lhs, Ty.DynSeqTy ty, nrrd) => let |
| IL.S_LoadNrrd(lhs, Ty.DynSeqTy ty, nrrd) => let |
567 |
val lhs = VarToC.lvalueVar (env, lhs) |
val lhs = VarToC.lvalueVar (env, lhs) |
568 |
val (nDims, dimInit, dimExp, elemTy) = (case ty |
val (nDims, dimInit, dimExp, elemTy) = (case ty |
596 |
CL.mkReturn(SOME(CL.mkVar "true"))) |
CL.mkReturn(SOME(CL.mkVar "true"))) |
597 |
] |
] |
598 |
)] end |
)] end |
599 |
| IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) => checkSts (fn sts => let |
| IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) => |
600 |
val lhs = VarToC.lvalueVar (env, lhs) |
[GenLoadNrrd.loadImage (VarToC.lvalueVar (env, lhs), info, CL.E_Str nrrd)] |
|
val name = CL.E_Str nrrd |
|
|
val dim = ImageInfo.dim info |
|
|
val imgTy = CL.T_Named(N.imageTy dim) |
|
|
val loadFn = N.loadImage dim |
|
|
in [ |
|
|
CL.mkDecl( |
|
|
CL.T_Named N.statusTy, sts, |
|
|
SOME(CL.I_Exp(CL.E_Apply(loadFn, [ |
|
|
CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"), |
|
|
name, addrOf lhs |
|
|
])))) |
|
|
] end) |
|
601 |
| IL.S_Input(_, _, _, NONE) => [] |
| IL.S_Input(_, _, _, NONE) => [] |
602 |
| IL.S_Input(lhs, name, _, SOME dflt) => [ |
| IL.S_Input(lhs, name, _, SOME dflt) => [ |
603 |
CL.mkAssign(VarToC.lvalueVar(env, lhs), trExp(env, dflt)) |
CL.mkAssign(VarToC.lvalueVar(env, lhs), trExp(env, dflt)) |