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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/mid-to-low/ein-to-scalar.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/mid-to-low/ein-to-scalar.sml

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

revision 3661, Fri Feb 5 00:45:24 2016 UTC revision 3665, Sat Feb 6 16:18:59 2016 UTC
# Line 24  Line 24 
24      structure Mk = MkLowIR      structure Mk = MkLowIR
25      structure IMap = IntRedBlackMap      structure IMap = IntRedBlackMap
26    
     fun indexTensor e = Mk.indexTensor e  
     fun mkOp1 e =  Mk.mkOp1 e  
   
27      fun mapIndex (mapp, id) = (case IMap.find(mapp, id)      fun mapIndex (mapp, id) = (case IMap.find(mapp, id)
28             of SOME x => x             of SOME x => x
29              | NONE => raise Fail(concat["mapIndex(_, V ", Int.toString id, "): out of bounds"])              | NONE => raise Fail(concat["mapIndex(_, V ", Int.toString id, "): out of bounds"])
# Line 70  Line 67 
67                      | E.Delta(i, j) => Mk.delta (avail, mapp, i, j)                      | E.Delta(i, j) => Mk.delta (avail, mapp, i, j)
68                      | E.Epsilon(i, j, k) => Mk.epsilon3 (avail, mapp, i, j, k)                      | E.Epsilon(i, j, k) => Mk.epsilon3 (avail, mapp, i, j, k)
69                      | E.Eps2(i, j) => Mk.epsilon2 (avail, mapp, i, j)                      | E.Eps2(i, j) => Mk.epsilon2 (avail, mapp, i, j)
70                      | E.Tensor(id, ix) =>                      | E.Tensor(id, ix) => Mk.tensorIndex (avail, mapp, List.nth(args, id), ix)
71                          indexTensor (avail, mapp, (params, args, id, ix, Ty.realTy))                      | E.Op1(op1, e1) => let
72                      | E.Op1(E.Neg, e1) =>                          val arg = gen (mapp, e1)
73  (* QUESTION: why not just negate the tensor? *)                          in
74                          Mk.realMul (avail, Mk.intToRealLit (avail, ~1), gen (mapp, e1))                            case op1
75                      | E.Op1(op1, e1) => mkOp1 (op1, gen (mapp, e1))                             of E.Neg => Mk.realNeg (avail, arg)
76                                | _ => raise Fail "FIXME: unimplemented"
77    (*
78                                | E.Exp
79                                | E.Sqrt
80                                | E.Cosine
81                                | E.ArcCosine
82                                | E.Sine
83                                | E.ArcSine
84                                | E.Tangent
85                                | E.ArcTangent
86                                | E.PowInt of int
87                                | E.PowReal of Rational.t
88                                | E.PowEmb of sumrange list * int
89    *)
90                              (* end case *)
91                            end
92                      | E.Op2(E.Sub, e1, e2) => Mk.realSub (avail, gen (mapp, e1), gen (mapp, e2))                      | E.Op2(E.Sub, e1, e2) => Mk.realSub (avail, gen (mapp, e1), gen (mapp, e2))
93                      | E.Opn(E.Add, es) =>                      | E.Opn(E.Add, es) =>
94                          Mk.reduce (avail, Mk.realAdd, List.map (fn e => gen(mapp, e)) es)                          Mk.reduce (avail, Mk.realAdd, List.map (fn e => gen(mapp, e)) es)
# Line 85  Line 98 
98                          gen (mapp, E.Opn(E.Prod, [E.Op2 (E.Div, E.Const 1, e2), e1]))                          gen (mapp, E.Opn(E.Prod, [E.Op2 (E.Div, E.Const 1, e2), e1]))
99                      | E.Op2(E.Div, e1, e2) => Mk.realDiv (avail, gen (mapp, e1), gen (mapp, e2))                      | E.Op2(E.Div, e1, e2) => Mk.realDiv (avail, gen (mapp, e1), gen (mapp, e2))
100                      | E.Sum(x, E.Opn (E.Prod, (E.Img (Vid, _, _) ::E.Krn (Hid, _, _) ::_))) =>                      | E.Sum(x, E.Opn (E.Prod, (E.Img (Vid, _, _) ::E.Krn (Hid, _, _) ::_))) =>
101    (*
102                          FieldToLow.expand (avail, mapp, params, body, args)                          FieldToLow.expand (avail, mapp, params, body, args)
103    *)
104    raise Fail "FIXME: unimplemented"
105                      | E.Sum(sumx, e) =>                      | E.Sum(sumx, e) =>
106                          Mk.reduce (avail, Mk.realAdd, sumCheck (mapp, sumx, e))                          Mk.reduce (avail, Mk.realAdd, sumCheck (mapp, sumx, e))
107                      | _ => raise Fail("unsupported ein-exp: " ^ EinPP.expToString body)                      | _ => raise Fail("unsupported ein-exp: " ^ EinPP.expToString body)

Legend:
Removed from v.3661  
changed lines
  Added in v.3665

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