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 1308, Sat Jun 11 14:21:07 2011 UTC revision 1309, Sat Jun 11 14:25:12 2011 UTC
# Line 419  Line 419 
419                  globalBufferDecl :: globalBuffer :: genDataBuffers(globals,contextVar,errVar)                  globalBufferDecl :: globalBuffer :: genDataBuffers(globals,contextVar,errVar)
420                end                end
421    
   
422  (* generates the kernel arguments for the image data *)  (* generates the kernel arguments for the image data *)
423          fun genGlobalArguments(globals,count,kernelVar,errVar) = let          fun genGlobalArguments(globals,count,kernelVar,errVar) = let
424          val globalArgument = CL.mkExpStm(CL.mkAssignOp(CL.mkVar errVar,CL.|=,CL.mkApply("clSetKernelArg",          val globalArgument = CL.mkExpStm(CL.mkAssignOp(CL.mkVar errVar,CL.|=,
425                  CL.mkApply("clSetKernelArg",
426                                                                  [CL.mkVar kernelVar,                                                                  [CL.mkVar kernelVar,
427                                                                   CL.mkPostOp(CL.E_Var count, CL.^++),                                                                   CL.mkPostOp(CL.E_Var count, CL.^++),
428                                                                   CL.mkApply("sizeof",[CL.mkVar "cl_mem"]),                                                                   CL.mkApply("sizeof",[CL.mkVar "cl_mem"]),
429                                                                   CL.mkUnOp(CL.%&,CL.mkVar(concat[RN.globalsVarName,"_cl"]))])))                                                                   CL.mkUnOp(CL.%&,CL.mkVar(concat[RN.globalsVarName,"_cl"]))])))
   
430          fun genDataArguments([],_,_,_) = []          fun genDataArguments([],_,_,_) = []
431            | genDataArguments((var,nDims)::globals,count,kernelVar,errVar) =            | genDataArguments((var,nDims)::globals,count,kernelVar,errVar) =
432                  CL.mkExpStm(CL.mkAssignOp(CL.mkVar errVar,CL.|=,
433                  CL.mkExpStm(CL.mkAssignOp(CL.mkVar errVar,CL.|=, CL.mkApply("clSetKernelArg",                  CL.mkApply("clSetKernelArg",
434                                  [CL.mkVar kernelVar,                                  [CL.mkVar kernelVar,
435                                   CL.mkPostOp(CL.E_Var count, CL.^++),                                   CL.mkPostOp(CL.E_Var count, CL.^++),
436                                   CL.mkApply("sizeof",[CL.mkVar "cl_mem"]),                                   CL.mkApply("sizeof",[CL.mkVar "cl_mem"]),
437                                   CL.mkUnOp(CL.%&,CL.mkVar(RN.addBufferSuffix var))])))::                                   CL.mkUnOp(CL.%&,CL.mkVar(RN.addBufferSuffix var))])))::
438                  CL.mkExpStm(CL.mkAssignOp(CL.mkVar errVar,CL.|=,
439                          CL.mkExpStm(CL.mkAssignOp(CL.mkVar errVar,CL.|=,CL.mkApply("clSetKernelArg",                  CL.mkApply("clSetKernelArg",
440                                  [CL.mkVar kernelVar,                                  [CL.mkVar kernelVar,
441                                   CL.mkPostOp(CL.E_Var count, CL.^++),                                   CL.mkPostOp(CL.E_Var count, CL.^++),
442                                   CL.mkApply("sizeof",[CL.mkVar "cl_mem"]),                                   CL.mkApply("sizeof",[CL.mkVar "cl_mem"]),
443                                   CL.mkUnOp(CL.%&,CL.mkVar(RN.addBufferSuffixData var))]))):: genDataArguments (globals,count,kernelVar,errVar)                     CL.mkUnOp(CL.%&,CL.mkVar(RN.addBufferSuffixData var))]))) ::
444                  genDataArguments (globals,count,kernelVar,errVar)
445          in          in
446              globalArgument :: genDataArguments(globals, count, kernelVar, errVar)
                 [globalArgument] @ genDataArguments(globals,count,kernelVar,errVar)  
   
447          end          end
448    
449        (* generates the globals buffers and arguments function *)        (* generates the globals buffers and arguments function *)
# Line 523  Line 520 
520                            ]                            ]
521                          else let                          else let
522                                  val index = CL.mkBinOp(CL.mkBinOp(CL.mkVar "x",CL.#*,CL.mkVar "width"),CL.#+,CL.mkVar "y")                                  val index = CL.mkBinOp(CL.mkBinOp(CL.mkVar "x",CL.#*,CL.mkVar "width"),CL.#+,CL.mkVar "y")
523                                  in                        in [
524                                          [CL.mkAssign(CL.mkVar inState, CL.mkSubscript(CL.mkVar "selfIn",index)),                          CL.mkAssign(CL.mkVar inState, CL.mkSubscript(CL.mkVar "selfIn",index)),
525                                           CL.mkAssign(CL.mkVar outState,CL.mkSubscript(CL.mkVar "selfOut",index))]                          CL.mkAssign(CL.mkVar outState,CL.mkSubscript(CL.mkVar "selfOut",index))
526                                  end                        ] end
527                val status = CL.mkDecl(CL.intTy, "status", SOME(CL.I_Exp(CL.mkInt(0, CL.intTy))))                val status = CL.mkDecl(CL.intTy, "status", SOME(CL.I_Exp(CL.mkInt(0, CL.intTy))))
528                val local_vars =  thread_ids @ initKernelGlobals(!globals,!imgGlobals)  @ strandDecl @ strandObjects @ [status]                val local_vars =  thread_ids @ initKernelGlobals(!globals,!imgGlobals)  @ strandDecl @ strandObjects @ [status]
529                val while_exp = CL.mkBinOp(CL.mkBinOp(CL.mkVar "status",CL.#!=, CL.mkVar RN.kStabilize),CL.#||,CL.mkBinOp(CL.mkVar "status", CL.#!=, CL.mkVar RN.kDie))                val while_exp = CL.mkBinOp(
530                        CL.mkBinOp(CL.mkVar "status",CL.#!=, CL.mkVar RN.kStabilize),
531                        CL.#||,
532                        CL.mkBinOp(CL.mkVar "status", CL.#!=, CL.mkVar RN.kDie))
533                val whileBody = CL.mkBlock [                val whileBody = CL.mkBlock [
534                        CL.mkAssign(CL.mkVar "status",                        CL.mkAssign(CL.mkVar "status",
535                          CL.mkApply(RN.strandUpdate name,                          CL.mkApply(RN.strandUpdate name,

Legend:
Removed from v.1308  
changed lines
  Added in v.1309

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