1 # LD/ST-Update-PostIncrement
3 TODO (key stub notes below)
5 * <https://bugs.libre-soc.org/show_bug.cgi?id=1048>
7 The following instructions are proposed to be added in EXT2xx,
8 duplicating LD/ST-Update functionality but moving the update
9 of RA to *after* the Memory operation. These types of
10 instructions are already present in x86 (sort-of).
12 * x86 chose that store should be pre-indexed and load should be post-indexed
13 * Power ISA chose everything to be pre-indexed
15 <https://azeria-labs.com/memory-instructions-load-and-store-part-4/>
20 lbzup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
21 lbzupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
22 lhzup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
23 lhzupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
24 lhaup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
25 lhaupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
26 lwzup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
27 lwzupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
28 lwaupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
29 ldup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
30 ldupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
31 stbup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
32 stbupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
33 sthup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
34 sthupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
35 stwup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
36 stwupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
37 stdup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
38 stdupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
39 # FP LD/ST-Postincrement
40 lfdu, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
41 lfsu, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
42 lfdux, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
43 lsdux, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
44 stfdu, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
45 stfsu, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
46 stfdux, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
47 stfsux, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
52 ** Load Byte and Zero with Post-Update**
62 RT <- ([0] * (XLEN-8)) || MEM(EA, 1)
66 Special Registers Altered:
72 where the same pseudocode for `lbzu` is:
76 RT <- ([0] * (XLEN-8)) || MEM(EA, 1)