507 |
val env = trLocals (env, locals) |
val env = trLocals (env, locals) |
508 |
fun trStmt (env, stm) = (case stm |
fun trStmt (env, stm) = (case stm |
509 |
of IL.S_Comment text => [CL.mkComment text] |
of IL.S_Comment text => [CL.mkComment text] |
510 |
|
(* |
511 |
| IL.S_LoadImage(lhs, dim, name) => checkSts (fn sts => let |
| IL.S_LoadImage(lhs, dim, name) => checkSts (fn sts => let |
512 |
val lhs = VarToC.lvalueVar (env, lhs) |
val lhs = VarToC.lvalueVar (env, lhs) |
513 |
val imgTy = CL.T_Named(N.imageTy dim) |
val imgTy = CL.T_Named(N.imageTy dim) |
520 |
addrOf lhs |
addrOf lhs |
521 |
])))) |
])))) |
522 |
] end) |
] end) |
523 |
|
*) |
524 |
|
| IL.S_InputImage _ => [] (* FIXME *) |
525 |
|
| IL.S_InputSeq _ => [] (* FIXME *) |
526 |
| _ => [] |
| _ => [] |
527 |
(* end case *)) |
(* end case *)) |
528 |
val stms = List.foldr (fn (stm, stms) => trStmt(env, stm)@stms) [] body |
val stms = List.foldr (fn (stm, stms) => trStmt(env, stm)@stms) [] body |
551 |
| IL.S_Save([x], exp) => trAssign (env, VarToC.lvalueStateVar x, exp) |
| IL.S_Save([x], exp) => trAssign (env, VarToC.lvalueStateVar x, exp) |
552 |
| IL.S_Save(xs, exp) => |
| IL.S_Save(xs, exp) => |
553 |
trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp) |
trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp) |
554 |
|
(* DEPRECATED |
555 |
| IL.S_LoadImage(lhs, dim, name) => checkSts (fn sts => let |
| IL.S_LoadImage(lhs, dim, name) => checkSts (fn sts => let |
556 |
val lhs = VarToC.lvalueVar (env, lhs) |
val lhs = VarToC.lvalueVar (env, lhs) |
557 |
val name = trExp(env, name) |
val name = trExp(env, name) |
565 |
name, addrOf lhs |
name, addrOf lhs |
566 |
])))) |
])))) |
567 |
] end) |
] end) |
568 |
|
*) |
569 |
| IL.S_Input(_, _, _, NONE) => [] |
| IL.S_Input(_, _, _, NONE) => [] |
570 |
| IL.S_Input(lhs, name, _, SOME dflt) => [ |
| IL.S_Input(lhs, name, _, SOME dflt) => [ |
571 |
CL.mkAssign(VarToC.lvalueVar(env, lhs), trExp(env, dflt)) |
CL.mkAssign(VarToC.lvalueVar(env, lhs), trExp(env, dflt)) |
572 |
] |
] |
573 |
|
| IL.S_InputImage _ => [] |
574 |
|
| IL.S_InputSeq _ => [] |
575 |
| IL.S_Exit args => [] |
| IL.S_Exit args => [] |
576 |
| IL.S_Active => [CL.mkReturn(SOME(CL.mkVar N.kActive))] |
| IL.S_Active => [CL.mkReturn(SOME(CL.mkVar N.kActive))] |
577 |
| IL.S_Stabilize => [CL.mkReturn(SOME(CL.mkVar N.kStabilize))] |
| IL.S_Stabilize => [CL.mkReturn(SOME(CL.mkVar N.kStabilize))] |