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

SCM Repository

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

Diff of /branches/vis15/src/compiler/low-to-tree/low-to-tree.sml

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

revision 3828, Thu May 5 19:55:46 2016 UTC revision 3829, Thu May 5 21:05:37 2016 UTC
# Line 17  Line 17 
17      structure SrcIR = LowIR      structure SrcIR = LowIR
18      structure DstIR = TreeIR      structure DstIR = TreeIR
19    
20      fun trOp () = (case rator      fun cvtScalarTy SrcTy.BoolTy = DstTy.BoolTy
21             of SrcOp.IAdd        | cvtScalarTy SrcTy.IntTy = DstTy.IntTy
22              | SrcOp.ISub        | cvtScalarTy (SrcTy.TensorTy[]) = DstTy.RealTy
23              | SrcOp.IMul        | cvtScalarTy ty = raise Fail(concat["cvtScalarTy(", SrcTy.toString ty, ")"])
24              | SrcOp.IDiv  
25              | SrcOp.IMod      fun trOp (lhs, rator, args) = let
26              | SrcOp.INeg            fun bindOp rator = bind (lhs, DstIR.E_Op(rator, List.map ?? args))
27              | SrcOp.RAdd            fun binVOp rator = let
28              | SrcOp.RSub                (* convert a list of LowIR variables, each of which are mapped
29              | SrcOp.RMul                 * to lists of of vector expressions, to a list of list of expressions
30              | SrcOp.RDiv                 *)
31              | SrcOp.RNeg                  val argLists = ??
32              | SrcOp.LT ty =>                  val exps = ListPair.map
33              | SrcOp.LTE ty =>                        (fn (w, args) => DstIR.E_Op(rator w, args))
34              | SrcOp.EQ ty =>                          (argLists, pieces)
35              | SrcOp.NEQ ty =>                  in
36              | SrcOp.GT ty =>                    ??
37              | SrcOp.GTE ty =>                  end
38              | SrcOp.Not            in
39              | SrcOp.Abs ty =>              case rator
40              | SrcOp.Max ty =>               of SrcOp.IAdd => bindOp DstOp.IAdd
41              | SrcOp.Min ty =>                | SrcOp.ISub => bindOp DstOp.ISub
42              | SrcOp.Clamp ty =>                | SrcOp.IMul => bindOp DstOp.IMul
43              | SrcOp.Lerp ty =>                | SrcOp.IDiv => bindOp DstOp.IDiv
44              | SrcOp.VAdd of int                | SrcOp.IMod => bindOp DstOp.IMod
45              | SrcOp.VSub of int                | SrcOp.INeg => bindOp DstOp.INeg
46              | SrcOp.VScale of int                | SrcOp.RAdd => bindOp DstOp.RAdd
47              | SrcOp.VMul of int                | SrcOp.RSub => bindOp DstOp.RSub
48              | SrcOp.VNeg of int                | SrcOp.RMul => bindOp DstOp.RMul
49              | SrcOp.VSum of int                | SrcOp.RDiv => bindOp DstOp.RDiv
50                  | SrcOp.RNeg => bindOp DstOp.RNeg
51                  | SrcOp.LT ty => bindOp (DstOp.LT (cvtScalarTy ty))
52                  | SrcOp.LTE ty => bindOp (DstOp.LTE (cvtScalarTy ty))
53                  | SrcOp.EQ ty => bindOp (DstOp.EQ (cvtScalarTy ty))
54                  | SrcOp.NEQ ty => bindOp (DstOp.NEQ (cvtScalarTy ty))
55                  | SrcOp.GT ty => bindOp (DstOp.GT (cvtScalarTy ty))
56                  | SrcOp.GTE ty => bindOp (DstOp.GTE (cvtScalarTy ty))
57                  | SrcOp.Not => bindOp DstOp.Not
58                  | SrcOp.Abs ty => bindOp (DstOp.Abs (cvtScalarTy ty))
59                  | SrcOp.Max ty => bindOp (DstOp.Max (cvtScalarTy ty))
60                  | SrcOp.Min ty => bindOp (DstOp.Min (cvtScalarTy ty))
61                  | SrcOp.Clamp(SrcTy.TensorTy[n]) =>
62                  | SrcOp.Clamp ty => bindOp (DstOp.Clamp (cvtScalarTy ty))
63                  | SrcOp.Lerp(SrcTy.TensorTy[n]) =>
64                  | SrcOp.Lerp ty => bindOp (DstOp.Lerp (cvtScalarTy ty))
65                  | SrcOp.VAdd _ => bindVOp DstOp.VAdd
66                  | SrcOp.VSub _ => bindVOp DstOp.VSub
67                  | SrcOp.VScale _ => bindVOp DstOp.VScale
68                  | SrcOp.VMul _ => bindVOp DstOp.VMul
69                  | SrcOp.VNeg _ => bindVOp DstOp.VNeg
70                  | SrcOp.VSum _ => bindVOp DstOp.VSum
71              | SrcOp.VProj of int * int              | SrcOp.VProj of int * int
72              | SrcOp.TensorIndex of ty * shape              | SrcOp.TensorIndex of ty * shape
73              | SrcOp.ProjectLast of ty * shape              | SrcOp.ProjectLast of ty * shape
# Line 64  Line 85 
85              | SrcOp.Range              | SrcOp.Range
86              | SrcOp.Length ty =>              | SrcOp.Length ty =>
87              | SrcOp.SphereQuery of ty * ty              | SrcOp.SphereQuery of ty * ty
88              | SrcOp.Sqrt                | SrcOp.Sqrt => bindOp DstOp.Sqrt
89              | SrcOp.Cos                | SrcOp.Cos => bindOp DstOp.Cos
90              | SrcOp.ArcCos                | SrcOp.ArcCos => bindOp DstOp.ArcCos
91              | SrcOp.Sin                | SrcOp.Sin => bindOp DstOp.Sin
92              | SrcOp.ArcSin                | SrcOp.ArcSin => bindOp DstOp.ArcSin
93              | SrcOp.Tan                | SrcOp.Tan => bindOp DstOp.Tan
94              | SrcOp.ArcTan                | SrcOp.ArcTan => bindOp DstOp.ArcTan
95                  | SrcOp.Ceiling 1 => bindOp (DstOp.Ceiling 1)
96              | SrcOp.Ceiling of int              | SrcOp.Ceiling of int
97                  | SrcOp.Floor 1 => bindOp (DstOp.Floor 1)
98              | SrcOp.Floor of int              | SrcOp.Floor of int
99                  | SrcOp.Round 1 => bindOp (DstOp.Floor 1)
100              | SrcOp.Round of int              | SrcOp.Round of int
101                  | SrcOp.Trunc 1 => bindOp (DstOp.Trunc 1)
102              | SrcOp.Trunc of int              | SrcOp.Trunc of int
103              | SrcOp.IntToReal                | SrcOp.IntToReal => bindOp SrcOp.IntToReal
104              | SrcOp.RealToInt of int              | SrcOp.RealToInt of int
105              | SrcOp.R_All ty =>              | SrcOp.R_All ty =>
106              | SrcOp.R_Exists ty =>              | SrcOp.R_Exists ty =>
# Line 94  Line 119 
119              | SrcOp.LoadSeq of ty * string              | SrcOp.LoadSeq of ty * string
120              | SrcOp.LoadImage of ty * string              | SrcOp.LoadImage of ty * string
121              | SrcOp.Print of tys              | SrcOp.Print of tys
122              | SrcOp.MathFn of MathFns.t                | SrcOp.MathFn f => bindOp (DstOp.MathFn f)
123            (* end case *))                | _ => (* error *)
124                (* end case *)
125              end
126    
127    end    end

Legend:
Removed from v.3828  
changed lines
  Added in v.3829

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