Changes between Version 5 and Version 6 of DataParallel/Vectorisation/TypeVectorisation
 Timestamp:
 May 28, 2007 8:19:35 AM (9 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

DataParallel/Vectorisation/TypeVectorisation
v5 v6 13 13 Double#^ = UArr Double 14 14 <and so on for other unboxed types> 15 t^ = PArr t 15 t^ = PArr t* 16 16 }}} 17 17 … … 21 21 22 22 TODO: 23 * Be careful that ` t1* >> t2*` includes `PArr t1` and `PArr t2*`; so, we can only use thatif 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. 24 24 25 25 The 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: 26 26 {{{ 27 T* = T_V , if T_V exists28 = T , otherwise29 a* = a_v30 (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*27 T* = T_V , if T_V exists 28 = T , otherwise 29 a* = 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* 35 35 }}} 36 The transformation of function types includes both the change from `(>)` to `(:>)` as well as 36 We 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 37 39 38 40 {{{