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

SCM Repository

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

Diff of /branches/charisee_dev/src/compiler/c-util/tree-to-c-fn.sml

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

revision 3343, Thu Oct 22 14:15:20 2015 UTC revision 3344, Fri Oct 23 04:38:49 2015 UTC
# Line 94  Line 94 
94            (* end case *))            (* end case *))
95    
96      (*creates global var if it's not a vector type*)      (*creates global var if it's not a vector type*)
97     fun prntType ty = (case ty
98        of  Ty.TensorTy[]=> !N.gRealTy
99        | Ty.TensorTy[1]=> !N.gRealTy
100        | Ty.TensorTy [t] =>  CLang.T_Named(N.LocalTy [t])
101        | Ty.SeqTy(Ty.TensorTy[3], 3) => let    (*added for evecs 3x3*)
102            in CL.T_Array(CLang.T_Named(N.LocalTy [4]), SOME 4)
103            end
104        | Ty.SeqTy(Ty.TensorTy[2], 2) => let    (*added for evecs 2x2*)
105            in
106            CL.T_Array(CLang.T_Named(N.LocalTy [2]), SOME 2)
107            end
108        | _ => trType ty
109        (* end case *))
110    
111    
112     (*creates global var if it's not a vector type*)
113      fun localType(ty,isVecTy) = (case ty      fun localType(ty,isVecTy) = (case ty
114            of (* _ =>CLang.T_Named "localtype"*)            of (* _ =>CLang.T_Named "localtype"*)
115                  Ty.TensorTy[]=> !N.gRealTy                  Ty.TensorTy[]=> !N.gRealTy
# Line 446  Line 462 
462                  (stms, s::fmt, args)                  (stms, s::fmt, args)
463              | mkFmt (ty, exp, (stms, fmt, args)) = let              | mkFmt (ty, exp, (stms, fmt, args)) = let
464                  fun mk (f, e) = (stms, f::fmt, e::args)                  fun mk (f, e) = (stms, f::fmt, e::args)
465                    val _ =print"mkfmt"
466                  in                  in
467                    case ty                    case ty
468                     of Ty.BoolTy => mk(                     of Ty.BoolTy => mk(
# Line 455  Line 472 
472                      | Ty.IntTy => mk(!N.gIntFormat, trExp(env, exp))                      | Ty.IntTy => mk(!N.gIntFormat, trExp(env, exp))
473                      | Ty.TensorTy[] => mk("%f", trExp(env, exp))                      | Ty.TensorTy[] => mk("%f", trExp(env, exp))
474                      | Ty.TensorTy[n] => let                      | Ty.TensorTy[n] => let
475                          val (x, stm) = expToVar (env, trType ty, "vec", exp)                          val _ =print"found type"
476                            val (x, stm) = expToVar (env, prntType  ty, "vec", exp)
477                          val elems = List.tabulate (n, fn i => vecIndex (x, n, i))                          val elems = List.tabulate (n, fn i => vecIndex (x, n, i))
478                          val (fmt, args) = mkSeqFmt (Ty.TensorTy[], elems, fmt, args)                          val (fmt, args) = mkSeqFmt (Ty.TensorTy[], elems, fmt, args)
479                          in                          in
# Line 628  Line 646 
646                        ])]                        ])]
647                        end                        end
648                       *)                       *)
649              | ([], Op.Print tys, args) => trPrint (env, tys, args)                        | ([], Op.Print tys, args) => (print("\n\n**OPPRINT"^IL.toString(IL.E_Op(rator, args))); trPrint (env, tys, args))
650              | _ => raise Fail "bogus multi-assignment"              | _ => raise Fail "bogus multi-assignment"
651            (* end case *))            (* end case *))
652        | trMultiAssign (env, lhs, rhs) = raise Fail "bogus multi-assignment"        | trMultiAssign (env, lhs, rhs) = raise Fail "bogus multi-assignment"
# Line 672  Line 690 
690                    | IL.E_State x => VarToC.lvalueStateVar x                    | IL.E_State x => VarToC.lvalueStateVar x
691                    | _ => raise Fail "NonVar in exp"                    | _ => raise Fail "NonVar in exp"
692                  (* end case *))                  (* end case *))
693            fun trStmt (env, stm) = (case stm            fun trStmt (env, stm) = (print ("\nHI****"^(IL.toStringS stm));(case stm
694                   of IL.S_Comment text => [CL.mkComment text]                   of IL.S_Comment text => [CL.mkComment text]
695                    | IL.S_Assign([x],IL.E_Mux(A,isFill, oSize,splitTy,[a]))=> ("from S.S_assign MUX";trAssign (env,VarToC.lvalueVar (env, x),a))                    | IL.S_Assign([x],IL.E_Mux(A,isFill, oSize,splitTy,[a]))=> (print("from S.S_assign MUX");trAssign (env,VarToC.lvalueVar (env, x),a))
696                    | IL.S_Assign([x], exp) =>                    | IL.S_Assign([x], exp) =>
697                          ("from S.S_assign exp";(trAssign (env, VarToC.lvalueVar (env, x) , exp)))                          (print"from S.S_assign exp";(trAssign (env, VarToC.lvalueVar (env, x) , exp)))
698                    | IL.S_Assign(xs, exp) =>(trMultiAssign (env, List.map (fn x => VarToC.lvalueVar (env, x)) xs, exp))                    | IL.S_Assign(xs, exp) =>(trMultiAssign (env, List.map (fn x => VarToC.lvalueVar (env, x)) xs, exp))
699                    | IL.S_IfThen(cond, thenBlk) =>[CL.mkIfThen(trExp(env, cond), trBlk(env, thenBlk,isVecTy))]                    | IL.S_IfThen(cond, thenBlk) =>[CL.mkIfThen(trExp(env, cond), trBlk(env, thenBlk,isVecTy))]
700                    | IL.S_IfThenElse(cond, thenBlk, elseBlk) =>                    | IL.S_IfThenElse(cond, thenBlk, elseBlk) =>
# Line 687  Line 705 
705                    | IL.S_Copy( IL.E_State  x,exp,_,1)=> ("from S.S_assign copy_1";trAssign (env, VarToC.lvalueStateVar x, exp))                    | IL.S_Copy( IL.E_State  x,exp,_,1)=> ("from S.S_assign copy_1";trAssign (env, VarToC.lvalueStateVar x, exp))
706                    | IL.S_Copy(x,exp,offset,n)=>                    | IL.S_Copy(x,exp,offset,n)=>
707                          [CL.S_Exp (CL.mkApply(N.NameCopyTensor [n],[getVar x,trExp(env,exp),CL.mkIntTy(IntInf.fromInt offset, !N.gIntTy)]))]                          [CL.S_Exp (CL.mkApply(N.NameCopyTensor [n],[getVar x,trExp(env,exp),CL.mkIntTy(IntInf.fromInt offset, !N.gIntTy)]))]
708                    | IL.S_Save([x],exp) => ("from S.save exp";(trAssign (env, VarToC.lvalueStateVar x, exp)))                    | IL.S_Save([x],exp) => (print"from S.save exp";(trAssign (env, VarToC.lvalueStateVar x, exp)))
709                    | IL.S_Save(xs, exp) =>                    | IL.S_Save(xs, exp) =>
710                        trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp)                        trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp)
711                    | IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) =>                    | IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) =>
# Line 719  Line 737 
737                    | IL.S_StoreVec(v,offset,A, isFill, orig, ty,Ty.vectorLength pieces,args)=>                    | IL.S_StoreVec(v,offset,A, isFill, orig, ty,Ty.vectorLength pieces,args)=>
738                        storeVec(stm,env,getVar v,offset,A, isFill,orig,pieces,dumpStore args)                        storeVec(stm,env,getVar v,offset,A, isFill,orig,pieces,dumpStore args)
739                    | IL.S_Cons(x,n,args)=>  [CL.S_Exp (CL.mkApply(N.NameConsArray n, [VarToC.lvalueVar (env, x)]@trExps(env, args)))]                    | IL.S_Cons(x,n,args)=>  [CL.S_Exp (CL.mkApply(N.NameConsArray n, [VarToC.lvalueVar (env, x)]@trExps(env, args)))]
740                  (* end case *))                  (* end case *)))
741            in            in
742              List.foldr (fn (stm, stms) => trStmt(env, stm)@stms) [] stms              List.foldr (fn (stm, stms) => trStmt(env, stm)@stms) [] stms
743            end            end

Legend:
Removed from v.3343  
changed lines
  Added in v.3344

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