'isa/svfparith' : 'Floating Point pseudocode',
'isa/svfixedarith' : 'Fixed Point pseudocode',
'openpower/isa/branch' : 'Branch pseudocode',
+ 'openpower/transcendentals' : 'Transcendentals',
}
if link in lookups:
out.write(" found %s\n" % lookups[link])
increase using "tagging" (similar to how x86 originally extended
registers from 32 to 64 bit).
-![Single-Issue concept](/openpower/svp64-primer/img/power_pipelines.svg)
+![Single-Issue concept](/openpower/svp64-primer/img/power_pipelines.svg){ width=40% height=20% }
## SV
* Once the loop is completed *only then* is the Program Counter
allowed to move to the next instruction.
-![Multi-Issue with Predicated SIMD back-end ALUs](/openpower/svp64-primer/img/sv_multi_issue.svg)
+![Multi-Issue with Predicated SIMD back-end ALUs](/openpower/svp64-primer/img/sv_multi_issue.svg){ width=40% height=40% }
Hardware (and simulator) implementors are free and clear to implement this
as literally a for-loop, sitting in between instruction decode and issue.
"register" but that from that location onwards the elements *overlap
subsequent registers*.
-![image](/openpower/svp64-primer/img/svp64_regs.svg){ width=40% }
+![image](/openpower/svp64-primer/img/svp64_regs.svg){ width=40% height=40% }
Here is another way to view the same concept, bearing in mind that it
is assumed a LE memory order:
# Vertical-First Mode
+![image](/openpower/sv/sv_horizontal_vs_vertical.svg){ width=40% height=40% }
+
This is a relatively new addition to SVP64 under development as of
July 2021. Where Horizontal-First is the standard Cray-style for-loop,
Vertical-First typically executes just the **one** scalar element
beq loop
```
-![image](/openpower/sv/sv_horizontal_vs_vertical.svg)
-
Three examples are illustrated of different types of Scalar-Vector
operations. Note that in its simplest form **only one** element is
executed per instruction **not** multiple elements per instruction.