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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/cfg-ir/ssa-fn.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/cfg-ir/ssa-fn.sml

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

revision 4377, Sat Aug 6 16:33:53 2016 UTC revision 4378, Mon Aug 8 15:20:44 2016 UTC
# Line 121  Line 121 
121        | SEQ of var list * Ty.ty         (* sequence-value construction *)        | SEQ of var list * Ty.ty         (* sequence-value construction *)
122        | EINAPP of Ein.ein * var list        | EINAPP of Ein.ein * var list
123        | APPLY of func * var list        (* function application *)        | APPLY of func * var list        (* function application *)
124        | MAPREDUCE of {                  (* map-reduce statement *)        | MAPREDUCE of (Reductions.t * func * var list) list
125              reds : Reductions.t list,   (* the reduction operators (one per result) *)                                          (* parallel map-reduce *)
             mapf : func,                (* the map operation *)  
             args : var list             (* the arguments to the map; the first arg will be the *)  
                                         (* sequence of strands. *)  
           }  
126    
127      and var = V of {      and var = V of {
128          name : string,                  (* name *)          name : string,                  (* name *)
# Line 432  Line 428 
428                  | SEQ(xs, _) => xs                  | SEQ(xs, _) => xs
429                  | EINAPP(_, xs) => xs                  | EINAPP(_, xs) => xs
430                  | APPLY(_, xs) => xs                  | APPLY(_, xs) => xs
431                  | MAPREDUCE{args, ...} => args                  | MAPREDUCE mrs => List.foldr (fn ((_, _, args), xs) => args@xs) [] mrs
432                (* end case *))                (* end case *))
433    
434          fun map f = let          fun map f = let
# Line 447  Line 443 
443                        | SEQ(xs, ty) => SEQ(List.map f xs, ty)                        | SEQ(xs, ty) => SEQ(List.map f xs, ty)
444                        | EINAPP(ein, xs) => EINAPP(ein, List.map f xs)                        | EINAPP(ein, xs) => EINAPP(ein, List.map f xs)
445                        | APPLY(g, xs) => APPLY(g, List.map f xs)                        | APPLY(g, xs) => APPLY(g, List.map f xs)
446                        | MAPREDUCE{reds, mapf, args} =>                        | MAPREDUCE mrs =>
447                            MAPREDUCE{reds = reds, mapf = mapf, args = List.map f args}                            MAPREDUCE(List.map (fn (r, g, xs) => (r, g, List.map f xs)) mrs)
448                      (* end case *))                      (* end case *))
449                in                in
450                  mapf                  mapf
# Line 466  Line 462 
462                        | SEQ(xs, _) => List.app f xs                        | SEQ(xs, _) => List.app f xs
463                        | EINAPP(_, xs) => List.app f xs                        | EINAPP(_, xs) => List.app f xs
464                        | APPLY(_, xs) => List.app f xs                        | APPLY(_, xs) => List.app f xs
465                        | MAPREDUCE{args, ...} => List.app f args                        | MAPREDUCE mrs => List.app (fn (_, _, xs) => List.app f xs) mrs
466                      (* end case *))                      (* end case *))
467                in                in
468                  appf                  appf
# Line 499  Line 495 
495                        Func.toString f, " (",                        Func.toString f, " (",
496                        String.concatWithMap "," Var.toString xs, ")"                        String.concatWithMap "," Var.toString xs, ")"
497                      ]                      ]
498                  | MAPREDUCE{reds, mapf, args} => String.concat [                  | MAPREDUCE[(r, f, args)] => String.concat [
499                        "REDUCE (", String.concatWithMap "," Reductions.toString reds,                        Reductions.toString r, "(MAP ", Func.toString f, " (",
500                        ") MAP ", Func.toString mapf, " (",                        String.concatWithMap "," Var.toString args, "))"
501                        String.concatWithMap "," Var.toString args, ")"                      ]
502                    | MAPREDUCE mrs => let
503                        fun toS (r, f, args) = String.concat [
504                                Reductions.toString r, "(MAP ", Func.toString f, " (",
505                                String.concatWithMap "," Var.toString args, "))"
506                      ]                      ]
507                        in
508                          String.concat ["{ ", String.concatWithMap " | " toS mrs, " }"]
509                        end
510                (* end case *))                (* end case *))
511        end        end
512    

Legend:
Removed from v.4377  
changed lines
  Added in v.4378

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