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

SCM Repository

[diderot] Annotation of /branches/vis15/src/compiler/cxx-util/cxx-names.sml
ViewVC logotype

Annotation of /branches/vis15/src/compiler/cxx-util/cxx-names.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3931 - (view) (download)

1 : jhr 3906 (* cxx-names.sml
2 : jhr 3810 *
3 :     * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     *
5 :     * COPYRIGHT (c) 2016 The University of Chicago
6 :     * All rights reserved.
7 :     *)
8 :    
9 : jhr 3906 structure CxxNames : sig
10 : jhr 3810
11 : jhr 3900 (* the base type of the world struct *)
12 :     val worldBaseTyName : string
13 : jhr 3810
14 : jhr 3900 (* the world type *)
15 :     val worldTyName : string
16 :     val worldPtrTy : CLang.ty
17 :    
18 :     (* the global variables struct *)
19 :     val globalTyName : string
20 :     val globalPtrTy : CLang.ty
21 :    
22 :     (* the pointer to the command-line options struct *)
23 :     val optionsPtrTy : CodeGenEnv.t -> CLang.ty
24 :    
25 : jhr 3810 (* Run-time system functions for dynamic sequences *)
26 : jhr 3900 val loadDynSeq : APITypes.t -> string
27 :     val loadDynSeqFromFile : APITypes.t -> string
28 :    
29 : jhr 3906 (* standard names for accessing globals and state variables *)
30 : jhr 3927 val worldVar : CLang.var
31 : jhr 3908 val globalsVar : CLang.var
32 :     val globalsParam : CLang.param
33 :     val selfVar : CLang.var
34 :     val selfInVar : CLang.var
35 :     val selfOutVar : CLang.var
36 : jhr 3906
37 : jhr 3931 val inputsTyName : string
38 :     val inputsPtrTy : CLang.ty
39 :    
40 : jhr 3918 (* wrapper struct for tensor types (to enable overload resolution) *)
41 :     val tensorStruct : int list -> string
42 :     val tensorTy : int list -> CLang.ty
43 :    
44 : jhr 3919 (* vector related names *)
45 :     val vecTyName : int -> string
46 :     val vecTy : int -> CLang.ty
47 : jhr 3921 val vsum : int -> string
48 : jhr 3919 val vcons : int -> string
49 :     val vload : int -> string
50 : jhr 3931 val vpack : int -> string
51 : jhr 3919
52 : jhr 3900 end = struct
53 :    
54 :     structure CL = CLang
55 :     structure Env = CodeGenEnv
56 :    
57 :     (* the base type of the world struct *)
58 :     val worldBaseTyName = "world_base"
59 :    
60 :     (* the world type *)
61 :     val worldTyName = "world"
62 :     val worldPtrTy = CL.T_Ptr(CL.T_Named worldTyName)
63 :    
64 :     (* the global variables struct *)
65 :     val globalTyName = "globals"
66 :     val globalPtrTy = CL.T_Ptr(CL.T_Named globalTyName)
67 :    
68 :     (* the pointer to the command-line options struct *)
69 :     fun optionsPtrTy env =
70 : jhr 3917 CL.T_Ptr(CL.T_Template("diderot::options", [Env.realTy env, Env.intTy env]))
71 : jhr 3900
72 :     (* Run-time system functions for dynamic sequences *)
73 : jhr 3810 (* FIXME: should these be DynSeqLoad<ty>? *)
74 :     fun loadDynSeq ty = (case ty
75 : jhr 3900 of APITypes.BoolTy => "diderot::DynSeqLoadBool"
76 :     | APITypes.IntTy => "diderot::DynSeqLoadInt"
77 :     | APITypes.TensorTy _ => "diderot::DynSeqLoadReal"
78 : jhr 3810 | ty => raise Fail("unsupported sequence type " ^ APITypes.toString ty)
79 :     (* end case *))
80 :    
81 :     fun loadDynSeqFromFile ty = (case ty
82 : jhr 3900 of APITypes.BoolTy => "diderot::DynSeqLoadBoolFromFile"
83 :     | APITypes.IntTy => "diderot::DynSeqLoadIntFromFile"
84 :     | APITypes.TensorTy _ => "diderot::DynSeqLoadRealFromFile"
85 : jhr 3810 | ty => raise Fail("unsupported sequence type " ^ APITypes.toString ty)
86 :     (* end case *))
87 :    
88 : jhr 3927 val worldVar = "wrld"
89 : jhr 3917 val globalsVar = "glob"
90 : jhr 3908 val globalsParam = CL.PARAM([], globalPtrTy, globalsVar)
91 :     val selfVar = "self"
92 :     val selfInVar = "selfIn"
93 :     val selfOutVar = "selfOut"
94 : jhr 3906
95 : jhr 3931 val inputsTyName = "cmd_line_inputs"
96 :     val inputsPtrTy = CL.T_Ptr(CL.T_Named inputsTyName)
97 :    
98 : jhr 3918 fun tensorStruct shape = "tensor_" ^ String.concatWithMap "_" Int.toString shape
99 :     fun tensorTy shape = CL.T_Named(tensorStruct shape)
100 :    
101 : jhr 3919 fun vecTyName w = "vec" ^ Int.toString w
102 :     fun vecTy w = CL.T_Named(vecTyName w)
103 : jhr 3921 fun vsum w = "vsum" ^ Int.toString w
104 : jhr 3919 fun vcons w = "vcons" ^ Int.toString w
105 :     fun vload w = "vload" ^ Int.toString w
106 : jhr 3931 fun vpack w = "vpack" ^ Int.toString w
107 : jhr 3919
108 : jhr 3810 end

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