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

SCM Repository

[diderot] Diff of /branches/pure-cfg/src/compiler/cl-target/cl-target.sml
ViewVC logotype

Diff of /branches/pure-cfg/src/compiler/cl-target/cl-target.sml

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

revision 1280, Mon Jun 6 17:34:42 2011 UTC revision 1281, Mon Jun 6 18:21:50 2011 UTC
# Line 163  Line 163 
163                  })                  })
164        (* register the global initialization part of a program *)        (* register the global initialization part of a program *)
165            fun globalIndirects (globals,stms) = let            fun globalIndirects (globals,stms) = let
166                  fun getGlobals(CL.D_Var(_,_,globalVar,_)::rest) = CL.mkAssign(CL.mkIndirect(CL.mkVar RN.globalsVarName,globalVar),CL.mkVar globalVar)::getGlobals(rest)                  fun getGlobals (CL.D_Var(_,_,globalVar,_)::rest) =
167                    | getGlobals([]) = []                        CL.mkAssign(CL.mkIndirect(CL.mkVar RN.globalsVarName,globalVar),CL.mkVar globalVar)
168                    | getGlobals(_::rest) = getGlobals(rest)                          ::getGlobals rest
169                      | getGlobals [] = []
170                      | getGlobals (_::rest) = getGlobals rest
171                  in                  in
172                    stms @ getGlobals(globals)                    stms @ getGlobals globals
173                  end                  end
174    
175        (* register the code that is used to register command-line options for input variables *)        (* register the code that is used to register command-line options for input variables *)
# Line 228  Line 230 
230                        CL.mkDecl(CL.T_Array(CL.uint32, SOME nDims), "size", SOME(CL.I_Array sizeInit)),                        CL.mkDecl(CL.T_Array(CL.uint32, SOME nDims), "size", SOME(CL.I_Array sizeInit)),
231                        CL.mkDecl(CL.int32,"numDims",SOME(CL.I_Exp(CL.mkInt(IntInf.fromInt nDims, CL.int32))))                        CL.mkDecl(CL.int32,"numDims",SOME(CL.I_Exp(CL.mkInt(IntInf.fromInt nDims, CL.int32))))
232                      ]                      ]
233                val numStrandsLoopBody = CL.mkExpStm(CL.mkAssignOp(CL.mkVar numStrandsVar, CL.*=,CL.mkSubscript(CL.mkVar "size",CL.mkVar "i")))                val numStrandsLoopBody =
234                        CL.mkExpStm(CL.mkAssignOp(CL.mkVar numStrandsVar, CL.*=,CL.mkSubscript(CL.mkVar "size",CL.mkVar "i")))
235                val numStrandsLoop =  CL.mkFor([(CL.intTy, "i", CL.mkInt(0,CL.intTy))],                val numStrandsLoop =  CL.mkFor([(CL.intTy, "i", CL.mkInt(0,CL.intTy))],
236                      CL.mkBinOp(CL.mkVar "i", CL.#<, CL.mkVar "numDims"),                      CL.mkBinOp(CL.mkVar "i", CL.#<, CL.mkVar "numDims"),
237                      [CL.mkPostOp(CL.mkVar "i", CL.^++)], numStrandsLoopBody)                      [CL.mkPostOp(CL.mkVar "i", CL.^++)], numStrandsLoopBody)
# Line 262  Line 265 
265                                                  CL.mkBlock([CL.mkCall(RN.strandInit name, [CL.mkUnOp(CL.%&,CL.mkSubscript(CL.mkVar "strands",index)),                                                  CL.mkBlock([CL.mkCall(RN.strandInit name, [CL.mkUnOp(CL.%&,CL.mkSubscript(CL.mkVar "strands",index)),
266                                                  CL.mkVar "x", CL.mkVar"y"])])                                                  CL.mkVar "x", CL.mkVar"y"])])
267                                          end                                          end
   
268                                  | mkLoopNest (param::rest,count,nDims) = let                                  | mkLoopNest (param::rest,count,nDims) = let
269                                          val body = mkLoopNest (rest, count + 1,nDims)                                          val body = mkLoopNest (rest, count + 1,nDims)
270                                     in                                     in
# Line 278  Line 280 
280                  in                  in
281                          CL.D_Func(["static"], CL.voidTy, RN.strandInitSetup, params,CL.mkBlock(body))                          CL.D_Func(["static"], CL.voidTy, RN.strandInitSetup, params,CL.mkBlock(body))
282                  end                  end
283    
284          fun genStrandPrint (Strand{name, tyName, state, output, code,...},nDims) = let          fun genStrandPrint (Strand{name, tyName, state, output, code,...},nDims) = let
285              (* the print function *)              (* the print function *)
286                val prFnName = concat[name, "_print"]                val prFnName = concat[name, "_print"]
   
287                val prFn = let                val prFn = let
288                      val params = [                      val params = [
289                            CL.PARAM([], CL.T_Ptr(CL.T_Named "FILE"), "outS"),                            CL.PARAM([], CL.T_Ptr(CL.T_Named "FILE"), "outS"),

Legend:
Removed from v.1280  
changed lines
  Added in v.1281

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