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 4505 - (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 3906 (* standard names for accessing globals and state variables *)
26 : jhr 3927 val worldVar : CLang.var
27 : jhr 3952 val worldParam : CLang.param
28 : jhr 3908 val globalsVar : CLang.var
29 :     val globalsParam : CLang.param
30 :     val selfVar : CLang.var
31 : jhr 4500 val selfLocalVar : CLang.var
32 : jhr 3908 val selfInVar : CLang.var
33 :     val selfOutVar : CLang.var
34 : jhr 3906
35 : jhr 4505 (* get the strand array struct *)
36 :     val strandArray : CodeGenEnv.t -> CLang.exp
37 :    
38 : jhr 4373 (* the strand type *)
39 :     val strandTyName : string -> string
40 :     val strandTy : string -> CLang.ty
41 : jhr 4469 val localTyName : string -> string (* name of sub-struct that holds local state *)
42 :     val sharedTyName : string -> string (* name of sub-struct that holds shared state *)
43 : jhr 4373
44 : jhr 3931 val inputsTyName : string
45 :     val inputsPtrTy : CLang.ty
46 :    
47 : jhr 4027 (* image type names *)
48 :     val imageTyName : int -> string
49 :     val qImageTyName : int -> string
50 :    
51 : jhr 3918 (* wrapper struct for tensor types (to enable overload resolution) *)
52 : jhr 4026 val tensorStruct : int list -> string
53 :     val tensorTy : int list -> CLang.ty
54 :     val tensorRefStruct : int list -> string
55 :     val tensorRefTy : int list -> CLang.ty
56 : jhr 3918
57 : jhr 3919 (* vector related names *)
58 :     val vecTyName : int -> string
59 :     val vecTy : int -> CLang.ty
60 : jhr 4068 val vscale : int -> string
61 : jhr 3921 val vsum : int -> string
62 : jhr 4056 val vdot : int -> string
63 : jhr 4068 val vclamp : int -> string
64 :     val vlerp : int -> string
65 :     val vceiling : int -> string
66 :     val vfloor : int -> string
67 :     val vround : int -> string
68 :     val vtrunc : int -> string
69 :     val vtoi : int -> string
70 : jhr 3919 val vcons : int -> string
71 :     val vload : int -> string
72 : jhr 3931 val vpack : int -> string
73 : jhr 3919
74 : jhr 4151 (* inside test: args are dim and support *)
75 :     val inside : int * int -> string
76 :    
77 : jhr 3900 end = struct
78 :    
79 :     structure CL = CLang
80 :     structure Env = CodeGenEnv
81 :    
82 : jhr 3996 val diderotNS = "diderot::"
83 :    
84 : jhr 3900 (* the base type of the world struct *)
85 :     val worldBaseTyName = "world_base"
86 :    
87 :     (* the world type *)
88 :     val worldTyName = "world"
89 :     val worldPtrTy = CL.T_Ptr(CL.T_Named worldTyName)
90 :    
91 :     (* the global variables struct *)
92 :     val globalTyName = "globals"
93 :     val globalPtrTy = CL.T_Ptr(CL.T_Named globalTyName)
94 :    
95 :     (* the pointer to the command-line options struct *)
96 :     fun optionsPtrTy env =
97 : jhr 4317 CL.T_Ptr(CL.T_Template("diderot::options", [Env.realTy env, Env.intTy env]))
98 : jhr 3900
99 : jhr 3927 val worldVar = "wrld"
100 : jhr 3952 val worldParam = CL.PARAM([], worldPtrTy, "wrld")
101 : jhr 3917 val globalsVar = "glob"
102 : jhr 3908 val globalsParam = CL.PARAM([], globalPtrTy, globalsVar)
103 :     val selfVar = "self"
104 : jhr 4500 val selfLocalVar = "selfLocal"
105 : jhr 3908 val selfInVar = "selfIn"
106 :     val selfOutVar = "selfOut"
107 : jhr 3906
108 : jhr 4505 fun strandArray env = CL.mkIndirect(CL.mkVar(Env.world env), "_strands")
109 :    
110 : jhr 4373 fun strandTyName s = s ^ "_strand"
111 :     fun strandTy s = CL.T_Named(strandTyName s)
112 : jhr 4469 fun localTyName s = s ^ "_local"
113 :     fun sharedTyName s = s ^ "_shared"
114 : jhr 4373
115 : jhr 3931 val inputsTyName = "cmd_line_inputs"
116 :     val inputsPtrTy = CL.T_Ptr(CL.T_Named inputsTyName)
117 :    
118 : jhr 4027 fun imageTyName d = String.concat["image", Int.toString d, "d"]
119 :     fun qImageTyName d = String.concat[diderotNS, "image", Int.toString d, "d"]
120 :    
121 : jhr 3918 fun tensorStruct shape = "tensor_" ^ String.concatWithMap "_" Int.toString shape
122 :     fun tensorTy shape = CL.T_Named(tensorStruct shape)
123 : jhr 4026 fun tensorRefStruct shape = "tensor_ref_" ^ String.concatWithMap "_" Int.toString shape
124 :     fun tensorRefTy shape = CL.T_Named(tensorRefStruct shape)
125 : jhr 3918
126 : jhr 4068 fun vName name w = name ^ Int.toString w
127 :     val vecTyName = vName "vec"
128 : jhr 3919 fun vecTy w = CL.T_Named(vecTyName w)
129 : jhr 4068 val vscale = vName "vscale"
130 :     val vsum = vName "vsum"
131 :     val vdot = vName "vdot"
132 :     val vclamp = vName "vclamp"
133 :     val vlerp = vName "vlerp"
134 :     val vceiling = vName "vceiling"
135 :     val vfloor = vName "vfloor"
136 :     val vround = vName "vround"
137 :     val vtrunc = vName "vtrunc"
138 :     val vtoi = vName "vtoi"
139 :     val vcons = vName "vcons"
140 :     val vload = vName "vload"
141 :     val vpack = vName "vpack"
142 : jhr 3919
143 : jhr 4151 fun inside (d, s) = String.concat["inside", Int.toString d, "Ds", Int.toString s]
144 :    
145 : jhr 3810 end

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