1 # RFC ls009 SVP64 REMAP instructions
5 * <https://libre-soc.org/openpower/sv/>
6 * <https://libre-soc.org/openpower/sv/rfc/ls009/>
7 * <https://bugs.libre-soc.org/show_bug.cgi?id=1040>
8 * <https://git.openpower.foundation/isa/PowerISA/issues/87>
20 **Books and Section affected**:
23 Book I, new Zero-Overhead-Loop Chapter.
24 Appendix E Power ISA sorted by opcode
25 Appendix F Power ISA sorted by version
26 Appendix G Power ISA sorted by Compliancy Subset
27 Appendix H Power ISA sorted by mnemonic
33 svremap - Re-Mapping of Register Element Offsets
34 svindex - General-purpose setting of SHAPEs to be re-mapped
35 svshape - Hardware-level setting of SHAPEs for element re-mapping
36 svshape2 - Hardware-level setting of SHAPEs for element re-mapping (v2)
39 **Submitter**: Luke Leighton (Libre-SOC)
41 **Requester**: Libre-SOC
43 **Impact on processor**:
46 Addition of four new "Zero-Overhead-Loop-Control" DSP-style Vector-style
47 Management Instructions which provide advanced features such as Matrix
48 FFT DCT Hardware-Assist Schedules and general-purpose Index reordering.
51 **Impact on software**:
54 Requires support for new instructions in assembler, debuggers,
61 Cray Supercomputing, Vectorisation, Zero-Overhead-Loop-Control (ZOLC),
62 Scalable Vectors, Multi-Issue Out-of-Order, Sequential Programming Model,
63 Digital Signal Processing (DSP)
68 These REMAP Management instructions provide state-of-the-art advanced capabilities
69 to dramatically decrease instruction count and power reduction whilst retaining
70 unprecedented general-purpose capability and a standard Sequential Execution Model.
72 **Notes and Observations**:
78 Add the following entries to:
80 * the Appendices of Book I
81 * Instructions of Book I as a new Section
82 * TODO-Form of Book I Section 1.6.1.6 and 1.6.2
88 # svstep: Vertical-First Stepping and status reporting
92 * svstep RT,SVi,vf (Rc=0)
93 * svstep. RT,SVi,vf (Rc=1)
95 | 0-5|6-10|11.15|16..22| 23-25 | 26-30 |31| Form |
96 |----|----|-----|------|----------|-------|--|--------- |
97 |PO | RT | / | SVi | / / vf | XO |Rc| SVL-Form |
102 if SVi[3:4] = 0b11 then
103 # store pack and unpack in SVSTATE
104 SVSTATE[53] <- SVi[5]
105 SVSTATE[54] <- SVi[6]
106 RT <- [0]*62 || SVSTATE[53:54]
108 # Vertical-First explicit stepping.
109 step <- SVSTATE_NEXT(SVi, vf)
113 Special Registers Altered:
131 Add the following to Book I, 1.6.1, SVI-Form
134 |0 |6 |11 |16 |21 |23 |24|25|26 31|
135 | PO | SVG|rmm | SVd |ew |SVyx|mm|sk| XO |
138 Add the following to Book I, 1.6.1, SVM-Form
141 |0 |6 |11 |16 |21 |25 |26 |31 |
142 | PO | SVxd | SVyd | SVzd | SVrm |vf | XO |
145 Add the following to Book I, 1.6.1, SVM2-Form
149 |0 |6 |10 |11 |16 |21 |24|25 |26 |31 |
150 | PO | SVo |SVyx| rmm | SVd |XO |mm|sk | XO |
153 Add the following to Book I, 1.6.1, SVRM-Form
157 |0 |6 |11 |13 |15 |17 |19 |21 |22 |26 |31 |
158 | PO | SVme |mi0 | mi1 | mi2 | mo0 | mo1 |pst |/// | XO |
161 * Add `SVI, SVM, SVM2, SVRM` to `XO (26:31)` Field in Book I, 1.6.2
163 Add the following to Book I, 1.6.2
167 Field used in REMAP to select the SVSHAPE for 1st input register
170 Field used in REMAP to select the SVSHAPE for 2nd input register
173 Field used in REMAP to select the SVSHAPE for 3rd input register
176 Field used to specify the meaning of the rmm field for SVI-Form
180 Field used in REMAP to select the SVSHAPE for 1st output register
183 Field used in REMAP to select the SVSHAPE for 2nd output register
186 Field used in REMAP to indicate "persistence" mode (REMAP
187 continues to apply to multiple instructions)
190 REMAP Mode field for SVI-Form and SVM2-Form
193 Field used to specify dimensional skipping in svindex
196 Immediate field used to specify the size of the REMAP dimension
197 in the svindex and svshape2 instructions
200 Immediate field used to specify a 9-bit signed
201 two's complement integer which is concatenated
202 on the right with 0b00 and sign-extended to 64 bits.
205 Field used to specify a GPR to be used as a
209 Simple-V immediate field for setting VL or MVL
212 Simple-V "REMAP" map-enable bits (0-4)
215 Field used by the svshape2 instruction as an offset
218 Simple-V "REMAP" Mode
221 Simple-V "REMAP" x-dimension size
224 Simple-V "REMAP" y-dimension size
227 Simple-V "REMAP" z-dimension size
233 Appendix E Power ISA sorted by opcode
234 Appendix F Power ISA sorted by version
235 Appendix G Power ISA sorted by Compliancy Subset
236 Appendix H Power ISA sorted by mnemonic
238 | Form | Book | Page | Version | mnemonic | Description |
239 |------|------|------|---------|----------|-------------|
240 | SVRM | I | # | 3.0B | svremap | REMAP enabling instruction |