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


Ignore:
Timestamp:
May 28, 2007 8:19:35 AM (8 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{{{