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

SCM Repository

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

Diff of /branches/vis15/src/compiler/low-opt/low-contract.sml

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

revision 3747, Tue Apr 12 12:03:49 2016 UTC revision 3799, Mon May 2 22:04:19 2016 UTC
# Line 21  Line 21 
21      structure ST = Stats      structure ST = Stats
22    
23    (********** Counters for statistics **********)    (********** Counters for statistics **********)
24      val cntAddNeg               = ST.newCounter "low-opt:add-neg"      val cntAddNeg               = ST.newCounter "low-contract:add-neg"
25      val cntSubNeg               = ST.newCounter "low-opt:sub-neg"      val cntSubNeg               = ST.newCounter "low-contract:sub-neg"
26      val cntSubSame              = ST.newCounter "low-opt:sub-same"      val cntSubSame              = ST.newCounter "low-contract:sub-same"
27      val cntNegNeg               = ST.newCounter "low-opt:neg-neg"      val cntNegNeg               = ST.newCounter "low-contract:neg-neg"
28      val cntIntToReal            = ST.newCounter "low-opt:int-to-real"      val cntIntToReal            = ST.newCounter "low-contract:int-to-real"
29      val cntUnused               = ST.newCounter "low-opt:unused"      val cntTensorIndex          = ST.newCounter "low-contract:tensor-index"
30        val cntProjectLast          = ST.newCounter "low-contract:project-last"
31        val cntUnused               = ST.newCounter "low-contract:unused"
32      val firstCounter            = cntAddNeg      val firstCounter            = cntAddNeg
33      val lastCounter             = cntUnused      val lastCounter             = cntUnused
34    
# Line 85  Line 87 
87                          SOME[(lhs, IR.LIT(Literal.Real(RealLit.fromInt n)))])                          SOME[(lhs, IR.LIT(Literal.Real(RealLit.fromInt n)))])
88                    | _ => NONE                    | _ => NONE
89                  (* end case *))                  (* end case *))
90                | (Op.TensorIndex(Ty.TensorTy dims, idxs), [t]) => let
91                    fun get ([], [], x) = (
92                          SOME[(lhs, IR.VAR(use x))])
93                      | get (ix::ixs, d::ds, x) = (case V.getDef x
94                           of IR.CONS(ys, _) => get(ixs, ds, List.nth(ys, ix))
95                            | _ => SOME[(lhs, IR.OP(Op.TensorIndex(Ty.tensorTy ds, ix::ixs), [use x]))]
96                          (* end case *))
97                      | get _ = raise Fail "malformed TensorIndex"
98                    in
99                      case V.getDef t
100                       of IR.CONS _ => (ST.tick cntTensorIndex; decUse t; get(idxs, dims, t))
101                        | _ => NONE
102                      (* end case *)
103                    end
104                | (Op.ProjectLast(Ty.TensorTy dims, idxs), [t]) => let
105                    fun get ([], [_], x) = (
106                          SOME[(lhs, IR.VAR(use x))])
107                      | get (ix::ixs, d::ds, x) = (case V.getDef x
108                           of IR.CONS(ys, _) => get(ixs, ds, List.nth(ys, ix))
109                            | _ => SOME[(lhs, IR.OP(Op.ProjectLast(Ty.tensorTy ds, ix::ixs), [use x]))]
110                          (* end case *))
111                      | get _ = raise Fail "malformed ProjectLast"
112                    in
113                      case V.getDef t
114                       of IR.CONS _ => (ST.tick cntProjectLast; decUse t; get(idxs, dims, t))
115                        | _ => NONE
116                      (* end case *)
117                    end
118              | _ => NONE              | _ => NONE
119            (* end case *))            (* end case *))
120        | doAssign _ = NONE        | doAssign _ = NONE

Legend:
Removed from v.3747  
changed lines
  Added in v.3799

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