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

SCM Repository

[diderot] Diff of /branches/vis12-cl/src/compiler/c-util/tree-to-c.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/c-util/tree-to-c.sml

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

revision 1925, Sat Jun 23 14:16:09 2012 UTC revision 1958, Tue Jul 10 13:01:03 2012 UTC
# Line 144  Line 144 
144                  (* end case *))                  (* end case *))
145              | (Op.Dot d, args) => CL.E_Apply(N.dot d, args)              | (Op.Dot d, args) => CL.E_Apply(N.dot d, args)
146              | (Op.MulVecMat(m, n), args) =>              | (Op.MulVecMat(m, n), args) =>
147                  if (1 < m) andalso (m < 4) andalso (m = n)                  if (1 < m) andalso (m <= 4) andalso (m = n)
148                    then CL.E_Apply(N.mulVecMat(m,n), args)                    then CL.E_Apply(N.mulVecMat(m,n), args)
149                    else raise Fail "unsupported vector-matrix multiply"                    else raise Fail "unsupported vector-matrix multiply"
150              | (Op.MulMatVec(m, n), args) =>              | (Op.MulMatVec(m, n), args) =>
151                  if (1 < m) andalso (m < 4) andalso (m = n)                  if (1 < m) andalso (m <= 4) andalso (m = n)
152                    then CL.E_Apply(N.mulMatVec(m,n), args)                    then CL.E_Apply(N.mulMatVec(m,n), args)
153                    else raise Fail "unsupported matrix-vector multiply"                    else raise Fail "unsupported matrix-vector multiply"
154              | (Op.MulMatMat(m, n, p), args) =>              | (Op.MulMatMat(m, n, p), args) =>
155                  if (1 < m) andalso (m < 4) andalso (m = n) andalso (n = p)                  if (1 < m) andalso (m <= 4) andalso (m = n) andalso (n = p)
156                    then CL.E_Apply(N.mulMatMat(m,n,p), args)                    then CL.E_Apply(N.mulMatMat(m,n,p), args)
157                    else raise Fail "unsupported matrix-matrix multiply"                    else raise Fail "unsupported matrix-matrix multiply"
158                | (Op.ColonMul(Ty.TensorTy dd1, Ty.TensorTy dd2), args) =>
159                    CL.E_Apply(N.colonMul(dd1, dd2), args)
160              | (Op.Cross, args) => CL.E_Apply(N.cross(), args)              | (Op.Cross, args) => CL.E_Apply(N.cross(), args)
161              | (Op.Norm(Ty.TensorTy[n]), args) => CL.E_Apply(N.length n, args)              | (Op.Norm(Ty.TensorTy[n]), args) => CL.E_Apply(N.length n, args)
162              | (Op.Norm(Ty.TensorTy[m,n]), args) => CL.E_Apply(N.norm(m,n), args)              | (Op.Norm(Ty.TensorTy[m,n]), args) => CL.E_Apply(N.normMat(m,n), args)
163                | (Op.Norm(Ty.TensorTy[m,n,p]), args) => CL.E_Apply(N.normTen3(m,n,p), args)
164              | (Op.Normalize d, args) => CL.E_Apply(N.normalize d, args)              | (Op.Normalize d, args) => CL.E_Apply(N.normalize d, args)
165              | (Op.Scale(Ty.TensorTy[n]), args) => CL.E_Apply(N.scale n, args)              | (Op.Scale(Ty.TensorTy[n]), args) => CL.E_Apply(N.scale n, args)
166              | (Op.PrincipleEvec ty, _) => raise Fail "PrincipleEvec unimplemented"              | (Op.PrincipleEvec ty, _) => raise Fail "PrincipleEvec unimplemented"
# Line 346  Line 349 
349                  [CL.mkCall(N.scaleMat(m,n),  lhs :: trExps(env, args))]                  [CL.mkCall(N.scaleMat(m,n),  lhs :: trExps(env, args))]
350              | IL.E_Op(Op.MulMatMat(m,n,p), args) =>              | IL.E_Op(Op.MulMatMat(m,n,p), args) =>
351                  [CL.mkCall(N.mulMatMat(m,n,p), lhs :: trExps(env, args))]                  [CL.mkCall(N.mulMatMat(m,n,p), lhs :: trExps(env, args))]
352                | IL.E_Op(Op.MulVecTen3(m, n, p), args) =>
353                    if (1 < m) andalso (m <= 4) andalso (m = n) andalso (n = p)
354                      then [CL.mkCall(N.mulVecTen3(m,n,p), lhs :: trExps(env, args))]
355                      else raise Fail "unsupported vector-tensor multiply"
356                | IL.E_Op(Op.MulTen3Vec(m, n, p), args) =>
357                    if (1 < m) andalso (m <= 4) andalso (m = n) andalso (n = p)
358                      then [CL.mkCall(N.mulTen3Vec(m,n,p), lhs :: trExps(env, args))]
359                      else raise Fail "unsupported tensor-vector multiply"
360                | IL.E_Op(Op.ColonMul(Ty.TensorTy dd1, Ty.TensorTy dd2), args) =>
361                    if (length dd1 + length dd2 > 5)
362                      then [CL.mkCall(N.colonMul(dd1, dd2), lhs :: trExps(env, args))]
363                      else [CL.mkAssign(lhs, trExp(env, rhs))]
364              | IL.E_Op(Op.EigenVals2x2, [m]) => let              | IL.E_Op(Op.EigenVals2x2, [m]) => let
365                  val (m, stms) = expToVar (env, CL.T_Named(N.matTy(2,2)), "m", m)                  val (m, stms) = expToVar (env, CL.T_Named(N.matTy(2,2)), "m", m)
366                  in                  in
# Line 373  Line 388 
388                  [CL.mkCall(N.identityMat n, [lhs])]                  [CL.mkCall(N.identityMat n, [lhs])]
389              | IL.E_Op(Op.Zero(Ty.TensorTy[m,n]), args) =>              | IL.E_Op(Op.Zero(Ty.TensorTy[m,n]), args) =>
390                  [CL.mkCall(N.zeroMat(m,n), [lhs])]                  [CL.mkCall(N.zeroMat(m,n), [lhs])]
391              | IL.E_Op(Op.TensorToWorldSpace(info, ty as Ty.TensorTy[_,_]), args) =>              | IL.E_Op(Op.TensorToWorldSpace(info, ty as Ty.TensorTy(_::_::_)), args) =>
392                  [CL.mkCall(N.toWorldSpace ty, lhs :: trExps(env, args))]                  [CL.mkCall(N.toWorldSpace ty, lhs :: trExps(env, args))]
393              | IL.E_Op(Op.LoadVoxels(info, n), [a]) =>              | IL.E_Op(Op.LoadVoxels(info, n), [a]) =>
394                  if (n > 1)                  if (n > 1)
# Line 428  Line 443 
443                  end                  end
444              | IL.E_State x => (case IL.StateVar.ty x              | IL.E_State x => (case IL.StateVar.ty x
445                   of Ty.TensorTy[n,m] => [CL.mkCall(N.copyMat(n,m), [lhs, VarToC.rvalueStateVar x])]                   of Ty.TensorTy[n,m] => [CL.mkCall(N.copyMat(n,m), [lhs, VarToC.rvalueStateVar x])]
446                    | Ty.TensorTy[n,m,l] => [CL.mkCall(N.copyTen(n,m,l), [lhs, VarToC.rvalueStateVar x])]                    | Ty.TensorTy[n,m,l] => [CL.mkCall(N.copyTen3(n,m,l), [lhs, VarToC.rvalueStateVar x])]
447                    | _ => [CL.mkAssign(lhs, VarToC.rvalueStateVar x)]                    | _ => [CL.mkAssign(lhs, VarToC.rvalueStateVar x)]
448                  (* end case *))                  (* end case *))
449              | IL.E_Var x => (case IL.Var.ty x              | IL.E_Var x => (case IL.Var.ty x
450                   of Ty.TensorTy[n,m] => [CL.mkCall(N.copyMat(n,m), [lhs, VarToC.rvalueVar(env, x)])]                   of Ty.TensorTy[n,m] => [CL.mkCall(N.copyMat(n,m), [lhs, VarToC.rvalueVar(env, x)])]
451                    | Ty.TensorTy[n,m,l] => [CL.mkCall(N.copyTen(n,m,l), [lhs, VarToC.rvalueVar(env, x)])]                    | Ty.TensorTy[n,m,l] => [CL.mkCall(N.copyTen3(n,m,l), [lhs, VarToC.rvalueVar(env, x)])]
452                    | _ => [CL.mkAssign(lhs, VarToC.rvalueVar(env, x))]                    | _ => [CL.mkAssign(lhs, VarToC.rvalueVar(env, x))]
453                  (* end case *))                  (* end case *))
454              | _ => [CL.mkAssign(lhs, trExp(env, rhs))]              | _ => [CL.mkAssign(lhs, trExp(env, rhs))]

Legend:
Removed from v.1925  
changed lines
  Added in v.1958

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