1 <!-- This defines DRAFT instructions described in SV -->
3 <!-- This defines instructions that store from a register to RAM -->
4 <!-- Effective Address is always RA, and the usual EA is stored late in RA -->
6 <!-- https://bugs.libre-soc.org/show_bug.cgi?id=1055 -->
7 <!-- https://libre-soc.org/openpower/sv/rfc/ls004/ -->
9 # Store Byte with Post-Update Indexed
17 EA <- (RA) + (RB)<<(SH+1)
19 MEM(ea, 1) <- (RS)[XLEN-8:XLEN-1]
24 Let the effective address (EA) be the sum of the contents of
25 register RB shifted by (SH+1), and the contents of register RA.
27 (RS)[56:63] are stored into the byte in storage addressed by EA.
29 EA is placed into register RA.
31 If RA=0, the instruction form is invalid.
33 Special Registers Altered:
37 # Store Halfword with Post-Update Indexed
45 EA <- (RA) + (RB)<<(SH+1)
47 MEM(ea, 2) <- (RS)[XLEN-16:XLEN-1]
52 Let the effective address (EA) be the sum of the contents of
53 register RB shifted by (SH+1), and the contents of register RA.
55 (RS)[56:63] are stored into the byte in storage addressed by EA.
57 EA is placed into register RA.
59 If RA=0, the instruction form is invalid
61 Special Registers Altered:
65 # Store Word with Post-Update Indexed
73 EA <- (RA) + (RB)<<(SH+1)
75 MEM(ea, 4) <- (RS)[XLEN-32:XLEN-1]
80 Let the effective address (EA) be the sum of the contents of
81 register RB shifted by (SH+1), and the contents of register RA.
83 (RS)[32:63] are stored into the word in storage addressed by RA.
85 EA is placed into register RA.
87 If RA=0, the instruction form is invalid.
89 Special Registers Altered:
93 # Store Doubleword with Post-Update Indexed
108 Let the effective address (EA) be the sum (RA)+ (RB).
110 (RS) is stored into the doubleword in storage addressed by RA.
112 EA is placed into register RA.
114 If RA=0, the instruction form is invalid.
116 Special Registers Altered: