327 |
val block = CL.mkBlock |
val block = CL.mkBlock |
328 |
fun ifthen ((e, T_Bool), s1) = CL.mkIfThen(e, s1) |
fun ifthen ((e, T_Bool), s1) = CL.mkIfThen(e, s1) |
329 |
fun ifthenelse ((e, T_Bool), s1, s2) = CL.mkIfThenElse(e, s1, s2) |
fun ifthenelse ((e, T_Bool), s1, s2) = CL.mkIfThenElse(e, s1, s2) |
330 |
fun for (init, cond, incr, body) = raise Fail "Stmt.for" |
fun for ((ty, x), (lo, _), (hi, _), body) = CL.mkFor( |
331 |
|
[(cvtTy ty, x, lo)], |
332 |
|
CL.mkBinOp(CL.mkVar x, CL.#<=, hi), |
333 |
|
[CL.mkPostOp(CL.mkVar x, CL.^++)], |
334 |
|
body) |
335 |
(* special Diderot forms *) |
(* special Diderot forms *) |
336 |
fun cons ((T_Vec n, x), args : exp list) = |
fun cons ((T_Vec n, x), args : exp list) = |
337 |
CL.mkAssign(CL.mkVar x, CL.mkApply(RN.mkVec n, List.map #1 args)) |
CL.mkAssign(CL.mkVar x, CL.mkApply(RN.mkVec n, List.map #1 args)) |