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

SCM Repository

[diderot] Diff of /branches/pure-cfg/src/compiler/translate/translate-basis.sml
ViewVC logotype

Diff of /branches/pure-cfg/src/compiler/translate/translate-basis.sml

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

revision 1508, Wed Sep 21 21:23:18 2011 UTC revision 1521, Mon Oct 10 14:19:33 2011 UTC
# Line 61  Line 61 
61    
62      fun kernel h (y, [], []) = assign(y, Op.Kernel(h, 0), [])      fun kernel h (y, [], []) = assign(y, Op.Kernel(h, 0), [])
63    
64      (* utility function for synthesizing eigenvector/eigenvalue code *)
65        fun eigen (rator, dim, i) = let
66              val tplTy = DstTy.TupleTy[
67                      DstTy.SeqTy(DstTy.realTy, dim),
68                      DstTy.SeqTy(DstTy.vec2Ty, dim)
69                    ]
70              in
71                fn (y, _, [m]) => let
72                    val tpl = IL.Var.new("tpl", tplTy)
73                    in [
74                      (tpl, IL.OP(rator, [m])),
75                      (y, IL.OP(Op.Select(tplTy, i), [tpl]))
76                    ] end
77              end
78    
79    (* build a table that maps Basis variables to their translation functions *)    (* build a table that maps Basis variables to their translation functions *)
80      val tbl : ((IL.var * Ty.meta_var list * IL.var list) -> IL.assign list) VTbl.hash_table = let      val tbl : ((IL.var * Ty.meta_var list * IL.var list) -> IL.assign list) VTbl.hash_table = let
81            val tbl = VTbl.mkTable (128, Fail "Translate table")            val tbl = VTbl.mkTable (128, Fail "Translate table")
# Line 177  Line 192 
192                                              (t3, IL.OP(Op.Div DstTy.realTy, [t1, t2])),                                              (t3, IL.OP(Op.Div DstTy.realTy, [t1, t2])),
193                                              (y,  IL.OP(Op.Lerp(shapeVarToTensor sv), [a, b, t3]))                                              (y,  IL.OP(Op.Lerp(shapeVarToTensor sv), [a, b, t3]))
194                                            ] end),                                            ] end),
195                  (BV.evals2x2,           fn _ => raise Fail "evals2x2 not implemented yet"), (* FIXME *)                  (BV.evals2x2,           eigen (Op.Eigen2x2, 2, 1)),
196                  (BV.evals3x3,           fn _ => raise Fail "evals3x3 not implemented yet"), (* FIXME *)                  (BV.evals3x3,           eigen (Op.Eigen3x3, 3, 1)),
197                  (BV.evecs2x2,           fn _ => raise Fail "evecs2x2 not implemented yet"), (* FIXME *)                  (BV.evecs2x2,           eigen (Op.Eigen2x2, 2, 2)),
198                  (BV.evecs3x3,           fn _ => raise Fail "evecs3x3 not implemented yet"), (* FIXME *)                  (BV.evecs3x3,           eigen (Op.Eigen3x3, 3, 2)),
199                  (BV.fn_max,             simpleOp Op.Max),                  (BV.fn_max,             simpleOp Op.Max),
200                  (BV.fn_min,             simpleOp Op.Min),                  (BV.fn_min,             simpleOp Op.Min),
201                  (BV.fn_modulate,        vectorOp Op.Mul),                  (BV.fn_modulate,        vectorOp Op.Mul),
# Line 205  Line 220 
220                                            assign(y, Op.Zero(shapeVarToTensor sv), [])),                                            assign(y, Op.Zero(shapeVarToTensor sv), [])),
221                  (BV.subscript,          fn (y, [tv, dv], args) =>                  (BV.subscript,          fn (y, [tv, dv], args) =>
222                                            assign(y,                                            assign(y,
223                                              Op.Subscript(DstTy.SeqTy(pruneTy(MV.toType tv), pruneDim(MV.toDim dv))),                                              Op.Index(DstTy.SeqTy(pruneTy(MV.toType tv), pruneDim(MV.toDim dv))),
224                                              args))                                              args))
225                ];                ];
226              tbl              tbl

Legend:
Removed from v.1508  
changed lines
  Added in v.1521

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