(no commit message)
authorlkcl <lkcl@web>
Sat, 19 Dec 2020 18:13:28 +0000 (18:13 +0000)
committerIkiWiki <ikiwiki.info>
Sat, 19 Dec 2020 18:13:28 +0000 (18:13 +0000)
openpower/sv/svp_rewrite/svp64/discussion.mdwn

index adeaf3fd22cd42f591b94fb8eac451519d8168d1..78352cf216817665cfe6d4d5eca7e24a9ab86247 100644 (file)
@@ -129,7 +129,7 @@ If there are spare bits it would be very good to look at using some of them to s
 
 1. limited to single predicated dual src operations (add RT, RA, RB) and to triple source operations where one of the inputs is set to a scalar (these are rare)
 2. limited to operations that make sense.  divide is excluded, as is subtract.  sane operations: multiply, add, logical bitwise OR, CR operations.  operations that do not return the same register type are also excluded (isel, cmp)
-3. the destination is a vector but the result is stored, ultimately, in the first nonzero predicated element.  all other nonzero predicated elements are undefined. 
+3. the destination is a vector but the result is stored, ultimately, in the first nonzero predicated element.  all other nonzero predicated elements are undefined. *this includes the CR vector* when Rc=1
 4. implementations may use any ordering and any algorithm to reduce down to a single result.  However it must be equivalent to a straight application of mapreduce.  The destination vector (except masked out elements) may be used for storing any intermediate results. these may be left in the vector (undefined).
 5. CRM applies when Rc=1.  When CRM is zero, the CR associated with the result is regarded as a "some results met standard CR result criteria". When CRM is one, this changes to "all results met standard CR criteria".
 6. implementations MAY use destoffs as well as srcoffs (see [[sv/sprs]]) in order to store sufficient state to resume operation should an interrupt occur. this is also why implementations are permitted to use the destination vector to store intermediary computations