Changes between Version 5 and Version 6 of DataParallel/Vectorisation/TypeVectorisation


Ignore:
Timestamp:
May 28, 2007 8:19:35 AM (7 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DataParallel/Vectorisation/TypeVectorisation

    v5 v6  
    1313Double#^ = UArr Double 
    1414<and so on for other unboxed types> 
    15 t^       = PArr t 
     15t^       = PArr t* 
    1616}}} 
    1717 
     
    2121 
    2222TODO: 
    23  * Be careful that `t1* ->> t2*` includes `PArr t1` and `PArr t2*`; so, we can only use that if we have `PA` instances for these types. 
     23 * Be careful that `VFun (t1* -> t2*)` and `t1* -> t2*` includes `PArr t1` and `PArr t2*`; so, we can only use them if we have `PA` instances for these types. 
    2424 
    2525The type transformation rules achieve two goals: (1) they replace original type constructors and variables by their vectorised variants, where those are available, and (2) they alter the representation of functions: 
    2626{{{ 
    27 T*            = T_V  , if T_V exists 
    28               = T    , otherwise 
    29 a*            = a_v 
    30 (t1 -> t2)*   = (t1* -> t2*) :*:  , if kindOf t1 == # 
    31                 (t1^ -> t2^)        or kindOf t2 == # 
    32               = t1 ?? 
    33 (t1 t2)*      = t1* t2* 
    34 (forall a.t)* = forall a_v.t* 
     27T*                   = T_V  , if T_V exists 
     28                     = T    , otherwise 
     29a*                   = a_v 
     30(t1 -> t2)* 
     31 | isUbxFun (t1->t2) = (t1* -> t2*) :|| (t1^ -> t2^) 
     32 | otherwise         = t1* :-> t2* 
     33(t1 t2)*             = t1* t2* 
     34(forall a.t)*        = forall a_v.t* 
    3535}}} 
    36 The transformation of function types includes both the change from `(->)` to `(:->)` as well as  
     36We need to distinguish between saturated function space applications involving unboxed types and those that don't, as we need to remain to be compatible with `(->_v) = (:->)`. 
     37 
     38 
    3739 
    3840{{{