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

SCM Repository

[diderot] Diff of /branches/charisee_dev/src/compiler/high-to-mid/ProbeEin.sml
ViewVC logotype

Diff of /branches/charisee_dev/src/compiler/high-to-mid/ProbeEin.sml

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

revision 3441, Wed Nov 18 00:24:04 2015 UTC revision 3443, Thu Nov 19 23:24:18 2015 UTC
# Line 40  Line 40 
40      *)      *)
41    
42      val testing=0      val testing=0
43      val testlift=1  
44      val detflag =true  
45      val fieldliftflag=true  
46      val valnumflag=true      val valnumflag=true
47        val tsplitvar=false
48        val fieldliftflag=false
49        val constflag=false
50        val detflag =false
51        val detsumflag=false
52    
53    
54      val cnt = ref 0      val cnt = ref 0
# Line 223  Line 228 
228              code@[einapp]              code@[einapp]
229          end          end
230    
231      val tsplitvar=true  
232      fun createEinApp(originalb,alpha,index,freshIndex,dim,dx,sx)= let      fun createEinApp(originalb,alpha,index,freshIndex,dim,dx,sx)= let
233          val Pid=0          val Pid=0
234          val tid=1          val tid=1
# Line 435  Line 440 
440      *)      *)
441     fun expandEinOp( e as (y, DstIL.EINAPP(ein,args)),fieldset)=let     fun expandEinOp( e as (y, DstIL.EINAPP(ein,args)),fieldset)=let
442    
443          fun checkConst ([],a) =      fun checkConst(es,a)=(case constflag
444            of true => liftProbe a
445            | _ => let
446                fun fConst ([],a) =
447              (case fieldliftflag              (case fieldliftflag
448                  of true => liftProbe a                  of true => liftProbe a
449                  | _ => replaceProbe a                  | _ => replaceProbe a
450              (*end case*))              (*end case*))
451          | checkConst ((E.C _::_),a) = replaceProbe a              | fConst ((E.C _::_),a) = replaceProbe a
452          | checkConst ((_ ::es),a)= checkConst(es,a)              | fConst ((_ ::es),a)= checkConst(es,a)
453          fun rewriteBody b=(case (detflag,b)              in fConst(es,a) end
454              of (true,E.Probe(E.Conv(_,[E.C _ ,E.V 0],_,[]),pos))        (* end case*))
455    
456    
457    
458        fun rewriteBodyB b=(case b
459            of  (E.Probe(E.Conv(_,_,_,[]),_))
460                => replaceProbe(0,e,b,[])
461            | (E.Probe(E.Conv (_,alpha,_,dx),_))
462                => checkConst(dx,(0,e,b,[])) (*scans dx for contant*)
463            | (E.Sum(sx,p as E.Probe(E.Conv(_,_,_,[]),_)))
464                => replaceProbe(0,e,p, sx)  (*no dx*)
465            | (E.Sum(sx,p as E.Probe(E.Conv(_,[],_,dx),_)))
466                => checkConst(dx,(0,e,p,sx)) (*scalar field*)
467            | (E.Sum(sx,E.Probe p))
468                => replaceProbe(0,e,E.Probe p, sx)
469            | (E.Sum(sx,E.Opn(E.Prod,[eps,E.Probe p])))
470                => replaceProbe(0,e,E.Probe p,sx)
471            | _ => [e]
472            (* end case *))
473    
474    
475            fun rewriteBody b=(case detflag
476                of true => (case (detsumflag,b)
477                    of (_,E.Probe(E.Conv(_,[E.C _ ,E.V 0],_,[]),pos))
478                  => liftFieldMat (1,e)                  => liftFieldMat (1,e)
479              | (true,E.Probe(E.Conv(_,[E.C _ ,E.V 0],_,[E.V 1]),pos))                  | (_,E.Probe(E.Conv(_,[E.C _ ,E.V 0],_,[E.V 1]),pos))
480                  => liftFieldMat (2,e)                  => liftFieldMat (2,e)
481              | (true,E.Probe(E.Conv(_,[E.C _ ,E.V 0],_,[E.V 1,E.V 2] ),pos))                  | (_,E.Probe(E.Conv(_,[E.C _ ,E.V 0],_,[E.V 1,E.V 2] ),pos))
482                  => liftFieldMat (3,e)                  => liftFieldMat (3,e)
483              | (true, E.Sum([(E.V 0,0,_)],E.Probe(E.Conv(_,[E.V 0 ,E.V 0],_,[]),pos)))              | (true, E.Sum([(E.V 0,0,_)],E.Probe(E.Conv(_,[E.V 0 ,E.V 0],_,[]),pos)))
484                  => liftFieldSum e                  => liftFieldSum e
# Line 463  Line 494 
494                  => liftFieldVec (2,e,fieldset)                  => liftFieldVec (2,e,fieldset)
495              | (true,E.Probe(E.Conv(_,[E.C _],_,[E.V 0,E.V 1,E.V 2] ),pos))              | (true,E.Probe(E.Conv(_,[E.C _],_,[E.V 0,E.V 1,E.V 2] ),pos))
496                  => liftFieldVec (3,e,fieldset)                  => liftFieldVec (3,e,fieldset)
497              | (_,E.Probe(E.Conv(_,_,_,[]),_))                  | _   => rewriteBodyB b
498                  => replaceProbe(0,e,b,[])                  (* end case *))
499              | (_,E.Probe(E.Conv (_,alpha,_,dx),_))              | _   => rewriteBodyB b
                 => checkConst(dx,(0,e,b,[])) (*scans dx for contant*)  
             | (_,E.Sum(sx,p as E.Probe(E.Conv(_,_,_,[]),_)))  
                 => replaceProbe(0,e,p, sx)  (*no dx*)  
             | (_,E.Sum(sx,p as E.Probe(E.Conv(_,[],_,dx),_)))  
                 => checkConst(dx,(0,e,p,sx)) (*scalar field*)  
             | (_,E.Sum(sx,E.Probe p))  
                 => replaceProbe(0,e,E.Probe p, sx)  
             | (_, E.Sum(sx,E.Opn(E.Prod,[eps,E.Probe p])))  
                 => replaceProbe(0,e,E.Probe p,sx)  
             | (_,_) => [e]  
500              (* end case *))              (* end case *))
501    
502          val (fieldset,var) = (case valnumflag          val (fieldset,var) = (case valnumflag

Legend:
Removed from v.3441  
changed lines
  Added in v.3443

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