1 <!-- This defines instructions described in PowerISA Version 3.0 B Book 1 -->
3 <!-- This defines instructions that store from a register to RAM -->
5 <!-- Note that these pages also define equivalent load instructions, -->
6 <!-- these are described in fixedload.mdwn -->
8 <!-- Section 3.3.3 Fixed-Point Store Instructions pages 54 - 57 -->
9 <!-- Section 3.3.3.1 64-bit Fixed-Point Store Instructions page 57 -->
10 <!-- Section 3.3.4 Fixed Point Load and Store Quadword Instructions pages 58 - 59 -->
11 <!-- Section 3.3.5 Fixed-Point Load and Store with Byte Reversal Instructions page 60 -->
12 <!-- Section 3.3.5.1 64-Bit Load and Store with Byte Reversal Instructions page 61 -->
13 <!-- Section 3.3.6 Fixed-Point Load and Store Multiple Instructions page 62 -->
15 <!-- Section 3.3.3 Fixed-Point Store Instructions pages 54 - 57 -->
27 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
31 Let the effective address (EA) be the sum (RA|0)+ D.
32 RS[56:63] are stored into the byte in storage addressed
35 Special Registers Altered:
49 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
51 Special Registers Altered:
55 # Store Byte with Update
64 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
67 Special Registers Altered:
71 # Store Byte with Update Indexed
80 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
83 Special Registers Altered:
97 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
99 Special Registers Altered:
103 # Store Halfword Indexed
113 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
115 Special Registers Altered:
119 # Store Halfword with Update
128 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
131 Special Registers Altered:
135 # Store Halfword with Update Indexed
144 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
147 Special Registers Altered:
161 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
163 Special Registers Altered:
177 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
179 Special Registers Altered:
183 # Store Word with Update
192 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
195 Special Registers Altered:
199 # Store Word with Update Indexed
208 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
211 Special Registers Altered:
217 <!-- Section 3.3.3.1 64-bit Fixed-Point Store Instructions page 57 -->
228 EA <- b + EXTS(DS || 0b00)
231 Special Registers Altered:
235 # Store Doubleword Indexed
247 Special Registers Altered:
251 # Store Doubleword with Update
259 EA <- (RA) + EXTS(DS || 0b00)
263 Special Registers Altered:
267 # Store Doubleword with Update Indexed
279 Special Registers Altered:
284 <!-- Section 3.3.4 Fixed Point Load and Store Quadword Instructions pages 58 - 59 -->
286 <!-- For stq, the contents of an even-odd pair of GPRs is stored into the quadword -->
287 <!-- in storage addressed by EA as follows. In Big-Endian mode, the even-numbered -->
288 <!-- GPR is stored into the doubleword in storage addressed by EA and the -->
289 <!-- odd-numbered GPR is stored into the doubleword addressed by EA+8. In -->
290 <!-- Little-Endian mode, the even-numbered GPR is stored byte-reversed into the -->
291 <!-- doubleword in storage addressed by EA+8 and the odd-numbered GPR is stored -->
292 <!-- byte-reversed into the doubleword addressed by EA. -->
304 EA <- b + EXTS(DS || 0b00)
307 Special Registers Altered:
311 <!-- Section 3.3.5 Fixed-Point Load and Store with Byte Reversal Instructions page 60 -->
313 # Store Halfword Byte-Reverse Indexed
323 MEM(EA, 2) <- (RS) [56:63] || (RS)[48:55]
325 Special Registers Altered:
329 # Store Word Byte-Reverse Indexed
339 MEM(EA, 4) <- ((RS)[56:63] || (RS)[48:55] || (RS)[40:47]
342 Special Registers Altered:
346 <!-- Section 3.3.5.1 64-Bit Load and Store with Byte Reversal Instructions page 61 -->
348 # Store Doubleword Byte-Reverse Indexed
358 MEM(EA, 8) <- ((RS) [56:63] || (RS)[48:55]
359 || (RS)[40:47] || (RS)[32:39]
360 || (RS)[24:31] || (RS)[16:23]
361 || (RS)[8:15] || (RS)[0:7])
363 Special Registers Altered:
368 <!-- Section 3.3.6 Fixed-Point Load and Store Multiple Instructions page 62 -->
370 # Store Multiple Word
382 MEM(EA, 4) <- GPR(r)[32:63]
386 Special Registers Altered:
390 <!-- Checked March 2021 -->