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

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/tree-il/low-to-tree-fn.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/tree-il/low-to-tree-fn.sml

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

revision 2670, Wed Jul 9 21:54:54 2014 UTC revision 2671, Fri Jul 18 18:57:06 2014 UTC
# Line 19  Line 19 
19      val isHwVec :  int -> bool      val isHwVec :  int -> bool
20      val isVecTy :  int -> bool      val isVecTy :  int -> bool
21   val getPieces :   int -> int list   val getPieces :   int -> int list
22     val getVecTy :   int -> bool * int *int list
23    
24    end) : sig    end) : sig
25    
# Line 307  Line 308 
308                  end                  end
309    
310    
           val isHwVec=Target.isHwVec  
           val getPieces= Target.getPieces  
           val isVecTy= Target.isVecTy  
   
         (*foundVec: Found low-IL vector*)  
          fun foundVec(lhs,rator,n,argsS, argsV)= let  
   
             (*Looks for next largest length supported*)  
             fun fillVec vn =(case (isVecTy vn)  
                 of true => (true,vn,[vn])  
                 | false => fillVec(vn+1))  
             val (aligned,newSize,Pieces)= (case (isVecTy n)  
                 of true=> (false,n,[n])  
                 | false=>(case isHwVec n  
                     of false=> (false,n,(getPieces n))  
                     | true=> fillVec (n+1)  
                     (*end case*))  
                 (*end case*))  
             val _=(case testing  
                 of 1=>(print(String.concat["\n ***********\n ",DstOp.toString(rator n) ,"\n \t =>"]);1)  
                 | _=>1)  
             in  
                 LowOpToTreeOp.creatLd(lhs,rator,newSize,n,Pieces,argsS,argsV,aligned)  
             end  
   
   
311          (* force an argument to be stored in something that will be mapped to an l-value *)          (* force an argument to be stored in something that will be mapped to an l-value *)
312            fun bindVar (env, x) = (case useVar env x            fun bindVar (env, x) = (case useVar env x
313                   of x' as Dst.E_State _ => (env, x', [])                   of x' as Dst.E_State _ => (env, x', [])
# Line 377  Line 352 
352                      (*Target.isHwVec*)                      (*Target.isHwVec*)
353                  val args'=List.map (useVar env) args                  val args'=List.map (useVar env) args
354                  val (env, t) = doLHS()                  val (env, t) = doLHS()
355    
356                    fun foundVec(lhs,rator,n,argsS, argsV)= let
357                        val (isFill,newSize,Pieces)=Target.getVecTy n
358                        in
359                            LowOpToTreeOp.vecToTree(lhs,rator,newSize,n,Pieces,argsS,argsV,isFill)
360                        end
361                  in (case rator                  in (case rator
362                       of SrcOp.addVec n   => (env, foundVec(t,DstOp.addVec,n,[],args'))                       of SrcOp.addVec n   => (env, foundVec(t,DstOp.addVec,n,[],args'))
363                       | SrcOp.subVec n    => (env, foundVec(t,DstOp.subVec,n,[],args'))                       | SrcOp.subVec n    => (env, foundVec(t,DstOp.subVec,n,[],args'))
# Line 391  Line 372 
372                              else assignExp (env, exp)                              else assignExp (env, exp)
373                          end                          end
374                      (*end case*))                      (*end case*))
   
375                   end                   end
376    
377                  (*                  (*

Legend:
Removed from v.2670  
changed lines
  Added in v.2671

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