Home My Page Projects Code Snippets Project Openings diderot

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/high-to-mid/high-to-mid.sml
 [diderot] / branches / vis15 / src / compiler / high-to-mid / high-to-mid.sml

Diff of /branches/vis15/src/compiler/high-to-mid/high-to-mid.sml

revision 3695, Mon Mar 21 15:26:49 2016 UTC revision 3739, Sat Apr 9 01:36:37 2016 UTC
# Line 96  Line 96
96                    val t = DstIR.Var.new("one", DstTy.realTy)                    val t = DstIR.Var.new("one", DstTy.realTy)
97                    in [                    in [
98                      (t, DstIR.LIT(Literal.Real(RealLit.one))),                      (t, DstIR.LIT(Literal.Real(RealLit.one))),
99  (* FIXME: shouldn't be IDiv; should be real division! *)                      (y, DstIR.EINAPP(MkOperators.divRR, [t, x]))
(y, DstIR.OP(DstOp.IDiv, [t, x]))
100                    ] end                    ] end
101  (* FIXME: shouldn't be IMul; should be real multiplication! *)                | SOME 2 => [(y, DstIR.EINAPP(MkOperators.mulRR, [x, x]))]
| SOME 2 => [(y, DstIR.OP(DstOp.IMul, [x, x]))]
102  (* FIXME: expand into multiplications  (* FIXME: expand into multiplications
103                | SOME n =>                | SOME n =>
104  *) | SOME _ => pow()  *) | SOME _ => pow()
# Line 115  Line 113
113                        val pos = Env.rename (env, pos)                        val pos = Env.rename (env, pos)
114                        val img = Env.rename (env, img)                        val img = Env.rename (env, img)
115                        val s = Kernel.support h                        val s = Kernel.support h
116                        val (_, x, code) = CoordSpaceTransform.worldToImage{info = v, img = img, pos = pos}                        val (x, code) = let
117                                val avail = AvailRHS.new()
118                                val (_, x) = CoordSpaceTransform.worldToImage{
119                                        avail = avail, info = v, img = img, pos = pos
120                                      }
121                        in                        in
122                          code @ [(result, DstIR.OP(DstOp.Inside(v, s), [x, img]))]                                (x, AvailRHS.getAssignments avail)
123                                end
124                          val code = (result, DstIR.OP(DstOp.Inside(v, s), [x, img])) :: code
125                          in
126                            List.rev code
127                        end                        end
128                    | _ => raise Fail "bogus kernel binding"                    | _ => raise Fail "bogus kernel binding"
129                  (* end case *))                  (* end case *))
# Line 209  Line 215
215                     of [pos, fld] => expandInside(env, y, pos, fld)                     of [pos, fld] => expandInside(env, y, pos, fld)
216                    (* end case *))                    (* end case *))
217                | SrcOp.ImageDim(info, i) => assign (DstOp.ImageDim(info, i))                | SrcOp.ImageDim(info, i) => assign (DstOp.ImageDim(info, i))
218                | SrcOp.BorderCtlDefault info => (case args                | SrcOp.BorderCtlDefault info => assign (DstOp.BorderCtlDefault info)
219                     of [x, _] => [(y, DstIR.VAR(Env.rename(env, x)))]                | SrcOp.BorderCtlClamp info => assign (DstOp.BorderCtlDefault info)
220                    (* end case *))                | SrcOp.BorderCtlMirror info => assign (DstOp.BorderCtlDefault info)
221                | SrcOp.BorderCtlClamp info => copy()                | SrcOp.BorderCtlWrap info => assign (DstOp.BorderCtlDefault info)
| SrcOp.BorderCtlMirror info => copy()
| SrcOp.BorderCtlWrap info => copy()