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 -->
17 # Store Byte Shifted Indexed
26 EA <- b + (RB) << (SH+1)
27 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
31 Let the effective address (EA) be the sum of the contents of
32 register RB shifted by (SH+1) and (RA|0).
33 RS [56:63] are stored into the byte in storage addressed by EA.
35 Special Registers Altered:
39 # Store Byte Shifted with Update Indexed
47 EA <- (RA) + (RB) << (SH+1)
48 MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
53 Let the effective address (EA) be the sum of the contents of
54 register RB shifted by (SH+1) and (RA).
55 RS[56:63] are stored into the byte in storage addressed
58 EA is placed into register RA.
60 If RA=0, the instruction form is invalid.
62 Special Registers Altered:
66 # Store Halfword Shifted Indexed
75 EA <- b + (RB) << (SH+1)
76 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
80 Let the effective address (EA) be the sum of the contents of
81 register RB shifted by (SH+1) and (RA|0).
82 RS[48:63] are stored into the halfword in
83 storage addressed by EA.
85 Special Registers Altered:
89 # Store Halfword Shifted with Update Indexed
97 EA <- (RA) + (RB) << (SH+1)
98 MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
103 Let the effective address (EA) be the sum of the contents of
104 register RB shifted by (SH+1) and (RB).
105 RS[48:63] are stored into the halfword in storage
108 EA is placed into register RA.
110 If RA=0, the instruction form is invalid.
112 Special Registers Altered:
116 # Store Word Shifted Indexed
125 EA <- b + (RB) << (SH+1)
126 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
130 Let the effective address (EA) be the sum of the contents of
131 register RB shifted by (SH+1) and (RA|0).
132 RS[32:63] are stored into the word in storage
135 Special Registers Altered:
139 # Store Word Shifted with Update Indexed
147 EA <- (RA) + (RB) << (SH+1)
148 MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
153 Let the effective address (EA) be the sum of the contents of
154 register RB shifted by (SH+1) and (RB).
155 RS[32:63] are stored into the word in storage addressed
158 EA is placed into register RA.
160 If RA=0, the instruction form is invalid.
162 Special Registers Altered:
168 <!-- Section 3.3.3.1 64-bit Fixed-Point Store Instructions page 57 -->
170 # Store Doubleword Shifted Indexed
179 EA <- b + (RB) << (SH+1)
184 Let the effective address (EA) be the sum of the contents of
185 register RB shifted by (SH+1) and (RA|0).
186 (RS) is stored into the doubleword in
187 storage addressed by EA.
189 Special Registers Altered:
193 # Store Doubleword Shifted with Update Indexed
201 EA <- (RA) + (RB) << (SH+1)
207 Let the effective address (EA) be the sum (RA)+ (RB).
208 (RS) is stored into the doubleword in storage
211 EA is placed into register RA.
213 If RA=0, the instruction form is invalid.
215 Special Registers Altered:
220 <!-- Section 3.3.5 Fixed-Point Load and Store with Byte Reversal Instructions page 60 -->
222 # Store Halfword Byte-Reverse Shifted Indexed
226 * sthbrsx RS,RA,RB,SH
231 EA <- b + (RB) << (SH+1)
232 MEM(EA, 2) <- (RS) [56:63] || (RS)[48:55]
236 Let the effective address (EA) be the sum
237 (RA|0)+ (RB). (RS)56:63 are stored into bits 0:7 of the
238 halfword in storage addressed by EA. (RS) 48:55 are
239 stored into bits 8:15 of the halfword in storage
242 Special Registers Altered:
246 # Store Word Byte-Reverse Shifted Indexed
250 * stwbrsx RS,RA,RB,SH
255 EA <- b + (RB) << (SH+1)
256 MEM(EA, 4) <- ((RS)[56:63] || (RS)[48:55] || (RS)[40:47]
261 Let the effective address (EA) be the sum
262 (RA|0)+ (RB). (RS)[56:63] are stored into bits 0:7 of the
263 word in storage addressed by EA. (RS) [48:55] are stored
264 into bits 8:15 of the word in storage addressed by EA.
265 (RS)[40:47] are stored into bits 16:23 of the word in stor-
266 age addressed by EA. (RS) [32:39] are stored into bits
267 24:31 of the word in storage addressed by EA.
269 Special Registers Altered:
273 <!-- Section 3.3.5.1 64-Bit Load and Store with Byte Reversal Instructions page 61 -->
275 # Store Doubleword Byte-Reverse Shifted Indexed
279 * stdbrsx RS,RA,RB,SH
284 EA <- b + (RB) << (SH+1)
285 MEM(EA, 8) <- ((RS) [56:63] || (RS)[48:55]
286 || (RS)[40:47] || (RS)[32:39]
287 || (RS)[24:31] || (RS)[16:23]
288 || (RS)[8:15] || (RS)[0:7])
292 Let the effective address (EA) be the sum
293 (RA|0)+ (RB). (RS)[56:63] are stored into bits 0:7 of the
294 doubleword in storage addressed by EA. (RS) [48:55] are
295 stored into bits 8:15 of the doubleword in storage
296 addressed by EA. (RS) [40:47] are stored into bits 16:23 of
297 the doubleword in storage addressed by EA. (RS) [32:39]
298 are stored into bits 23:31 of the doubleword in storage
299 addressed by EA. (RS) [24:31] are stored into bits 32:39 of
300 the doubleword in storage addressed by EA. (RS) [16:23]
301 are stored into bits 40:47 of the doubleword in storage
302 addressed by EA. (RS)[8:15] are stored into bits 48:55 of
303 the doubleword in storage addressed by EA. (RS) [0:7]
304 are stored into bits 56:63 of the doubleword in storage
307 Special Registers Altered:
311 <!-- Checked March 2021 -->