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

SCM Repository

[diderot] Diff of /branches/vis12-cl/src/compiler/c-util/tree-to-c.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/c-util/tree-to-c.sml

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

revision 2029, Thu Oct 11 12:03:24 2012 UTC revision 2033, Fri Oct 12 03:05:33 2012 UTC
# Line 572  Line 572 
572                              ]))))                              ]))))
573                        ] end)                        ] end)
574  *)  *)
575                      | IL.S_LoadNrrd(lhs, Ty.DynSeqTy ty, nrrd) => let
576                          val lhs = VarToC.lvalueVar (env, lhs)
577                          val (nDims, dimInit, dimExp, elemTy) = (case ty
578                                 of Ty.TensorTy(dims as _::_) => let
579                                      val nDims = List.length dims
580                                      fun lp (_, [], init) = CL.I_Array(List.rev init)
581                                        | lp (i, d::dd, init) =
582                                            lp(i+1, dd, (i, CL.I_Exp(CL.mkInt(IntInf.fromInt d)))::init)
583                                      val dimInit = CL.mkDecl(
584                                            CL.T_Ptr(CL.T_Named "unsigned int"), "_dims",
585                                            SOME(lp(0, dims, [])))
586                                      in
587                                        (nDims, [dimInit], CL.mkVar "_dims", Ty.TensorTy[])
588                                      end
589                                  | Ty.SeqTy ty' => raise Fail "type not supported yet"
590                                  | _ => (0, [], CL.mkInt 0, ty)
591                                (* end case *))
592                          val loadFn = N.loadDynSeqFromFile elemTy
593                          in [CL.mkBlock (
594                            dimInit @
595                            [CL.mkAssign(
596                              lhs,
597                              CL.E_Apply(loadFn, [
598                                  CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),
599                                  CL.mkStr nrrd,
600                                  CL.mkInt(IntInf.fromInt nDims),
601                                  dimExp
602                                ]))]
603                          )] end
604                    | IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) => checkSts (fn sts => let                    | IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) => checkSts (fn sts => let
605                        val lhs = VarToC.lvalueVar (env, lhs)                        val lhs = VarToC.lvalueVar (env, lhs)
606                        val name = CL.E_Str nrrd                        val name = CL.E_Str nrrd
# Line 582  Line 611 
611                          CL.mkDecl(                          CL.mkDecl(
612                            CL.T_Named N.statusTy, sts,                            CL.T_Named N.statusTy, sts,
613                            SOME(CL.I_Exp(CL.E_Apply(loadFn, [                            SOME(CL.I_Exp(CL.E_Apply(loadFn, [
                               CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),  
                               name, addrOf lhs  
                             ]))))  
                       ] end)  
                   | IL.S_LoadNrrd(lhs, Ty.DynSeqTy ty, nrrd) => checkSts (fn sts => let  
                       val lhs = VarToC.lvalueVar (env, lhs)  
                       val name = CL.E_Str nrrd  
                       val loadFn = N.loadDynSeqFromFile ty  
                       in [  
 (* FIXME: missing runtime support and need to handle the element dimensions *)  
                         CL.mkDecl(  
                           CL.T_Named N.statusTy, sts,  
                           SOME(CL.I_Exp(CL.E_Apply(loadFn, [  
614                                CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),                                CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),
615                                name, addrOf lhs                                name, addrOf lhs
616                              ]))))                              ]))))

Legend:
Removed from v.2029  
changed lines
  Added in v.2033

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