whitespace
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 22 Apr 2023 11:03:15 +0000 (12:03 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 22 Apr 2023 11:03:15 +0000 (12:03 +0100)
openpower/sv/vector_ops.mdwn

index 67d95d4df20321619aff964b3f168ec178f47e84..e12e7e669eb4fcdbe70032d66d13f9320cd153d9 100644 (file)
@@ -15,20 +15,25 @@ Links:
   contains pseudocode for sof, sif, sbf
 * <https://en.m.wikipedia.org/wiki/X86_Bit_manipulation_instruction_set#TBM_(Trailing_Bit_Manipulation)>
 
-The core Power ISA was designed as scalar: SV provides a level of abstraction to add variable-length element-independent parallelism.
-Therefore there are not that many cases where *actual* Vector
-instructions are needed. If they are, they are more "assistance"
-functions.  Two traditional Vector instructions were initially
-considered (conflictd and vmiota) however they may be synthesised
-from existing SVP64 instructions: vmiota may use [[svstep]].
-Details in [[discussion]]
+The core Power ISA was designed as scalar: SV provides a level of
+abstraction to add variable-length element-independent parallelism.
+Therefore there are not that many cases where *actual* Vector instructions
+are needed. If they are, they are more "assistance" functions.  Two
+traditional Vector instructions were initially considered (conflictd and
+vmiota) however they may be synthesised from existing SVP64 instructions:
+vmiota may use [[svstep]].  Details in [[discussion]]
 
 Notes:
 
-* Instructions suited to 3D GPU workloads (dotproduct, crossproduct, normalise) are out of scope: this document is for more general-purpose instructions that underpin and are critical to general-purpose Vector workloads (including GPU and VPU)
-* Instructions related to the adaptation of CRs for use as predicate masks are covered separately, by crweird operations.  See [[sv/cr_int_predication]].
+* Instructions suited to 3D GPU workloads (dotproduct, crossproduct,
+  normalise) are out of scope: this document is for more general-purpose
+  instructions that underpin and are critical to general-purpose Vector
+  workloads (including GPU and VPU)
+* Instructions related to the adaptation of CRs for use as
+  predicate masks are covered separately, by crweird operations.
+  See [[sv/cr_int_predication]].
 
-# Mask-suited Bitmanipulation
+## Mask-suited Bitmanipulation
 
 Based on RVV masked set-before-first, set-after-first etc.
 and Intel and AMD Bitmanip instructions made generalised then
@@ -67,7 +72,7 @@ Executable pseudocode demo:
 [[!inline pages="openpower/sv/bmask.py" quick="yes" raw="yes" ]]
 ```
 
-# Carry-lookahead
+## Carry-lookahead
 
 As a single scalar 32-bit instruction, up to 64 carry-propagation bits
 may be computed.  When the output is then used as a Predicate mask it can
@@ -79,9 +84,11 @@ be used to selectively perform the "add carry" of biginteger math, with
 
 pseudocode:
 
+```
     P = (RA)
     G = (RB)
     RT = ((P|G)+G)^P 
+```
 
 X-Form