|0:5 |6:11 | 12:17 | 18:20 | 21:23 |24:27 |28:29 |30:31| Mode |
|----- |----- | ------- | ------- | ------ |------|------ |---- | ----- |
-|xdimsz|ydimsz| zdimsz | permute | invxyz |offset|skip |mode |Matrix |
+|xdimsz|ydimsz| zdimsz | permute | invxyz |offset|skip |0b00 |Matrix |
|xdimsz|ydimsz|SVGPR | 11/ |sk1/invxy|offset|elwidth|0b00 |Indexed|
|xdimsz|mode | zdimsz | submode2| invxyz |offset|submode|0b01 |DCT/FFT|
| rsvd |rsvd |xdimsz | rsvd | invxyz |offset|submode|0b10 |Red/Sum|
| | | | | | | |0b11 |rsvd |
-`mode` sets different behaviours (straight matrix multiply, FFT, DCT).
+`mode` (combined with `permute` when `mode=0b00`) sets different
+general behaviours: straight matrix multiply, FFT, DCT, Reduction or Prefix-Sum.
-* **mode=0b00** sets straight Matrix Mode
-* **mode=0b00** with permute=0b110 or 0b111 sets Indexed Mode
+* **mode=0b00** with `permute != 0b110/0b111` sets straight Matrix Mode
+* **mode=0b00** with `permute = 0b110/0b111` sets Indexed Mode
* **mode=0b01** sets "FFT/DCT" mode and activates submodes
* **mode=0b10** sets "Parallel Reduction or Prefix-Sum" Schedules.
*Architectural Resource Allocation note: the four SVSHAPE SPRs are best
allocated sequentially and contiguously in order that `sv.mtspr` may
-be used. This is safe to do as long as `SVSTATE.SVme=0`*
+be used to manipulate (save/restore) them.
+This is safe to do directly as long as `SVSTATE.SVme=0`*
## Parallel Reduction / Prefix-Sum Mode