(no commit message)
authorlkcl <lkcl@web>
Wed, 30 Mar 2022 11:11:56 +0000 (12:11 +0100)
committerIkiWiki <ikiwiki.info>
Wed, 30 Mar 2022 11:11:56 +0000 (12:11 +0100)
openpower/sv/cr_int_predication.mdwn

index 6bf8bd0fb3ba207f001704b423b84183f77e333c..be69b803c7e357c763ba3c61222a508d4d4e6e3e 100644 (file)
@@ -14,9 +14,11 @@ See:
 
 Rationale:
 
-Condition Registers are conceptually perfect for use as predicate masks, the only problem being that typical Vector ISAs have quite comprehensive mask-based instructions: set-before-first, popcount and much more.  In fact many Vector ISAs can use Vectors *as* masks, consequently the entire Vector ISA is available for use in creating masks.  This is not practical for SV given the premise to minimise adding of instructions.
+Condition Registers are conceptually perfect for use as predicate masks, the only problem being that typical Vector ISAs have quite comprehensive mask-based instructions: set-before-first, popcount and much more.  In fact many Vector ISAs can use Vectors *as* masks, consequently the entire Vector ISA is available for use in creating masks.  This is not practical for SV given the strategy of leveraging Scalar instructions in a minimalist way.
 
-With the scalar OpenPOWER v3.0B ISA having already popcnt, cntlz and others normally seen in Vector Mask operations it makes sense to allow *both* scalar integers *and* CR-Vectors to be predicate masks.  That in turn means that much more comprehensive interaction between CRs and scalar Integers is required.
+With the scalar OpenPOWER v3.0B ISA having already popcnt, cntlz and others normally seen in Vector Mask operations it makes sense to allow *both* scalar integers *and* CR-Vectors to be predicate masks.  That in turn means that much more comprehensive interaction between CRs and scalar Integers is required, because with the CR Predication Modes designating CR *Fields*
+(not CR bits) as Predicate Elements, fast transfers between CR *Fields* and
+the Integer Register File is needed. 
 
 The opportunity is therefore taken to also augment CR logical arithmetic as well, using a mask-based paradigm that takes into consideration multiple bits of each CR (eq/lt/gt/ov).  By contrast
 v3.0B Scalar CR instructions (crand, crxor) only allow a single bit calculation.