SCM Repository
Annotation of /branches/vis15/src/compiler/gen/ir/low-ir.in
Parent Directory
|
Revision Log
Revision 3592 - (view) (download)
1 : | jhr | 3592 | (* low-ir.sml |
2 : | jhr | 3461 | * |
3 : | * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu) | ||
4 : | * | ||
5 : | * COPYRIGHT (c) 2015 The University of Chicago | ||
6 : | * All rights reserved. | ||
7 : | * | ||
8 : | jhr | 3475 | * Lower-level version of the Diderot CFG IR |
9 : | jhr | 3461 | * |
10 : | jhr | 3475 | * Note: this file is generated from gen/ir/low-ir.spec and gen/ir/low-ir.in. |
11 : | jhr | 3461 | *) |
12 : | |||
13 : | structure LowOps = | ||
14 : | struct | ||
15 : | |||
16 : | (* required helper functions for types *) | ||
17 : | jhr | 3475 | type ty = LowTypes.ty |
18 : | val samety = LowTypes.same | ||
19 : | val hashty = LowTypes.hash | ||
20 : | val tyToString = LowTypes.toString | ||
21 : | jhr | 3461 | |
22 : | (* required helper functions for type lists *) | ||
23 : | type tys = ty list | ||
24 : | fun sametys (tys1, tys2) = ListPair.allEq samety (tys1, tys2) | ||
25 : | fun hashtys tys = List.foldl (fn (ty, s) => hashty ty + 0w3 * s) 0w0 tys | ||
26 : | fun tysToString tys = String.concat["[", String.concatWith "," (List.map tyToString tys), "]" ] | ||
27 : | |||
28 : | (* required helper functions for the int type *) | ||
29 : | fun sameint (i1 : int, i2) = (i1 = i2) | ||
30 : | fun hashint i = Word.fromInt i | ||
31 : | fun intToString i = Int.toString i | ||
32 : | |||
33 : | (* required helper functions for the string type *) | ||
34 : | fun samestring (s1 : string, s2) = (s1 = s2) | ||
35 : | val hashstring = HashString.hashString | ||
36 : | fun stringToString s = String.concat["\"", s, "\""] | ||
37 : | |||
38 : | (* required helper functions for the mask type *) | ||
39 : | type mask = bool list | ||
40 : | val samemask : (mask * mask -> bool) = (op =) | ||
41 : | fun hashmask m = | ||
42 : | List.foldl (fn (false, w) => w+w | (true, w) => w+w+0w1) | ||
43 : | (Word.fromInt(List.length m)) m | ||
44 : | fun maskToString m = | ||
45 : | String.concat(List.map (fn true => "_" | false => ":") m) | ||
46 : | |||
47 : | (* required helper functions for the index control type type *) | ||
48 : | type idxctl = IndexCtl.ctl | ||
49 : | val sameidxctl = IndexCtl.same | ||
50 : | val hashidxctl = IndexCtl.hash | ||
51 : | val idxctlToString = IndexCtl.toString | ||
52 : | |||
53 : | @BODY@ | ||
54 : | |||
55 : | end | ||
56 : | |||
57 : | jhr | 3475 | structure LowIR = SSAFn( |
58 : | jhr | 3508 | val irName = "low-ir" |
59 : | jhr | 3475 | structure Ty = LowTypes |
60 : | jhr | 3461 | structure Op = LowOps) |
61 : | |||
62 : | jhr | 3475 | structure LowCensus = CensusFn(LowIR) |
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |