(no commit message)
authorlkcl <lkcl@web>
Thu, 20 Apr 2023 15:16:51 +0000 (16:16 +0100)
committerIkiWiki <ikiwiki.info>
Thu, 20 Apr 2023 15:16:51 +0000 (16:16 +0100)
openpower/sv/normal.mdwn

index f74154f3f56d6c3f5ac755a31963c9c58d5279de..e913b1253ca587d29c7fa7b090fe1cefef1c504f 100644 (file)
@@ -34,11 +34,12 @@ the following Modes apply to Arithmetic and Logical SVP64 operations:
   is performed. See [[svp64/appendix]].
   Note that there are comprehensive caveats when using this mode,
   and it should not be confused with the Parallel Reduction [[sv/remap]].
+  Also care is needed with `hphint`.
 
 Note that ffirst and reduce modes are not anticipated to be
 high-performance in some implementations.  ffirst due to interactions
-with VL, and reduce due to it requiring additional operations to produce
-a result.  simple and saturate are however inter-element
+with VL, and reduce due to it creating overlapping operations in
+many of its uses.  simple and saturate are however inter-element
 independent and may easily be parallelised to give high performance,
 regardless of the value of VL.
 
@@ -146,6 +147,15 @@ be parallelised.
 Dependency chain as long as Sequential Program Execution Order is preserved.
 Easy examples include Reduction on Logical OR or AND operations.*
 
+**Horizontal Parallelism Hint**
+
+`SVSTATE.hphint` declares to hardware that groups of elements up to this
+size are 100% independent.  With Reduction literally creating Dependency
+Hazards on every element-level sub-instruction it is pretty clear that setting
+`hphint` *at all* would cause data corruption.  However `sv.add *r0, *r4, *r0`
+for example clearly leaves room for four parallel elements. Programmers must
+be aware of this and exercise caution.
+
 ## Data-dependent Fail-on-first
 
 Data-dependent fail-on-first is CR-field-driven and is completely separate