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]
53 Let the effective address (EA) be the sum
54 (RA|0)+ (RB). RS [56:63] are stored into the byte in stor-
57 Special Registers Altered:
61 # Store Byte with Update
70 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
75 Let the effective address (EA) be the sum (RA)+ D.
76 RS[56:63] are stored into the byte in storage addressed
79 EA is placed into register RA.
81 If RA=0, the instruction form is invalid.
83 Special Registers Altered:
87 # Store Byte with Update Indexed
96 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
101 Let the effective address (EA) be the sum (RA)+ (RB).
102 RS[56:63] are stored into the byte in storage addressed
105 EA is placed into register RA.
107 If RA=0, the instruction form is invalid.
109 Special Registers Altered:
123 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
127 Let the effective address (EA) be the sum (RA|0)+ D.
128 RS[48:63] are stored into the halfword in storage
131 Special Registers Altered:
135 # Store Halfword Indexed
145 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
149 Let the effective address (EA) be the sum
150 (RA|0)+ (RB). RS[48:63] are stored into the halfword in
151 storage addressed by EA.
153 Special Registers Altered:
157 # Store Halfword with Update
166 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
171 Let the effective address (EA) be the sum (RA)+ D.
172 RS[48:63] are stored into the halfword in storage
175 EA is placed into register RA.
177 If RA=0, the instruction form is invalid.
179 Special Registers Altered:
183 # Store Halfword with Update Indexed
192 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
197 Let the effective address (EA) be the sum (RA)+ (RB).
198 RS[48:63] are stored into the halfword in storage
201 EA is placed into register RA.
203 If RA=0, the instruction form is invalid.
205 Special Registers Altered:
219 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
223 Let the effective address (EA) be the sum (RA|0)+ D.
224 RS[32:63] are stored into the word in storage addressed
227 Special Registers Altered:
241 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
245 Let the effective address (EA) be the sum
246 (RA|0)+ (RB). RS[32:63] are stored into the word in stor-
249 Special Registers Altered:
253 # Store Word with Update
262 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
265 Special Registers Altered:
269 # Store Word with Update Indexed
278 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
281 Special Registers Altered:
287 <!-- Section 3.3.3.1 64-bit Fixed-Point Store Instructions page 57 -->
298 EA <- b + EXTS(DS || 0b00)
301 Special Registers Altered:
305 # Store Doubleword Indexed
317 Special Registers Altered:
321 # Store Doubleword with Update
329 EA <- (RA) + EXTS(DS || 0b00)
333 Special Registers Altered:
337 # Store Doubleword with Update Indexed
349 Special Registers Altered:
354 <!-- Section 3.3.4 Fixed Point Load and Store Quadword Instructions pages 58 - 59 -->
356 <!-- For stq, the contents of an even-odd pair of GPRs is stored into the quadword -->
357 <!-- in storage addressed by EA as follows. In Big-Endian mode, the even-numbered -->
358 <!-- GPR is stored into the doubleword in storage addressed by EA and the -->
359 <!-- odd-numbered GPR is stored into the doubleword addressed by EA+8. In -->
360 <!-- Little-Endian mode, the even-numbered GPR is stored byte-reversed into the -->
361 <!-- doubleword in storage addressed by EA+8 and the odd-numbered GPR is stored -->
362 <!-- byte-reversed into the doubleword addressed by EA. -->
374 EA <- b + EXTS(DS || 0b00)
377 Special Registers Altered:
381 <!-- Section 3.3.5 Fixed-Point Load and Store with Byte Reversal Instructions page 60 -->
383 # Store Halfword Byte-Reverse Indexed
393 MEM(EA, 2) <- (RS) [56:63] || (RS)[48:55]
395 Special Registers Altered:
399 # Store Word Byte-Reverse Indexed
409 MEM(EA, 4) <- ((RS)[56:63] || (RS)[48:55] || (RS)[40:47]
412 Special Registers Altered:
416 <!-- Section 3.3.5.1 64-Bit Load and Store with Byte Reversal Instructions page 61 -->
418 # Store Doubleword Byte-Reverse Indexed
428 MEM(EA, 8) <- ((RS) [56:63] || (RS)[48:55]
429 || (RS)[40:47] || (RS)[32:39]
430 || (RS)[24:31] || (RS)[16:23]
431 || (RS)[8:15] || (RS)[0:7])
433 Special Registers Altered:
438 <!-- Section 3.3.6 Fixed-Point Load and Store Multiple Instructions page 62 -->
440 # Store Multiple Word
452 MEM(EA, 4) <- GPR(r)[32:63]
456 Special Registers Altered:
460 <!-- Checked March 2021 -->